[jira] [Created] (FLINK-32455) Breaking change in TypeSerializerUpgradeTestBase prevents flink-connector-kafka from building against 1.18-SNAPSHOT

2023-06-27 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-32455:
---

 Summary: Breaking change in TypeSerializerUpgradeTestBase prevents 
flink-connector-kafka from building against 1.18-SNAPSHOT
 Key: FLINK-32455
 URL: https://issues.apache.org/jira/browse/FLINK-32455
 Project: Flink
  Issue Type: Sub-task
  Components: Connectors / Kafka, Test Infrastructure
Affects Versions: 1.18.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: 1.18.0


FLINK-27518 introduced a breaking signature change to the abstract class 
{{TypeSerializerUpgradeTestBase}}, specifically the abstract 
{{createTestSpecifications}} method signature was changed. This breaks 
downstream test code in externalized connector repos, e.g. 
flink-connector-kafka's {{KafkaSerializerUpgradeTest}}

Moreover, {{fink-migration-test-utils}} needs to be transitively pulled in by 
downstream test code that depends on flink-core test-jar.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (FLINK-32453) flink-connector-kafka does not build against Flink 1.18-SNAPSHOT

2023-06-27 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-32453:
---

 Summary: flink-connector-kafka does not build against Flink 
1.18-SNAPSHOT
 Key: FLINK-32453
 URL: https://issues.apache.org/jira/browse/FLINK-32453
 Project: Flink
  Issue Type: Bug
  Components: Connectors / Kafka
Affects Versions: 1.18.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: 1.18.0


There are a few breaking changes in test utility code that prevents 
{{apache/flink-connector-kafka}} from building against Flink 1.18-SNAPSHOT. 
This umbrella ticket captures all breaking changes, and should only be closed 
once we make things build again.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (FLINK-31740) Allow setting boundedness for upsert-kafka SQL connector

2023-04-05 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-31740:
---

 Summary: Allow setting boundedness for upsert-kafka SQL connector
 Key: FLINK-31740
 URL: https://issues.apache.org/jira/browse/FLINK-31740
 Project: Flink
  Issue Type: New Feature
  Components: Connectors / Kafka
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


With FLINK-24456, we added boundedness options for streaming mode to the SQL 
Kafka Connector. This was mostly just an exposure of existing functionality 
that was already available at the DataStream API level.

We should do the same for the SQL Upsert Kafka Connector.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (FLINK-23853) Update StateFun's Flink dependency to 1.13.2

2021-08-18 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23853:
---

 Summary: Update StateFun's Flink dependency to 1.13.2
 Key: FLINK-23853
 URL: https://issues.apache.org/jira/browse/FLINK-23853
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.1.0






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23762) Revisit RequestReplyFunctionTest unit tests

2021-08-13 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23762:
---

 Summary: Revisit RequestReplyFunctionTest unit tests
 Key: FLINK-23762
 URL: https://issues.apache.org/jira/browse/FLINK-23762
 Project: Flink
  Issue Type: Technical Debt
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


There's some tech debt piling up in the {{RequestReplyFunctionTest}}. We need 
to revisit how we're unit testing the {{RequestReplyFunction}}.

Some outstanding issues:
* We're explicitly calling `invoke` with async results to simulate function 
responses. With changes in FLINK-20574, that's no longer always the case (the 
first request is a blocking call). This hints the fact that those unit tests 
are leaking implementation detail and thus making them hard to extend.
* State restore is not properly mocked, which becomes apparent in 
{{retryBatchOnUnkownAsyncResponseAfterRestore}}. The states "batch" and 
"requestState" starts again from fresh in that test. To properly simulate a 
snapshot and restore, we probably want to move all persisted state of 
{{RequestReplyFunction}}, including "batch", "requestState", and the remote 
function values, all into a separate wrapper class.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23718) Manage StateFun Python SDK as a Maven module

2021-08-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23718:
---

 Summary: Manage StateFun Python SDK as a Maven module
 Key: FLINK-23718
 URL: https://issues.apache.org/jira/browse/FLINK-23718
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


As of now, the StateFun Python SDK lives as a "dangling" directory in the 
repository that is not managed by Maven. We'd like include the directory as a 
Maven module. To start things simple, we can have the Maven POM do nothing - 
the purpose is just so that the directory is included in the build process 
(e.g. for ASF license checks on the source files).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23717) Allow setting configs using plain strings in StatefulFunctionsAppContainers

2021-08-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23717:
---

 Summary: Allow setting configs using plain strings in 
StatefulFunctionsAppContainers
 Key: FLINK-23717
 URL: https://issues.apache.org/jira/browse/FLINK-23717
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The {{StatefulFunctionsAppContainers}} has a {{withConfiguration(ConfigOption, 
value)}} method that allows setting Flink configurations.

While this is useful, having to include external dependencies (most of the 
time, core) just to get access to the ConfigOption is often too much. It would 
be nice if the utility supports setting configs using plain strings as well.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23714) Expose both master and worker logs when using StatefulFunctionsAppContainers

2021-08-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23714:
---

 Summary: Expose both master and worker logs when using 
StatefulFunctionsAppContainers
 Key: FLINK-23714
 URL: https://issues.apache.org/jira/browse/FLINK-23714
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


We currently only support exposing master logs when using the 
{{StatefulFunctionsAppContainers}} E2E test utility. A lot of the times, the 
worker logs are also insightful, e.g. checking logs of state restore operations.

Lets extend the {{exposeMasterLogs(Logger)}} method to simply be 
{{exposeLogs(Logger)}} which exposes both the master and worker logs.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23709) Remove SanityVerificationE2E and ExactlyOnceRemoteE2E

2021-08-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23709:
---

 Summary: Remove SanityVerificationE2E and ExactlyOnceRemoteE2E
 Key: FLINK-23709
 URL: https://issues.apache.org/jira/browse/FLINK-23709
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Over time, the smoke E2E tests have proven to be extensive enough to subsume 
the {{SanityVerificationE2E}} and {{ExactlyOnceRemoteE2E}}, which are far less 
covering in terms of test scope. As a matter of fact, a large majority (if not 
all) if the more important bugs we have discovered over the last few releases 
were surfaced by the smoke E2Es.

As the build times are growing larger and larger in StateFun, we suggest to 
remove {{SanityVerificationE2E}} and {{ExactlyOnceRemoteE2E}} to be 
conservative on the build times.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23600) Rework StateFun's remote module parsing and binding

2021-08-03 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23600:
---

 Summary: Rework StateFun's remote module parsing and binding
 Key: FLINK-23600
 URL: https://issues.apache.org/jira/browse/FLINK-23600
 Project: Flink
  Issue Type: New Feature
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Currently, we have a {{JsonModule}} class that is responsible for parsing 
user's module YAML specifications, resolving the specification into application 
components (i.e. function providers, ingresses, routers, and egresses) that is 
then bound to the application universe.

Over time, the {{JsonModule}} class has overgrown with several changes as we 
progressively adapted the YAML format.
* The class handles ALL kinds of components, including ingresses / functions / 
egresses etc. The code is extremely fragile and becoming hard to extend.
* Users have no access to extend this class, if they somehow need to plugin 
custom components (e.g. adding an unsupported ingress / egress, custom protocol 
implementations etc).

We aim to rework this with the following goals in mind:
# The system should only handle {{module.yaml}} parsing up to the point where 
it extracts a list of JSON objects that individually represent an application 
component.
# The system has no knowledge of what each JSON objects contains, other than 
its {{TypeName}} which would map to a corresponding {{ComponentBinder}}.
# A {{ComponentBinder}} is essentially an extension bound to the system that 
knows how to parse a specific JSON object, and bind components to the 
application universe.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23296) Add RequestReplyClientFactory as a pluggable extension

2021-07-07 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23296:
---

 Summary: Add RequestReplyClientFactory as a pluggable extension
 Key: FLINK-23296
 URL: https://issues.apache.org/jira/browse/FLINK-23296
 Project: Flink
  Issue Type: Sub-task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.1.0


Currently, we ship and always use by default a {{RequestReplyClient}} 
implementation based on OkHttp. We'd like to allow users to use their own 
implementations of the {{RequestReplyClient}} for remote invocations. This is 
strictly for extending the means of transport, and should not leave room to 
touch the invocation protocol.

The way this would look like in the module YAML files for remote modules would 
be:

{code}
module:
spec:
endpoints:
- endpoint:
   meta:
   kind: http
   spec:
   functions: com.foo.bar/*
   urlPathTemplate: 
http://bar.foo.com:8080/functions/{function.name}
   transport:
   extension: com.foo.bar/some.custom.client
   prop1: foobar
   prop2:
   - k: v
   - k2: v2
   
{code}

The important part is the transport section. If not specified, then the default 
OkHttp implementation will be used. Otherwise, if specified, an extension with 
the specified typename must be bound and exist in the application, and that 
extension needs to be a {{RequestReplyClientFactory}}:

{code}
interface RequestReplyClientFactory {
RequestReplyClient create(JSONNode properties, URI endpointUrl);
}
{code}

The provided JSON node properties will be as is provided in the {{transport}} 
block of the module YAML endpoint specification.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23295) Introduce extension module SPI to StateFun

2021-07-07 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23295:
---

 Summary: Introduce extension module SPI to StateFun
 Key: FLINK-23295
 URL: https://issues.apache.org/jira/browse/FLINK-23295
 Project: Flink
  Issue Type: Sub-task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.1.0


To support pluggable extensions, e.g. custom HTTP clients for remote 
invocation, we'd like to add a generic way for users to provide their own 
implementations of various pluggable components.

This will take the form of {{ExtensionModule}}s, where a user that is providing 
an extension implements such a module to be included into the StateFun app. 
Each {{ExtensionModule}} may bind multiple extensions identified by unique 
typenames. Other components of the application, such as functions and IO 
modules, may access these extensions through their typenames.

The SPI would likely look like this:
{code}
public interface ExtensionModule {
void configure(Map globalConfiguration, Binder binder);

interface Binder {
 void bindExtension(TypeName typeName, T extension);
}
}
{code} 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-23293) Support pluggable / extendable HTTP transport for StateFun remote invocations

2021-07-07 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-23293:
---

 Summary: Support pluggable / extendable HTTP transport for 
StateFun remote invocations
 Key: FLINK-23293
 URL: https://issues.apache.org/jira/browse/FLINK-23293
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.1.0


For some of our advanced users, it is required for them to use their own HTTP 
client implementations for remote function invocations.

Towards that end, we'd like to support a generic way to plugin custom 
implementations, with the HTTP client being one of the initially supported 
extensions.

This includes a few separate sub-tasks that will be added under this ticket.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-22529) StateFun Kinesis ingresses should support configs that are available via FlinkKinesisConsumer's ConsumerConfigConstants

2021-04-29 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-22529:
---

 Summary: StateFun Kinesis ingresses should support configs that 
are available via FlinkKinesisConsumer's ConsumerConfigConstants
 Key: FLINK-22529
 URL: https://issues.apache.org/jira/browse/FLINK-22529
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai


The Kinesis ingress should support the configs that are available in 
{{FlinkKinesisConsumer}}'s {{ConsumerConfigConstants}}. Instead, currently, all 
property keys provided to the Kinesis ingress are assumed to be AWS-client 
related keys, and therefore have all been appended with the `aws.clientconfigs` 
string.

I'd suggest to avoid mixing the {{ConsumerConfigConstants}} configs within the 
properties as well. Having named methods on the {{KinesisIngressBuilder}} for 
those configuration would provide a cleaner solution.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-22023) Remove outdated StateFun quickstart archetype

2021-03-30 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-22023:
---

 Summary: Remove outdated StateFun quickstart archetype
 Key: FLINK-22023
 URL: https://issues.apache.org/jira/browse/FLINK-22023
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


The StateFun Maven quickstart archetype should be removed, because it is 
outdated (only works for embedded functions).

We can add a quickstart archetype for Java remote SDKs in the future.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21904) parseJmJvmArgsAndExportLogs: command not found warning when starting StateFun

2021-03-21 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21904:
---

 Summary: parseJmJvmArgsAndExportLogs: command not found warning 
when starting StateFun
 Key: FLINK-21904
 URL: https://issues.apache.org/jira/browse/FLINK-21904
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Affects Versions: statefun-2.2.2
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


I'm seeing this warning in E2E logs:
{code}
11:37:12,572 ERROR 
org.apache.flink.statefun.e2e.remote.ExactlyOnceWithRemoteFnE2E  - 
/opt/flink/bin/standalone-job.sh: line 43: parseJmJvmArgsAndExportLogs: command 
not found
{code}

This was caused by FLINK-19662, which renamed {{parseJmJvmArgsAndExportLogs}} 
to {{parseJmArgsAndExportLogs}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21901) Update StateFun version to 3.0-SNAPSHOT

2021-03-21 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21901:
---

 Summary: Update StateFun version to 3.0-SNAPSHOT
 Key: FLINK-21901
 URL: https://issues.apache.org/jira/browse/FLINK-21901
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


Our version is still on 2.3-SNAPSHOT in the main repository, since directly 
jumping to 3.0-SNAPSHOT was something that was decided during the development 
cycle.

To prepare for the upcoming release, we should update the main branch to 
3.0-SNAPSHOT already.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21865) Add a Docker Compose greeter example to StateFun playgrounds

2021-03-18 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21865:
---

 Summary: Add a Docker Compose greeter example to StateFun 
playgrounds
 Key: FLINK-21865
 URL: https://issues.apache.org/jira/browse/FLINK-21865
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


This example is intended as a follow-up after completion of the Java SDK 
Showcase Tutorial (FLINK-21862).

If users are already familiar with the Java SDK fundamentals and would like to 
get a better understanding of how a realistic StateFun application looks like, 
then this would be the example they start with. Otherwise, we would recommend 
users to take a look at the Showcase tutorial first.

This example works with Docker Compose, and runs a few services that build up 
an end-to-end StateFun application:
- Functions service that runs functions and expose them through an HTTP 
endpoint.
- StateFun runtime processes (a manager plus workers) that will handle ingress, 
egress, and inter-function messages as well as function state storage in a 
consistent and fault-tolerant manner.
- Apache Kafka broker for the application ingress and egress.

To motivate this example, we'll implement a simple user greeter application, 
which has two functions - a {{UserFn}} that expects {{UserLogin}} JSON events 
from an ingress and keeps in state storage information about users, and a 
{{GreetingsFn}} that accepts user information to generate personalized greeting 
messages that are sent to users via an egress.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21862) Add a Java SDK showcase tutorial to StateFun playground

2021-03-18 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21862:
---

 Summary: Add a Java SDK showcase tutorial to StateFun playground
 Key: FLINK-21862
 URL: https://issues.apache.org/jira/browse/FLINK-21862
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


This goal of the showcase project is intended for new StateFun users that would 
like to start implementing their StateFun application functions using Java (or 
any other JVM language).

The tutorial should be streamlined and split into a few parts which we 
recommend to go through a specific order.

Each part can demonstrate with some code snippets plus Javadocs and comments to 
guide new users through the SDK fundamentals.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21705) Add a SliceType to the StateFun Java SDK

2021-03-09 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21705:
---

 Summary: Add a SliceType to the StateFun Java SDK
 Key: FLINK-21705
 URL: https://issues.apache.org/jira/browse/FLINK-21705
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


A {{SliceType}} is a type that simply treats the value as raw bytes. The 
serializer implementation simply forwards the bytes as is, without any copying. 
Since slices are immutable, the type is considered immutable.

This type can come in handy if users would like to avoid serialization / 
deserialization in certain scenarios, e.g. sending state values as a message to 
another function.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21678) Rename Expiration.expiresAfterReadOrWrite to Expiration.expiresAfterCall in StateFun

2021-03-08 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21678:
---

 Summary: Rename Expiration.expiresAfterReadOrWrite to 
Expiration.expiresAfterCall in StateFun
 Key: FLINK-21678
 URL: https://issues.apache.org/jira/browse/FLINK-21678
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


For remote functions in StateFun, a managed remote state with Flink expiration 
settings {{expireAfterReadAndWrite}} actually means that a value's TTL timer 
will always be refreshed when attempting to invoke the function. This is 
because invoking a remote function always entails reading the state from the 
state backends (as defined by the request reply protocol).

To avoid any confusion for users, we've decided to rename this expiration 
configuration as {{expireAfterCall}} for remote functions.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21676) Ensure that state names are valid identifiers in the StateFun Java SDK

2021-03-08 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21676:
---

 Summary: Ensure that state names are valid identifiers in the 
StateFun Java SDK
 Key: FLINK-21676
 URL: https://issues.apache.org/jira/browse/FLINK-21676
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


While the Java SDK only access state via state name strings, other SDKs, like 
the Python SDK, may access state as properties on the storage instance.

To ensure that users can properly access previous state after swapping 
languages for their functions, we should enforce that specified state names are 
valid identifiers, following the rules below:

* Must start with either an alphabet letter [a-z] / [A-Z], or an underscore "_".
* Characters other than the first, can be either an alphabet letter [a-z] / 
[A-Z], a digit [0-9], or an underscore "_".
* Must not contain spaces.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21663) Reject duplicate StatefulFunction registrations under the same typename

2021-03-08 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21663:
---

 Summary: Reject duplicate StatefulFunction registrations under the 
same typename
 Key: FLINK-21663
 URL: https://issues.apache.org/jira/browse/FLINK-21663
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


Likewise to FLINK-21662, in StateFun, a single function typename should be 
associated with exactly one {{StatefulFunction}}. Duplicate registrations 
should be caught eagerly when users create a {{StatefulFunctions}} object.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21662) Reject duplicate ValueSpec registrations under the same state name

2021-03-08 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21662:
---

 Summary: Reject duplicate ValueSpec registrations under the same 
state name
 Key: FLINK-21662
 URL: https://issues.apache.org/jira/browse/FLINK-21662
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


StateFun's remote Java SDK currently does not throw if a user builds a 
{{StatefulFunctionSpec}} with multiple {{ValueSpec}}s that are registered under 
the same name.

A single state name is associated with a single {{ValueSpec}}, so we should 
restrict and catch this early from the API level.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21577) SimpleType.simpleTypeFrom(...) complains with "Collection is empty"

2021-03-02 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21577:
---

 Summary: SimpleType.simpleTypeFrom(...) complains with "Collection 
is empty"
 Key: FLINK-21577
 URL: https://issues.apache.org/jira/browse/FLINK-21577
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


This is caused by the {{EnumSet.copyOf}} method call at:
https://github.com/apache/flink-statefun/blob/master/statefun-sdk-java/src/main/java/org/apache/flink/statefun/sdk/java/types/SimpleType.java#L57

That expects the collection to be non-empty.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21530) Precompute TypeName's canonical string representation

2021-02-28 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21530:
---

 Summary: Precompute TypeName's canonical string representation
 Key: FLINK-21530
 URL: https://issues.apache.org/jira/browse/FLINK-21530
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


There's room for improvement in StateFun's {{PersistedRemoteFunctionValues}}, 
where we currently concatenate strings to build the typename string for each 
state value we attach to a {{ToFunction}} message.

This extra work can be easily avoided by precomputing the canonical typename 
string, since {{TypeName}}'s are immutable.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21498) Avoid copying when converting byte[] to ByteString in StateFun

2021-02-24 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21498:
---

 Summary: Avoid copying when converting byte[] to ByteString in 
StateFun
 Key: FLINK-21498
 URL: https://issues.apache.org/jira/browse/FLINK-21498
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


There's a few places in StateFun where we can be more efficient with byte[] to 
Protobuf ByteString conversions, by just wrapping the byte[] instead of 
copying, since we know that the byte array can no longer be mutated.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21496) Upgrade Testcontainers to 1.15.1 in Stateful Functions

2021-02-24 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21496:
---

 Summary: Upgrade Testcontainers to 1.15.1 in Stateful Functions
 Key: FLINK-21496
 URL: https://issues.apache.org/jira/browse/FLINK-21496
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


The E2E tests in CI is currently failing for StateFun, started failing recently 
due to Github Actions upgrading their Docker version to 20.10.2+.
Due to this upgrade, our current Testcontainers version 1.12.x is no longer 
compatible since that version relies on a deprecated Docker API that no longer 
exists in Docker version 10.10.2 (API version 1.41).

Full description of the issue: 
https://github.com/testcontainers/testcontainers-java/issues/3574



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21491) Properly shade Protobuf in statefun-sdk-java

2021-02-24 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21491:
---

 Summary: Properly shade Protobuf in statefun-sdk-java
 Key: FLINK-21491
 URL: https://issues.apache.org/jira/browse/FLINK-21491
 Project: Flink
  Issue Type: Task
  Components: Build System / Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


Currently, although we shade Protobuf in {{statefun-sdk-java}}, Protobuf is 
still treated as a transitive compile dependency. This can be checked by 
executing {{mvn dependency:tree}} on the {{statefun-sdk-java}} module.

In our case, in order to properly shade this and remove the transitive 
dependency, we need to introduce a separate module specifically containing only 
the relocated protobuf classes, and let {{statefun-sdk-java}} depend on that.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21459) Implement remote Java SDK for Stateful Functions

2021-02-23 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21459:
---

 Summary: Implement remote Java SDK for Stateful Functions
 Key: FLINK-21459
 URL: https://issues.apache.org/jira/browse/FLINK-21459
 Project: Flink
  Issue Type: Task
  Components: Build System / Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Igal Shilman
 Fix For: statefun-3.0.0






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21276) flink-statefun/statefun-sdk-java should mention Protobuf in NOTICE and bundle its license

2021-02-03 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21276:
---

 Summary: flink-statefun/statefun-sdk-java should mention Protobuf 
in NOTICE and bundle its license
 Key: FLINK-21276
 URL: https://issues.apache.org/jira/browse/FLINK-21276
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21171) Introduce TypedValue to the StateFun request-reply protocol

2021-01-27 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21171:
---

 Summary: Introduce TypedValue to the StateFun request-reply 
protocol
 Key: FLINK-21171
 URL: https://issues.apache.org/jira/browse/FLINK-21171
 Project: Flink
  Issue Type: New Feature
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


Currently, all values being passed around via the request-reply protocol, are 
of the Protobuf {{Any}} type. This includes payloads of outgoing messages to 
other functions, and also state values.

This has a few shortcomings:
* All user records are strictly required to be modeled and wrapped as a 
Protobuf message - even for simple primitive type. This makes it awkward to 
work with for many common types of messages, for example JSON.
* For data persisted as state, with each state value being a Protobuf {{Any}}, 
each value would also redundantly store the type urls associated with each 
Protobuf message.

Instead, we'd like to introduced a {{TypedValue}} construct that replaces 
{{Any}} everywhere in the protocol, for both messages and state values:
{code}
message TypedValue {
string typename = 1;
bytes value = 2;
}
{code}

The {{typename}} here directly maps to the type concept introduced in 
FLINK-21061.
For state, we directly write the value bytes of a {{TypedValue}} into state, 
and the {{typename}} is the meta information snapshotted by the state 
serializer (see FLINK-21061).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-21061) Introduce RemotePersistedValue construct in Stateful Functions

2021-01-20 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-21061:
---

 Summary: Introduce RemotePersistedValue construct in Stateful 
Functions
 Key: FLINK-21061
 URL: https://issues.apache.org/jira/browse/FLINK-21061
 Project: Flink
  Issue Type: Task
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


To prepare for the new cross-language type system upcoming in Stateful 
Functions, we need a new {{RemotePersistedValue}} state construct to support 
this in the runtime.

A {{RemotePersistedValue}} should translate to a Flink {{ValueState}} that is 
essentially a byte array value, and persists in state serializer snapshots a 
{{typeUrl}} metainfo to represent the type of the remote value.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20987) Upgrade Stateful Functions to use Flink 1.12

2021-01-14 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20987:
---

 Summary: Upgrade Stateful Functions to use Flink 1.12
 Key: FLINK-20987
 URL: https://issues.apache.org/jira/browse/FLINK-20987
 Project: Flink
  Issue Type: New Feature
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20742) Skip deployment of StateFun example artifacts

2020-12-22 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20742:
---

 Summary: Skip deployment of StateFun example artifacts
 Key: FLINK-20742
 URL: https://issues.apache.org/jira/browse/FLINK-20742
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-3.0.0


Starting from the next Stateful Functions release, we'd like to stop publishing 
Maven artifacts for the examples.

We never expect users to be trying out examples through this artifacts, and 
therefore releasing them is not required.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20741) StateFun's DataStream interop SDK module is missing a valid NOTICE file

2020-12-22 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20741:
---

 Summary: StateFun's DataStream interop SDK module is missing a 
valid NOTICE file
 Key: FLINK-20741
 URL: https://issues.apache.org/jira/browse/FLINK-20741
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.2


The {{statefun-flink-datastream}} module bundles a fat jar, just like the 
{{statefun-flink-distribution}} module. Likewise, for legal purposes, all 
bundled dependencies need to be acknowledged in the NOTICE file.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20689) Upgrade StateFun to Flink 1.11.3

2020-12-20 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20689:
---

 Summary: Upgrade StateFun to Flink 1.11.3
 Key: FLINK-20689
 URL: https://issues.apache.org/jira/browse/FLINK-20689
 Project: Flink
  Issue Type: Task
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.2


Now that Flink 1.11.3 is out, we should upgrade StateFun to use 1.11.3.
This is important for FLINK-19740.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20636) Require unaligned checkpoints to be disabled in StateFun applications

2020-12-16 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20636:
---

 Summary: Require unaligned checkpoints to be disabled in StateFun 
applications
 Key: FLINK-20636
 URL: https://issues.apache.org/jira/browse/FLINK-20636
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.2


Due to how StateFun has feedback loops, with unaligned checkpoints a function 
dispatcher operator may receive a feedback checkpoint barrier (from other 
parallel subtasks that process the checkpoint barrier first) before it receives 
its own checkpoint barrier.

We need to further investigate how to properly support unaligned checkpointing 
in StateFun.
For the time being, we should strictly require aligned checkpointing for 
StateFun apps.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20574) Throttle number of remote invocation requests on startup or restores with large backlogs

2020-12-11 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20574:
---

 Summary: Throttle number of remote invocation requests on startup 
or restores with large backlogs
 Key: FLINK-20574
 URL: https://issues.apache.org/jira/browse/FLINK-20574
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0


On startup or restores, the {{RequestReplyFunction}} may heavily load the 
remote functions with multiple concurrent invocation requests if there is a 
large backlog of restored or historical events to process through.

The new protocol introduced by FLINK-20265 emphasizes this much more due to the 
nature of extra invocation roundtrips if the function has state declarations 
(i.e., the first hoard of concurrent invocations would all fail with an 
{{IncompleteInvocationContext}} and requires invocation patching + state 
registrations).

We should think about how to apply throttling to mitigate these scenarios.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20336) RequestReplyFunction should not silently ignore UNRECOGNIZED state value mutations types

2020-11-24 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20336:
---

 Summary: RequestReplyFunction should not silently ignore 
UNRECOGNIZED state value mutations types
 Key: FLINK-20336
 URL: https://issues.apache.org/jira/browse/FLINK-20336
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Affects Versions: statefun-2.2.1, statefun-2.1.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0, statefun-2.2.2


If a function's response has a {{PersistedValueMutation}} type that is 
{{UNRECOGNIZED}}, we currently just silently ignore that mutation:
https://github.com/apache/flink-statefun/blob/master/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/reqreply/PersistedRemoteFunctionValues.java#L84

This is incorrect. The {{UNRECOGNIZED}} enum constant is a pre-defined constant 
used by the Protobuf Java SDK, to represent a constant that was unable to be 
deserialized (because the the serialized constant does not match any enums 
defined in the protobuf message).

Therefore, it should be handled by throwing an exception, preferably indicating 
that there is some sort of version mismatch between the function's Protobuf 
message definitions, and StateFun's Protobuf message definitions (i.e. most 
likely a mismatch in the invocation protocol versions).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20335) Remove support for eager state specifications in module YAML definitions

2020-11-24 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20335:
---

 Summary: Remove support for eager state specifications in module 
YAML definitions
 Key: FLINK-20335
 URL: https://issues.apache.org/jira/browse/FLINK-20335
 Project: Flink
  Issue Type: Sub-task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0


With FLINK-20265, we now support declaring state in StateFun functions, and 
that can change dynamically without any system downtime.

It can be confusing for users if we continued to support the legacy way of 
statically declaring state specifications in the module YAML definitions.

Therefore, we propose to completely remove that by:
* No longer support module YAML format versions <= 2.0.
* Remove the {{PersistedRemoteFunctionValues}} constructor that accepts a list 
of eager state specifications

This would be a breaking change:
* Users upgrading to version 2.3.0 have to rewrite their module YAMLs to 
conform to format version 3.0
* They also have to correspondingly update their functions to use SDKs of 
version 2.3.0.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20334) Introduce function endpoint path templating in module YAML specifications

2020-11-24 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20334:
---

 Summary: Introduce function endpoint path templating in module 
YAML specifications
 Key: FLINK-20334
 URL: https://issues.apache.org/jira/browse/FLINK-20334
 Project: Flink
  Issue Type: Sub-task
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0


In the current module specifications, function endpoints are defined like so:

{code}
functions:
- function:
  meta:
  kind: http
  type: com.foo/world
  spec:
  endpoint: http://localhost:5959/statefun
{code}

A list of functions and their corresponding service endpoints are listed 
statically in the module specification file, which is loaded once on system 
startup. The system may only route messages to functions that have been 
defined. This prevents users from adding new functions to the application, 
without having to restart the system and reload new module specifications.

We propose that instead of specifying functions, users should specify a 
"family" of function endpoints, like so:

{code}
functionEndpoints:
- functionEndpoint:
meta:
kind: http
spec:
target:
typename:
namespace: com.foo.bar
function: *  # (can be wildcard * or a specific name)
urlPathTemplate: "https://bar.foo.com:8000/{typename.function};
connectTimeout: 1min
# ... (other connection related configs that is shared for this 
endpoint family)
{code}

Note how users no longer define eager state per individual function. This is 
made possible by FLINK-20265, where state is now defined in the functions 
instead of in the module specifications.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20268) Update Python SDK to implement new invocation protocol

2020-11-21 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20268:
---

 Summary: Update Python SDK to implement new invocation protocol
 Key: FLINK-20268
 URL: https://issues.apache.org/jira/browse/FLINK-20268
 Project: Flink
  Issue Type: Sub-task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0


The Python SDK should be updated to implement the new protocol introduced by 
FLINK-20265.

Users should be able to declare states the Python function uses, and with 
information, the Python SDK {{RequestReplyHandler}} can then match on the 
provided states values in invocation requests against the declared states of a 
target function:

Proposed API:
{code}
@functions.bind(
typename="example/greeter",
states=[StateSpec("seen_count")])
def greet(context, greet_request: GreetRequest):
state = context.state("seen_count").unpack(SeenCount)
...
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20265) Extend invocation protocol to allow functions to indicate incomplete state context

2020-11-20 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20265:
---

 Summary: Extend invocation protocol to allow functions to indicate 
incomplete state context
 Key: FLINK-20265
 URL: https://issues.apache.org/jira/browse/FLINK-20265
 Project: Flink
  Issue Type: Sub-task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0


Currently, users declare the states a function will access with a module YAML 
definition file. The modules are loaded once when starting a StateFun cluster, 
meaning that the state specifications remain static throughout the cluster's 
execution lifetime.

We propose that state specifications should be declared by the function 
themselves via the language SDKs, instead of being declared in the module YAMLs.

The state specifications, now living in the functions, can be made discoverable 
by the StateFun runtime through the invocation request-reply protocol.

Brief simplified sketch of the extended protocol:
- StateFun dispatches an invocation request, with states {A, B}.

- Function receives request, but since it requires {A, B, C, D}, it responds 
with a IncompleteInvocationContext response indicating that state values for C, 
D is missing

- StateFun receives this response, and registers new Flink state handles for 
{C, D}.

- Then, a new invocation request with the same input messages, but "patched" 
with new states to contain all values for {A, B, C, D} is resent to the 
function.





--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20264) Zero-downtime / dynamic function upgrades in Stateful Functions

2020-11-20 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20264:
---

 Summary: Zero-downtime / dynamic function upgrades in Stateful 
Functions
 Key: FLINK-20264
 URL: https://issues.apache.org/jira/browse/FLINK-20264
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0


Currently, due to how functions can be executed as stateless deployments 
separate to the StateFun runtime, they can be easily upgraded with 
zero-downtime.

However, up to now there are still some restrictions to what can be done 
without restarting StateFun processes:

* Can't upgrade existing functions to declare new persisted state
* Can't add new functions to an existing StateFun application, and have 
messages routed to it

The end goal of this epic is to enable the above operations for function 
deployments, without the need to restart the StateFun runtime. Further details 
can be found in subtasks of this JIRA.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20189) Restored feedback events may be silently dropped if per key-group header bytes were not fully read

2020-11-17 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20189:
---

 Summary: Restored feedback events may be silently dropped if per 
key-group header bytes were not fully read
 Key: FLINK-20189
 URL: https://issues.apache.org/jira/browse/FLINK-20189
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Affects Versions: statefun-2.2.1
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0, statefun-2.2.2


The attempt to read the per key-group header bytes here does not guarantee the 
header bytes are fully-read:
https://github.com/apache/flink-statefun/blob/master/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/logger/UnboundedFeedbackLogger.java#L163

What could happen is the following:
* Say the input stream actually has the header bytes written in there
* Less then {{HEADER_BYTES.length}} number of bytes was read into the read 
buffer, in the above reference code line.
* The {{if (bytesRead > 0 && !Arrays.equals(header, HEADER_BYTES))}} check 
would be true, because the read byte array != the expected header bytes.
* We would mistakenly think that the header bytes are not in the input stream, 
and pushback. i.e. the header bytes were not being skipped, and the following 
reads would see the header bytes first.
* Most importantly, since the header bytes are not being skipped in this case, 
the {{STATEFUN_VERSION}} (which is {{0}}) is being incorrectly read by 
{{KeyGroupStream.readFrom(...)}} as the number of feedback elements to read: 
https://github.com/apache/flink-statefun/blob/master/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/logger/KeyGroupStream.java#L57
* The end result of all of this is in this scenario: some checkpointed feedback 
events would be silently dropped.

Although it is hard to say how possible this would happen in reality, and would 
also depend on the actual implementation of the {{InputStream}}, from the 
general contracts of {{InputStream#read(byte[])}} this is definitely something 
that should be addressed.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20182) Add JDK 11 build to StateFun's CI

2020-11-16 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20182:
---

 Summary: Add JDK 11 build to StateFun's CI
 Key: FLINK-20182
 URL: https://issues.apache.org/jira/browse/FLINK-20182
 Project: Flink
  Issue Type: Task
  Components: Build System / CI, Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


We'd like to officially support building Stateful Function's with Java 11 
(note, we still release Java 8 artifacts, which works with Java 11 as well).

This should be covered in the per-push / per-PR CI builds in StateFun.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20161) Consider switching from Travis CI to Github Actions for flink-statefun's CI workflows

2020-11-13 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20161:
---

 Summary: Consider switching from Travis CI to Github Actions for 
flink-statefun's CI workflows
 Key: FLINK-20161
 URL: https://issues.apache.org/jira/browse/FLINK-20161
 Project: Flink
  Issue Type: Task
  Components: Build System / CI, Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Travis-CI.com recently announced a new pricing model on Nov. 2, which affects 
public open source projects: 
https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing

While its a bit unclear if Travis CI repos under 
{{travis-ci.com/github/apache}} is affected by this, this will definitely 
affect contributors who fork our repositories and enable Travis CI on their 
fork for development purposes.

Github Actions seems to be a popular alternative nowadays:
* No limited test time with its hosted builders, if repo is public
* Activation is automatic - one step / click less for contributors to get CI 
running for their forks

Given that the CI workflows in {{flink-statefun}} is very minimal right now, we 
propose to make the switch to Github Actions as the efforts to do that should 
be relatively trivial.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-20085) Remove RemoteFunctionStateMigrator code paths from StateFun

2020-11-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-20085:
---

 Summary: Remove RemoteFunctionStateMigrator code paths from 
StateFun 
 Key: FLINK-20085
 URL: https://issues.apache.org/jira/browse/FLINK-20085
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.3.0


The {{RemoteFunctionStateMigrator}} was added to allow savepoints with versions 
<= 2.1.0 to have a migration path for upgrading to versions >= 2.2.0. The 
binary format of remote function state was changed due to demultiplexed remote 
state, introduced in 2.2.0.

With 2.2.0 already released with the new formats, it is now safe to fully 
remove this migration path.

For users, what this means that it would not be possible to directly upgrade 
from 2.0.x / 2.1.x to 2.3.x+. They'd have to perform incremental upgrades via 
2.2.x, by restoring first with 2.2.x and then taking another savepoint, before 
upgrading to 2.3.x.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19748) StateFun's UnboundedFeedbackLogger should call startNewKeyGroup for all assigned key groups

2020-10-21 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19748:
---

 Summary: StateFun's UnboundedFeedbackLogger should call 
startNewKeyGroup for all assigned key groups
 Key: FLINK-19748
 URL: https://issues.apache.org/jira/browse/FLINK-19748
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Affects Versions: statefun-2.2.0, statefun-2.1.0, statefun-2.0.0
Reporter: Tzu-Li (Gordon) Tai


Currently, on commit the {{UnboundedFeedbackLogger}} only calls 
{{startNewKeyGroup}} on the raw keyed stream for key groups that actually have 
logged messages:
https://github.com/apache/flink-statefun/blob/master/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/logger/UnboundedFeedbackLogger.java#L102

This means that it might skip some key groups, if a key group doesn't have any 
logged messages.

This doesn't conform with the expected usage of Flink's 
{{KeyedStateCheckpointOutputStream}}, where it expects that for ALL key groups 
within the range, {{startNewKeyGroup}} needs to be invoked.
The reason for this is that underneath, calling {{startNewKeyGroup}} would also 
record the starting stream offset position for the key group.
However, when iterating through a raw keyed stream, the key group offsets 
iterator {{KeyGroupRangeOffsets#KeyGroupOffsetsIterator}} doesn't take into 
account that some key groups weren't written and therefore do not have offsets 
defined, and the streams will be seeked to incorrect positions.

Ultimately, if some key groups were skipped while writing to the raw keyed 
stream, the following error will be thrown on restore:
{code}
java.lang.Exception: Exception while creating StreamOperatorStateContext.
at 
org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.streamOperatorStateContext(StreamTaskStateInitializerImpl.java:204)
at 
org.apache.flink.streaming.api.operators.AbstractStreamOperator.initializeState(AbstractStreamOperator.java:247)
at 
org.apache.flink.streaming.runtime.tasks.OperatorChain.initializeStateAndOpenOperators(OperatorChain.java:290)
at 
org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$beforeInvoke$0(StreamTask.java:473)
at 
org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$1.runThrowing(StreamTaskActionExecutor.java:47)
at 
org.apache.flink.streaming.runtime.tasks.StreamTask.beforeInvoke(StreamTask.java:469)
at 
org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:522)
at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:721)
at org.apache.flink.runtime.taskmanager.Task.run(Task.java:546)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: java.io.IOException: position out of bounds
at 
org.apache.flink.runtime.state.StatePartitionStreamProvider.getStream(StatePartitionStreamProvider.java:58)
at 
org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.internalTimeServiceManager(StreamTaskStateInitializerImpl.java:235)
at 
org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.streamOperatorStateContext(StreamTaskStateInitializerImpl.java:167)
... 9 more
Caused by: java.io.IOException: position out of bounds
at 
org.apache.flink.runtime.state.memory.ByteStreamStateHandle$ByteStateHandleInputStream.seek(ByteStreamStateHandle.java:124)
at 
org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl$KeyGroupStreamIterator.next(StreamTaskStateInitializerImpl.java:442)
at 
org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl$KeyGroupStreamIterator.next(StreamTaskStateInitializerImpl.java:395)
at 
org.apache.flink.streaming.api.operators.StreamTaskStateInitializerImpl.internalTimeServiceManager(StreamTaskStateInitializerImpl.java:228)
... 10 more
{code}

**Possible solutions**

There are 2 possible solutions, either by fixing in StateFun or in Flink:

- This can be fixed in StateFun by ensuring that the feedback logger starts a 
new key group for all key groups in range, by doing:
{code}
for (int keyGroupId : rawKeyedStream.getKeyGroupList()) {
rawKeyedStream.startNewKeyGroup(keyGroupId);
// write to stream if there are logged messages for this key group
}
{code}

- Or, alternatively, we change the 
{{KeyGroupRangeOffsets#KeyGroupOffsetsIterator}} in Flink to skip key groups 
that don't have a defined offset (i.e. {{startNewKeyGroup}} wasn't called for 
these key groups).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19741) InternalTimeServiceManager fails to restore if there are other users of raw keyed state streams

2020-10-20 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19741:
---

 Summary: InternalTimeServiceManager fails to restore if there are 
other users of raw keyed state streams
 Key: FLINK-19741
 URL: https://issues.apache.org/jira/browse/FLINK-19741
 Project: Flink
  Issue Type: Bug
  Components: Runtime / Checkpointing
Affects Versions: 1.11.2, 1.10.2, 1.9.3
Reporter: Tzu-Li (Gordon) Tai


Currently, when restoring a {{InternalTimeServiceManager}}, we always attempt 
to read from the provided raw keyed state streams (using 
{{InternalTimerServiceSerializationProxy}}):
https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManagerImpl.java#L117

This is incorrect, since we don't write with the 
{{InternalTimerServiceSerializationProxy}} if the timers do not require legacy 
synchronous snapshots:
https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManagerImpl.java#L192
(we currently only require that when users use RocksDB backend + heap timers).

Therefore, the {{InternalTimeServiceManager}} can fail to be created on restore 
due to corrupt reads in the case where:
* a checkpoint was taken where {{useLegacySynchronousSnapshots}} is false 
(hence nothing was written, and the time service manager does not use the raw 
keyed stream)
* the raw keyed stream is used elsewhere (e.g. in the Flink application's user 
code)
* on restore from the checkpoint, {{InternalTimeServiceManagerImpl.create()}} 
attempts to read from the raw keyed stream with the 
{{InternalTimerServiceSerializationProxy}}.

The fix would be to also respect the {{useLegacySynchronousSnapshots}} flag in:
https://github.com/apache/flink/blob/master/flink-streaming-java/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManagerImpl.java#L231



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19620) Merge StateFun's ExactlyOnceE2E and RemoteModuleE2E

2020-10-13 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19620:
---

 Summary: Merge StateFun's ExactlyOnceE2E and RemoteModuleE2E
 Key: FLINK-19620
 URL: https://issues.apache.org/jira/browse/FLINK-19620
 Project: Flink
  Issue Type: Test
  Components: Stateful Functions, Tests
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Currently, we have:
- {{ExactlyOnceE2E}}, which verifies end-to-end exactly-once in the presence of 
TM failures, but uses embedded functions
- {{RemoteModuleE2E}} which runs functions remotely and verifies that the 
communication between StateFun + the functions is correct, messages are routed 
correctly.

A recent issue (https://github.com/apache/flink-statefun/pull/159) suggested 
that we should add a E2E with remote functions + TM failures.

With this in mind, it is worth considering merging these 2 E2Es into one, as 
together they should cover equal functionality (remote functions are built on 
top of embedded functions), and having them merged also saves test time.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19408) Update flink-statefun-docker release scripts for cross release Java 8 and 11

2020-09-25 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19408:
---

 Summary: Update flink-statefun-docker release scripts for cross 
release Java 8 and 11
 Key: FLINK-19408
 URL: https://issues.apache.org/jira/browse/FLINK-19408
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.0


Currently, the {{add-version.sh}} script in the {{flink-statefun-docker}} repo 
does not generate Dockerfiles for different Java versions.
Since we have decided to cross-release images for Java 8 and 11, that script 
needs to be updated as well.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19290) Add documentation for Stateful Function's Flink DataStream SDK

2020-09-18 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19290:
---

 Summary: Add documentation for Stateful Function's Flink 
DataStream SDK
 Key: FLINK-19290
 URL: https://issues.apache.org/jira/browse/FLINK-19290
 Project: Flink
  Issue Type: Task
  Components: Documentation, Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The new Flink DataStream integration SDK for Stateful Functions is still 
lacking documentation.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19256) Validate Stateful Functions configuration only where necessary

2020-09-16 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19256:
---

 Summary: Validate Stateful Functions configuration only where 
necessary
 Key: FLINK-19256
 URL: https://issues.apache.org/jira/browse/FLINK-19256
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Currently, the Flink configuration is validated to contain necessary settings, 
such as parent-first classloading patterns whereever 
{{StatefulFunctionsConfig}} is instantiated.

This validation should not be part of creating a {{StatefulFunctionsConfig}}, 
and should be refactored out as a separate utility method that is called only 
on necessary execution paths.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19199) Add execution attempt ID to feedback channel keys

2020-09-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19199:
---

 Summary: Add execution attempt ID to feedback channel keys
 Key: FLINK-19199
 URL: https://issues.apache.org/jira/browse/FLINK-19199
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The feedback brokers identify a single pair of producer / consumer with a 
{{SubtaskFeedbackKey}}, which is uniquely identified within a job by only the 
subtask index.

This can potentially become an issue in job restart scenarios, since the 
feedback brokers are static fields, and are durable across non-TM failure job 
restarts.
Currently it is not a problem because we do clear broker channels on close, but 
adding an extra execution attempt ID into the {{SubtaskFeedbackKey}} can make 
things safer.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19197) Add documentation for PersistedStateRegistry

2020-09-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19197:
---

 Summary: Add documentation for PersistedStateRegistry
 Key: FLINK-19197
 URL: https://issues.apache.org/jira/browse/FLINK-19197
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Documentation for the new {{PersistedStateRegistry}} state construct is still 
missing. This should be added as a new sub-section beneath 
https://ci.apache.org/projects/flink/flink-statefun-docs-master/sdk/java.html#persistence.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19130) Expose backpressure metrics / logs for function dispatcher operator

2020-09-02 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19130:
---

 Summary: Expose backpressure metrics / logs for function 
dispatcher operator
 Key: FLINK-19130
 URL: https://issues.apache.org/jira/browse/FLINK-19130
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


As of now, there is no visibility on why or how backpressure is applied in 
Stateful Functions.
This JIRA attemps to add two metrics as an initial effort of providing more 
visibility:
- Total number of addresses that have asked to be blocked
- Total number of inflight pending async operations



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19107) Add basic checkpoint and recovery config keys to template flink-conf.yaml

2020-09-01 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19107:
---

 Summary: Add basic checkpoint and recovery config keys to template 
flink-conf.yaml
 Key: FLINK-19107
 URL: https://issues.apache.org/jira/browse/FLINK-19107
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.0


How to enable checkpointing in Stateful Functions seems to be a recurring 
question.
Adding the relevant configuration keys to the template flink-conf.yaml in 
StateFun's Docker images could help with this. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19106) Add more timeout options for remote function specs

2020-08-31 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19106:
---

 Summary: Add more timeout options for remote function specs
 Key: FLINK-19106
 URL: https://issues.apache.org/jira/browse/FLINK-19106
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.0


As of now, we only support setting the call timeout for remote functions, which 
spans a complete call including connection, writing request, server-side 
processing, and reading response times.

To allow more fine-grained control of this, we propose to introduce 
configuration keys for {{connectTimeout}} / {{readTimeout}} / {{writeTimeout}} 
to remote function specs.
By default, these values should be 10 to be coherent with the current behaviour.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19102) Make StateBinder a per-FunctionType entity

2020-08-31 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19102:
---

 Summary: Make StateBinder a per-FunctionType entity
 Key: FLINK-19102
 URL: https://issues.apache.org/jira/browse/FLINK-19102
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.0


Currently, a single {{StateBinder}} instance is used across multiple 
{{FunctionType}} s for binding state objects to Flink state.

While this is fine, it creates a leak of internal runtime information to the 
{{PersistedStateRegistry}} class. To fix this, we need to make {{FunctionType}} 
a property of each individual state binder, etc. each state binder binds state 
for a single {{FunctionType}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19096) Simplify PersistedStateRegistry state registration methods

2020-08-31 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19096:
---

 Summary: Simplify PersistedStateRegistry state registration methods
 Key: FLINK-19096
 URL: https://issues.apache.org/jira/browse/FLINK-19096
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.0


Currently, to register for example a {{PersistedValue}} with a 
{{PersistedStateRegistry}}, you create it by doing 
{{registry.registerValue(name, type, expiration)}}.

This leads to duplicate signatures with the state class constructors, and 
therefore requires separate synchronization across the methods.

We should change the syntax to accept a {{PersistedValue}} object directly, to 
simplify things.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-19095) Add expire mode for remote function state TTL

2020-08-30 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-19095:
---

 Summary: Add expire mode for remote function state TTL
 Key: FLINK-19095
 URL: https://issues.apache.org/jira/browse/FLINK-19095
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.0


We did not allow setting expire mode for each remote function state before due 
to FLINK-18316. Now that remote function state is de-multiplexed, we can now 
easily support this.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-18340) Support directly providing bytes instead of a Protobuf messages when writing to Kafka / Kinesis with the Python SDK

2020-06-16 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-18340:
---

 Summary: Support directly providing bytes instead of a Protobuf 
messages when writing to Kafka / Kinesis with the Python SDK
 Key: FLINK-18340
 URL: https://issues.apache.org/jira/browse/FLINK-18340
 Project: Flink
  Issue Type: New Feature
  Components: Stateful Functions
 Environment: State
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.2.0


This was insight from this ML thread: 
http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Any-python-example-with-json-data-from-Kafka-using-flink-statefun-td42520.html

Currently, the {{kafka_egress_record}} and {{kinesis_egress_record}} methods in 
the Python SDK only support providing a Protobuf message to be written to Kafka 
/ Kinesis.
We should make this more flexible so that a user can directly supply bytes.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-18316) Add a dynamic state registration primitive for Stateful Functions

2020-06-15 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-18316:
---

 Summary: Add a dynamic state registration primitive for Stateful 
Functions
 Key: FLINK-18316
 URL: https://issues.apache.org/jira/browse/FLINK-18316
 Project: Flink
  Issue Type: New Feature
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Currently, using the {{PersistedValue}} / {{PersistedTable}} / 
{{PersistedAppendingBuffer}} primitives, the user can only eagerly define 
states prior to function instance activation using the {{Persisted}} field 
annotation.

We propose to add a primitive that allows them to register states dynamically 
after activation (i.e. during runtime), along the lines of:
{code}
public MyStateFn implements StatefulFunction {

@Persisted
private final PersistedStateProvider provider = new 
PersistedStateProvider();

public MyStateFn() {
PersistedValue valueState = provider.getValue(...);
}

void invoke(Object input) {
PersistedValue anotherValueState = provider.getValue(...);
}
}
{code}

Note how you can register state during instantiation (in the constructor) and 
in the invoke method. Both registrations should be picked up by the runtime and 
bound to Flink state.

This will be useful for a few scenarios:
- Could enable us to get rid of eager state spec definitions in the YAML 
modules for remote functions in the future.
- Will allow new state to be registered in remote functions, without shutting 
down the StateFun cluster.
- Moreover, this approach allows us to differentiate which functions have 
dynamic state and which ones have only eager state, which might be handy in the 
future in case there is a need to differentiate.




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-18177) Document all YAML format versions for Stateful Functions

2020-06-08 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-18177:
---

 Summary: Document all YAML format versions for Stateful Functions
 Key: FLINK-18177
 URL: https://issues.apache.org/jira/browse/FLINK-18177
 Project: Flink
  Issue Type: Task
Reporter: Tzu-Li (Gordon) Tai


In 
https://ci.apache.org/projects/flink/flink-statefun-docs-master/sdk/modules.html#specification,
 we currently only document the latest format version.

It could make sense to document multiple versions here, especially as we add 
more versions.
Perhaps a starter example for referencing how we might structure the pages 
would be the Docker Compose version docs:
https://docs.docker.com/compose/compose-file/compose-versioning/ 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-18069) Scaladocs not building since inner Java interfaces cannot be recognized

2020-06-02 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-18069:
---

 Summary: Scaladocs not building since inner Java interfaces cannot 
be recognized
 Key: FLINK-18069
 URL: https://issues.apache.org/jira/browse/FLINK-18069
 Project: Flink
  Issue Type: Bug
  Components: API / Scala, Documentation
Affects Versions: 1.11.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Error:

{code}
/home/buildslave/slave/flink-docs-master/build/flink-scala/src/main/java/org/apache/flink/api/scala/typeutils/Tuple2CaseClassSerializerSnapshot.java:98:
 error: not found: type OuterSchemaCompatibility
protected OuterSchemaCompatibility 
resolveOuterSchemaCompatibility(ScalaCaseClassSerializer> 
newSerializer) {
  ^
/home/buildslave/slave/flink-docs-master/build/flink-scala/src/main/java/org/apache/flink/api/scala/typeutils/TraversableSerializerSnapshot.java:101:
 error: not found: type OuterSchemaCompatibility
protected OuterSchemaCompatibility 
resolveOuterSchemaCompatibility(TraversableSerializer newSerializer) {
  ^
/home/buildslave/slave/flink-docs-master/build/flink-scala/src/main/java/org/apache/flink/api/scala/typeutils/ScalaCaseClassSerializerSnapshot.java:106:
 error: not found: type OuterSchemaCompatibility
protected OuterSchemaCompatibility 
resolveOuterSchemaCompatibility(ScalaCaseClassSerializer newSerializer) {
  ^
{code}

This is a similar issue as reported here: 
https://github.com/scala/bug/issues/10509.

This seems to be a problem with Scala 2.12.x. The only workaround is to
redundantly add the full-length qualifiers for such interfaces.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17997) Revert manual merging of AWS KPL's THIRD_PARTY_NOTICE files content in Stateful Functions distribution artifact

2020-05-28 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17997:
---

 Summary: Revert manual merging of AWS KPL's THIRD_PARTY_NOTICE 
files content in Stateful Functions distribution artifact
 Key: FLINK-17997
 URL: https://issues.apache.org/jira/browse/FLINK-17997
 Project: Flink
  Issue Type: Task
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1, statefun-2.1.0


We manually merged the contents in FLINK-16901, because at the time the 
upstream Flink Kinesis connector wasn't yet properly handling the content.

Now that this is fixed upstream, we can revert the fix in StateFun.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17963) Revert execution environment patching in StatefulFunctionsJob (FLINK-16926)

2020-05-27 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17963:
---

 Summary: Revert execution environment patching in 
StatefulFunctionsJob (FLINK-16926)
 Key: FLINK-17963
 URL: https://issues.apache.org/jira/browse/FLINK-17963
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Affects Versions: statefun-2.0.1, statefun-2.1.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


In FLINK-16926, we explicitly "patched" the {{StreamExecutionEnvironment}} due 
to FLINK-16560.

Now that we have upgraded the Flink version in StateFun to 1.10.1 which 
includes a fix for FLINK-16560, we can now revert the patching of 
{{StreamExecutionEnvironment}} in the {{StatefulFunctionsJob}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17954) Do not multiplex remote function state into single PersistedTable

2020-05-26 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17954:
---

 Summary: Do not multiplex remote function state into single 
PersistedTable
 Key: FLINK-17954
 URL: https://issues.apache.org/jira/browse/FLINK-17954
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Affects Versions: statefun-2.0.1, statefun-2.1.0
Reporter: Tzu-Li (Gordon) Tai


We are currently multiplexing multiple remote function's user value states into 
a single {{PersistedTable}}, using the state name as the table key.

This is not nice since:
- It does not allow individual states to have different properties, such as TTL 
expiration.
- We are restricted to only value states for remote functions



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17875) Support state TTL for remote functions

2020-05-21 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17875:
---

 Summary: Support state TTL for remote functions
 Key: FLINK-17875
 URL: https://issues.apache.org/jira/browse/FLINK-17875
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.1.0


With FLINK-17644, we now have support for embedded functions.
This should be extended to remote functions, by allowing the module specs to 
define the TTL for declared remote function state.

With this, it is also likely that we need to uptick the version for the YAML 
module spec.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17712) Upgrade Flink version to 1.10.1 in Stateful Functions

2020-05-14 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17712:
---

 Summary: Upgrade Flink version to 1.10.1 in Stateful Functions
 Key: FLINK-17712
 URL: https://issues.apache.org/jira/browse/FLINK-17712
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1, statefun-2.1.0






--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17684) Run containerized end-to-end tests for all Travis builds

2020-05-14 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17684:
---

 Summary: Run containerized end-to-end tests for all Travis builds
 Key: FLINK-17684
 URL: https://issues.apache.org/jira/browse/FLINK-17684
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1, statefun-2.1.0


The end-to-end tests in Stateful Functions, so far, seems to be quite stable, 
and do not take up much time.

We want to enable them (using the {{-Prun-e2e-tests}} profile) for all builds 
per commit / PR for the time being.
If build time for Stateful Functions does get longer in the future, we may 
still consider other approaches e.g. only running e2e tests with cron jobs.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17605) Consolidate flink.version in Stateful Functions POM files

2020-05-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17605:
---

 Summary: Consolidate flink.version in Stateful Functions POM files
 Key: FLINK-17605
 URL: https://issues.apache.org/jira/browse/FLINK-17605
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Right now, we have definitions of {{flink.version}} property scattered in 
multiple POM files in Stateful Functions. They should be consolidated in the 
root parent POM, as that should not likely change across modules.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17520) Extend CompositeTypeSerializerSnapshot to allow composite serializers to signal migration based on outer configuration

2020-05-05 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17520:
---

 Summary: Extend CompositeTypeSerializerSnapshot to allow composite 
serializers to signal migration based on outer configuration
 Key: FLINK-17520
 URL: https://issues.apache.org/jira/browse/FLINK-17520
 Project: Flink
  Issue Type: Improvement
  Components: API / Type Serialization System
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Compatibility of composite serializers is governed by the overall resolved 
compatibility of all its nested serializers, as well as any additional 
configuration (or what we call the "outer configuration" or "outer snapshot").

The compatibility resolution logic for these composite serializers is 
implemented in the {{CompositeTypeSerializerSnapshot}} abstract class.

One current limitation of this base class is that the implementation assumes 
that the outer configuration is always either compatible, or incompatible.

We should relax this to also allow signaling migration, purely based on the 
outer configuration. This is already a requirement by FLINK-16998.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17519) Add Java State Bootstrapping E2E test for Stateful Functions

2020-05-05 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17519:
---

 Summary: Add Java State Bootstrapping E2E test for Stateful 
Functions
 Key: FLINK-17519
 URL: https://issues.apache.org/jira/browse/FLINK-17519
 Project: Flink
  Issue Type: Sub-task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1, statefun-2.1.0


Add an Stateful Functions E2E test that writes a savepoint using the state 
bootstrapping API, which is compatible to be restored by the greeter example.

Then, deploy a Stateful Functions app using the 
{{StatefulFunctionsAppContainers}} and restoring from the written savepoint.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17518) Add HTTP-based request reply protocol E2E test for Stateful Functions

2020-05-05 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17518:
---

 Summary: Add HTTP-based request reply protocol E2E test for 
Stateful Functions
 Key: FLINK-17518
 URL: https://issues.apache.org/jira/browse/FLINK-17518
 Project: Flink
  Issue Type: Sub-task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1, statefun-2.1.0


The E2E test should contain of a standalone deployed containerized remote 
function, e.g. using the Python SDK + Flask, as well as a Flink Stateful 
Functions cluster deployed using the {{StatefulFunctionsAppsContainers}} 
utility.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17517) Add failure recovery / exactly-once E2E for Stateful Functions

2020-05-05 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17517:
---

 Summary: Add failure recovery / exactly-once E2E for Stateful 
Functions
 Key: FLINK-17517
 URL: https://issues.apache.org/jira/browse/FLINK-17517
 Project: Flink
  Issue Type: Sub-task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1, statefun-2.1.0


Implementation should be based on top of the {{StatefulFunctionsAppContainers}} 
test containers utility.

The verification should write some records to a Stateful Functions app (via a 
Kafka ingress), simulate failure by restarting containers, and assert that the 
result is not corrupt.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17516) Add more end-to-end tests for Stateful Functions

2020-05-05 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17516:
---

 Summary: Add more end-to-end tests for Stateful Functions
 Key: FLINK-17516
 URL: https://issues.apache.org/jira/browse/FLINK-17516
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.1.0


Umbrella ticket to track adding a few more end-to-end tests for Stateful 
Functions.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-17060) "{flink}" isn't being replaced by the Apache Flink trademark in Stateful Functions docs

2020-04-08 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-17060:
---

 Summary: "{flink}" isn't being replaced by the Apache Flink 
trademark in Stateful Functions docs
 Key: FLINK-17060
 URL: https://issues.apache.org/jira/browse/FLINK-17060
 Project: Flink
  Issue Type: Bug
  Components: Documentation, Stateful Functions
Affects Versions: statefun-2.0.0
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1, statefun-2.1.0


See 
https://ci.apache.org/projects/flink/flink-statefun-docs-master/sdk/modules.html#embedded-module



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16985) Specify job names for Stateful Functions examples

2020-04-04 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16985:
---

 Summary: Specify job names for Stateful Functions examples
 Key: FLINK-16985
 URL: https://issues.apache.org/jira/browse/FLINK-16985
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1


The StateFun examples all use the default job name "StatefulFunctions".
It would be nice if they had specific job names, like "Greeter Example" or 
"Shopping Cart Example", etc.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16928) Switch back to new scheduler in Stateful Functions

2020-04-01 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16928:
---

 Summary: Switch back to new scheduler in Stateful Functions
 Key: FLINK-16928
 URL: https://issues.apache.org/jira/browse/FLINK-16928
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Affects Versions: statefun-2.0.0
Reporter: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1


This JIRA tracks switching back to using the new scheduler in Stateful 
Functions.
We will be temporarily using the legacy scheduler in StateFun 2.0.0 due to 
FLINK-16927.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16927) Stateful Function jobs fail to restore after losing task slots using the new Flink scheduler

2020-04-01 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16927:
---

 Summary: Stateful Function jobs fail to restore after losing task 
slots using the new Flink scheduler
 Key: FLINK-16927
 URL: https://issues.apache.org/jira/browse/FLINK-16927
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Affects Versions: statefun-2.0.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The following exception is being thrown indefinitely once a worker is lost:
{code}
org.apache.flink.util.FlinkException: Multi task slot is not local and, thus, 
does not fulfill the co-location constraint.
{code}

This is caused by FLINK-16139, which is fixed in Flink 1.10.1.

To unblock the release for Stateful Functions 2.0.0, which depends on Flink 
1.10.0,
for StateFun 2.0.0 we can use the old legacy scheduler for the time being.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16902) commons-codec dependency pulls in LICENSE.txt that should be excluded

2020-03-31 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16902:
---

 Summary: commons-codec dependency pulls in LICENSE.txt that should 
be excluded
 Key: FLINK-16902
 URL: https://issues.apache.org/jira/browse/FLINK-16902
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Affects Versions: statefun-2.0.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


This should be excluded from the {{statefun-flink-distribution}} packaging.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16901) Flink Kinesis connector NOTICE should have contents of AWS KPL's THIRD_PARTY_NOTICES file manually merged in

2020-03-31 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16901:
---

 Summary: Flink Kinesis connector NOTICE should have contents of 
AWS KPL's THIRD_PARTY_NOTICES file manually merged in
 Key: FLINK-16901
 URL: https://issues.apache.org/jira/browse/FLINK-16901
 Project: Flink
  Issue Type: Improvement
  Components: Connectors / Kinesis
Affects Versions: 1.10.0
Reporter: Tzu-Li (Gordon) Tai


The Flink Kinesis connector artifact bundles AWS KPL's 
[THIRD_PARTY_NOTICES|https://github.com/awslabs/amazon-kinesis-producer/blob/master/THIRD_PARTY_NOTICES]
 under the {{META-INF}} folder.

The contents of this should be manually merged into the artifact's own NOTICE 
file, and the {{THIRD_PARTY_NOTICES}} file itself excluded.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16900) Exclude NOTCE and LICENSE files of Kafka dependencies for statefun-flink-distribution

2020-03-31 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16900:
---

 Summary: Exclude NOTCE and LICENSE files of Kafka dependencies for 
statefun-flink-distribution
 Key: FLINK-16900
 URL: https://issues.apache.org/jira/browse/FLINK-16900
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.0


As how we do it in the {{flink-sql-connector-kafka}} modules, the NOTICE and 
LICENSE files pulled in from the Kafka dependencies of 
{{statefun-flink-distribution}} and {{statefun-ridesharing-example-simulator}} 
should be excluded from packaging.

They do not contain any relevant, as it cites a binary dependency on jersey, 
but this is neither reflected in the dependency graph, nor are any jersey files 
bundled.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16880) Adapt Dockerfiles from flink-statefun to be added to flink-statefun-docker

2020-03-31 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16880:
---

 Summary: Adapt Dockerfiles from flink-statefun to be added to 
flink-statefun-docker
 Key: FLINK-16880
 URL: https://issues.apache.org/jira/browse/FLINK-16880
 Project: Flink
  Issue Type: Task
  Components: Release System / Docker, Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.0


The scripts under {{tools/docker/}} in the flink-statefun repo contains scripts 
that prepare the build context for building snapshot StateFun images that we 
use for development purposes.

Those can be adapted so that they may be used for submission to the Docker Hub 
official images repo:
- The build context should be readily in shape as is in the Dockerfile repo, 
instead of relying on a build script 
- {{statefun-flink-distribution}} and {{statefun-flink-core}} jars should be 
downloaded from Maven + signature verification needs to be performed
- We need some tooling in place that allows us to automate the release workflow 
of adding a new version for the images. We should be able to adapt those from 
the existing Flink Dockerfiles repo.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16879) Disable the source-release-assembly execution goal when using the apache-release build profile

2020-03-31 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16879:
---

 Summary: Disable the source-release-assembly execution goal when 
using the apache-release build profile
 Key: FLINK-16879
 URL: https://issues.apache.org/jira/browse/FLINK-16879
 Project: Flink
  Issue Type: Task
  Components: Release System, Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0.1, statefun-2.1.0


The {{apache-release}} profile defined in the Apache Parent POM defines a 
{{source-release-assembly}} execution that packages a source release 
distribution to be published to Maven.

We should disable this, because we use our own tools to package source release 
distributions.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16843) Python SDK distribution is missing LICENSE and NOTICE files

2020-03-28 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16843:
---

 Summary: Python SDK distribution is missing LICENSE and NOTICE 
files
 Key: FLINK-16843
 URL: https://issues.apache.org/jira/browse/FLINK-16843
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Affects Versions: statefun-2.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0


The Python SDK distributions for Stateful Functions do not bundle any LICENSE 
or NOTICE files.

This should be fixed, as these are required to be included in all ASF-released 
distributions.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16842) Ridesharing example simulator built artifact is missing NOTICE / LICENSE for bundled dependencies

2020-03-28 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16842:
---

 Summary: Ridesharing example simulator built artifact is missing 
NOTICE / LICENSE for bundled dependencies
 Key: FLINK-16842
 URL: https://issues.apache.org/jira/browse/FLINK-16842
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Affects Versions: statefun-2.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0


The {{statefun-ridesharing-example-simulator}} artifact bundles {{spring-boot}} 
as a dependency, which in turn pulls in some other dependencies that are 
non-ASLv2.

We should add NOTICE / LICENSE files to the built artifact for those.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16841) Stateful Function artifacts jars should not bundle proto sources

2020-03-28 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16841:
---

 Summary: Stateful Function artifacts jars should not bundle proto 
sources
 Key: FLINK-16841
 URL: https://issues.apache.org/jira/browse/FLINK-16841
 Project: Flink
  Issue Type: Bug
  Components: Build System, Stateful Functions
Affects Versions: statefun-2.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai
 Fix For: statefun-2.0


These protobuf definition files are being bundled in built artifacts:
{code}
google/protobuf/any.proto
google/protobuf/api.proto
google/protobuf/descriptor.proto
google/protobuf/duration.proto
google/protobuf/empty.proto
google/protobuf/field_mask.proto
google/protobuf/source_context.proto
google/protobuf/struct.proto
google/protobuf/timestamp.proto
google/protobuf/type.proto
google/protobuf/wrappers.proto
{code}

This is caused by the {{addProtoSources}} configuration of the 
{{protoc-jar-maven-plugin}}.

We should remove those, because:
- Bundling those will require licensing acknowledgement to Protobuf in our 
artifacts.
- Those definition files are not used directly by Stateful Functions at all.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16838) Stateful Functions Quickstart archetype Dockerfile should reference a specific version tag

2020-03-27 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16838:
---

 Summary: Stateful Functions Quickstart archetype Dockerfile should 
reference a specific version tag
 Key: FLINK-16838
 URL: https://issues.apache.org/jira/browse/FLINK-16838
 Project: Flink
  Issue Type: Bug
  Components: Stateful Functions
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Currently, the quickstart archetype provides a skeleton Dockerfile that always 
builds on top of the latest image:
{code}
FROM statefun
{code}

While it happens to work for the first release since the `latest` tag will 
(coincidentally) point to the correct version,
once we have multiple releases this will no longer be correct.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16738) Add convenience Kinesis generic egress record builder to the Python SDK

2020-03-23 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16738:
---

 Summary: Add convenience Kinesis generic egress record builder to 
the Python SDK
 Key: FLINK-16738
 URL: https://issues.apache.org/jira/browse/FLINK-16738
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Affects Versions: statefun-2.0
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


Similar to the {{kafka_egress_record}} builder method, we're missing a 
counterpart for the Kinesis generic egress in the StateFun Python SDK.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16706) Update Stateful Functions master branch version to 2.0-SNAPSHOT

2020-03-22 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16706:
---

 Summary: Update Stateful Functions master branch version to 
2.0-SNAPSHOT
 Key: FLINK-16706
 URL: https://issues.apache.org/jira/browse/FLINK-16706
 Project: Flink
  Issue Type: Task
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


As discussed in 
http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Update-on-Flink-Stateful-Functions-amp-what-are-the-next-steps-td38646.html,

the community wants the next (and first Apache-endorsed) Stateful Functions 
release number to be 2.0.

We should update the master branch snapshot version, as well as the {{Affects 
Version}} and {{Fixed Version}} fields of all Stateful Functions JIRAs.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16680) Add documentation for Stateful Function's State Bootstrapping API

2020-03-19 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16680:
---

 Summary: Add documentation for Stateful Function's State 
Bootstrapping API
 Key: FLINK-16680
 URL: https://issues.apache.org/jira/browse/FLINK-16680
 Project: Flink
  Issue Type: Task
  Components: Documentation, Stateful Functions
Affects Versions: statefun-1.1
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The documentation of StateFun is missing documentation for its State 
Bootstrapping API.

I propose to initially add it as a sub-page under the "Deployment and 
Operations" category:
https://ci.apache.org/projects/flink/flink-statefun-docs-master/deployment_operations/index.html



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16569) Allow empty keys in Kafka egress messages for Statefun Python SDK

2020-03-12 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16569:
---

 Summary: Allow empty keys in Kafka egress messages for Statefun 
Python SDK
 Key: FLINK-16569
 URL: https://issues.apache.org/jira/browse/FLINK-16569
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Affects Versions: statefun-1.1
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The generic YAML-ized Kafka egress does allow messages to not have keys defined.
However, the convenience Kafka egress messages builder in the Python SDK 
requires keys to always be set.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16558) Reword Stateful Functions doc's tagline

2020-03-11 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16558:
---

 Summary: Reword Stateful Functions doc's tagline 
 Key: FLINK-16558
 URL: https://issues.apache.org/jira/browse/FLINK-16558
 Project: Flink
  Issue Type: Task
  Components: Documentation, Stateful Functions
Affects Versions: statefun-1.1
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The current tagline is "A framework for stateful distributed applications by 
the original creators of Apache FlinkĀ®."

The part about "by the original creators of Apache Flink" reads a bit 
out-of-place now, since the project is now maintained by the Apache Flink 
community.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16557) Document YAML-ized Kafka egresses / ingresses in Stateful Functions documentation

2020-03-11 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16557:
---

 Summary: Document YAML-ized Kafka egresses / ingresses in Stateful 
Functions documentation
 Key: FLINK-16557
 URL: https://issues.apache.org/jira/browse/FLINK-16557
 Project: Flink
  Issue Type: Task
  Components: Stateful Functions
Affects Versions: statefun-1.1
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The Stateful Functions documentation is still missing information about 
YAML-ized egresses / ingresses.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16520) Move Kafka client properties resolution in KafkaSinkProvider to KafkaEgressBuilder

2020-03-10 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16520:
---

 Summary: Move Kafka client properties resolution in 
KafkaSinkProvider to KafkaEgressBuilder
 Key: FLINK-16520
 URL: https://issues.apache.org/jira/browse/FLINK-16520
 Project: Flink
  Issue Type: Improvement
  Components: Stateful Functions
Affects Versions: statefun-1.1
Reporter: Tzu-Li (Gordon) Tai


We've moved Kafka client properties resolution from the {{KafkaSourceProvider}} 
to be consolidated in the {{KafkaIngressBuilder}} in FLINK-15769.

The same should also be done for the producer side, i.e. for 
{{KafkaSinkProvider}}, by moving the properties resolution logic to 
{{KafkaEgressBuilder}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (FLINK-16518) Stateful Function's KafkaSinkProvider should use `setProperty` instead of `put` for resolving client properties

2020-03-09 Thread Tzu-Li (Gordon) Tai (Jira)
Tzu-Li (Gordon) Tai created FLINK-16518:
---

 Summary: Stateful Function's KafkaSinkProvider should use 
`setProperty` instead of `put` for resolving client properties
 Key: FLINK-16518
 URL: https://issues.apache.org/jira/browse/FLINK-16518
 Project: Flink
  Issue Type: Bug
Reporter: Tzu-Li (Gordon) Tai
Assignee: Tzu-Li (Gordon) Tai


The {{put}} method is strongly discourage to be used on {{Properties}} as a bad 
practice, since it allows putting non-string values.

This has already caused a bug, where a long was put into the properties, while 
Kafka was expecting an integer:
{code}
org.apache.kafka.common.config.ConfigException: Invalid value 10 for 
configuration transaction.timeout.ms: Expected value to be a 32-bit integer, 
but it was a java.lang.Long
at 
org.apache.kafka.common.config.ConfigDef.parseType(ConfigDef.java:669)
at 
org.apache.kafka.common.config.ConfigDef.parseValue(ConfigDef.java:471)
at org.apache.kafka.common.config.ConfigDef.parse(ConfigDef.java:464)
at 
org.apache.kafka.common.config.AbstractConfig.(AbstractConfig.java:62)
at 
org.apache.kafka.common.config.AbstractConfig.(AbstractConfig.java:75)
at 
org.apache.kafka.clients.producer.ProducerConfig.(ProducerConfig.java:396)
at 
org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:326)
at 
org.apache.kafka.clients.producer.KafkaProducer.(KafkaProducer.java:298)
at 
org.apache.flink.streaming.connectors.kafka.internal.FlinkKafkaInternalProducer.(FlinkKafkaInternalProducer.java:76)
{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


  1   2   3   4   >