You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tz...@apache.org on 2020/07/28 08:09:29 UTC

[flink-statefun] branch master updated (289c30e -> d22a448)

This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git.


    from 289c30e  [FLINK-17954] [core] Demux legacy remote function state on restore
     new 7abe0a4  [hotfix] [docs] Fix typos in python_walkthrough.md
     new d1a1d31  [hotfix] [docs] Add extension in project-setup.md
     new 65b83dd  [hotfix] [docs] Make differences sub sections in application-building-blocks.md
     new e8e5b34  [hotfix] [docs] Fix typos in application-building-blocks.md
     new ea7c3f6  [hotfix] [docs] Fix typos in java_walkthrough.md
     new e875388  [hotfix] [docs] Fix typos in distributed_architecture.md
     new a6ef6eb  [hotfix] [docs] Fix typos in logical.md
     new 2401396  [hotfix] [docs] Fix typo in packaging.md
     new 5d15efc  [hotfix] [docs] Fix typo in java.md
     new d22a448  [hotfix] [docs] Fix typo in modules.md

The 10 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 docs/concepts/application-building-blocks.md | 10 ++++----
 docs/concepts/distributed_architecture.md    |  4 ++--
 docs/concepts/logical.md                     | 10 ++++----
 docs/deployment-and-operations/packaging.md  |  2 +-
 docs/getting-started/java_walkthrough.md     |  7 ++++--
 docs/getting-started/project-setup.md        |  2 +-
 docs/getting-started/python_walkthrough.md   | 18 +++++++-------
 docs/sdk/java.md                             | 36 ++++++++++++++--------------
 docs/sdk/modules.md                          |  4 ++--
 9 files changed, 49 insertions(+), 44 deletions(-)


[flink-statefun] 01/10: [hotfix] [docs] Fix typos in python_walkthrough.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit 7abe0a417d723de8257d4a32a96f9fc858606e84
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 10:15:03 2020 +0200

    [hotfix] [docs] Fix typos in python_walkthrough.md
    
    * Fix typos
    * Make snippets consistent
    * Add link to Python SDK in further work section
---
 docs/getting-started/python_walkthrough.md | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/docs/getting-started/python_walkthrough.md b/docs/getting-started/python_walkthrough.md
index cf8ef65..920010d 100644
--- a/docs/getting-started/python_walkthrough.md
+++ b/docs/getting-started/python_walkthrough.md
@@ -170,16 +170,16 @@ from statefun import StatefulFunctions
 functions = StatefulFunctions()
 
 @functions.bind("example/greeter")
-def greet(context, message: GreetRequest):
+def greet(context, greet_request: GreetRequest):
     response = GreetResponse()
-    response.name = message.name
-    response.greeting = "Hello {}".format(message.name)
+    response.name = greet_request.name
+    response.greeting = "Hello {}".format(greet_request.name)
     
-    egress_message = kafka_egress_record(topic="greetings", key=message.name, value=response)
+    egress_message = kafka_egress_record(topic="greetings", key=greet_request.name, value=response)
     context.pack_and_send_egress("example/greets", egress_message)
 {% endhighlight %} 
 
-For each message, a response is constructed and sent to a kafka topic call `greetings` partitioned by `name`.
+For each message, a response is constructed and sent to a Kafka topic called `greetings` partitioned by `name`.
 The `egress_message` is sent to a an `egress` named `example/greets`.
 This identifier points to a particular Kafka cluster and is configured on deployment below.
 
@@ -211,7 +211,7 @@ For each user, functions can now track how many times they have been seen.
 
 {% highlight python %}
 @functions.bind("example/greeter")
-def greet(context, greet_message: GreetRequest):
+def greet(context, greet_request: GreetRequest):
     state = context.state('seen_count').unpack(SeenCount)
     if not state:
         state = SeenCount()
@@ -226,7 +226,7 @@ def greet(context, greet_message: GreetRequest):
     context.pack_and_send_egress("example/greets", egress_message)
 {% endhighlight %}
 
-The state, `seen_count` is always scoped to the current name so it can track each user independently.
+The state `seen_count` is always scoped to the current name so it can track each user independently.
 
 ## Wiring It All Together
 
@@ -243,7 +243,7 @@ from statefun import RequestReplyHandler
 
 functions = StatefulFunctions()
 
-@functions.bind("walkthrough/greeter")
+@functions.bind("example/greeter")
 def greeter(context, message: GreetRequest):
     pass
 
@@ -362,6 +362,8 @@ docker-compose logs -f event-generator
 This Greeter never forgets a user.
 Try and modify the function so that it will reset the ``seen_count`` for any user that spends more than 60 seconds without interacting with the system.
 
+Check out the [Python SDK]({{ site.baseurl }}/sdk/python.html) page for more information on how to achieve this.
+
 ## Full Application 
 
 {% highlight python %}


[flink-statefun] 06/10: [hotfix] [docs] Fix typos in distributed_architecture.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit e8753886c50eac889ff86df34c67c68138c7caa4
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 11:01:51 2020 +0200

    [hotfix] [docs] Fix typos in distributed_architecture.md
---
 docs/concepts/distributed_architecture.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/concepts/distributed_architecture.md b/docs/concepts/distributed_architecture.md
index 85b8496..8301e07 100755
--- a/docs/concepts/distributed_architecture.md
+++ b/docs/concepts/distributed_architecture.md
@@ -52,7 +52,7 @@ In addition to the Apache Flink processes, a full deployment requires [ZooKeeper
 
 ## Logical Co-location, Physical Separation
 
-A core principle of many Stream Processors is that application logic and the application state must be co-located. That approach is the basis for their out-of-the box consistency. Stateful Function takes a unique approach to that by *logically co-locating* state and compute, but allowing to *physically separate* them.
+A core principle of many Stream Processors is that application logic and the application state must be co-located. That approach is the basis for their out-of-the box consistency. Stateful Functions takes a unique approach to that by *logically co-locating* state and compute, but allowing to *physically separate* them.
 
   - *Logical co-location:* Messaging, state access/updates and function invocations are managed tightly together, in the same way as in Flink's DataStream API. State is sharded by key, and messages are routed to the state by key. There is a single writer per key at a time, also scheduling the function invocations.
 
@@ -67,7 +67,7 @@ The stateful functions themselves can be deployed in various ways that trade off
 
 *Remote Functions* use the above-mentioned principle of *physical separation* while maintaining *logical co-location*. The state/messaging tier (i.e., the Flink processes) and the function tier are deployed, managed, and scaled independently.
 
-Function invocations happen through an HTTP / gRPC protocol and go through a service that routes invocation requests to any available endpoint, for example a Kubernetes (load-balancing) service, the AWS request gateway for Lambda, etc. Because invocations are self-contained (contain message, state, access to timers, etc.) the target functions can treated like any stateless application.
+Function invocations happen through an HTTP / gRPC protocol and go through a service that routes invocation requests to any available endpoint, for example a Kubernetes (load-balancing) service, the AWS request gateway for Lambda, etc. Because invocations are self-contained (contain message, state, access to timers, etc.) the target functions can be treated like any stateless application.
 
 <p class="text-center">
 	<img width="80%" src="{{ site.baseurl }}/fig/concepts/arch_funs_remote.svg"/>


[flink-statefun] 10/10: [hotfix] [docs] Fix typo in modules.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit d22a4484584a3eac3b4437baee00f523308183b5
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 11:02:41 2020 +0200

    [hotfix] [docs] Fix typo in modules.md
---
 docs/sdk/modules.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/sdk/modules.md b/docs/sdk/modules.md
index 5a33482..bea3aa6 100644
--- a/docs/sdk/modules.md
+++ b/docs/sdk/modules.md
@@ -24,7 +24,7 @@ specific language governing permissions and limitations
 under the License.
 -->
 
-Stateful Function applications are composed of one or more ``Modules``.
+Stateful Functions applications are composed of one or more modules.
 A module is a bundle of functions that are loaded by the runtime and available to be messaged.
 Functions from all loaded modules are multiplexed and free to message each other arbitrarily.
 
@@ -72,7 +72,7 @@ org.apache.flink.statefun.docs.BasicFunctionModule
 
 Remote modules are run as external processes from the Apache Flink® runtime; in the same container, as a sidecar, or other external location.
 
-This module type can support any number of language SDK's.
+This module type can support any number of language SDKs.
 Remote modules are registered with the system via ``YAML`` configuration files.
 
 ### Specification


[flink-statefun] 07/10: [hotfix] [docs] Fix typos in logical.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit a6ef6ebf3c2bdc3908f820a9d4e77e50aae34dd8
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 11:02:08 2020 +0200

    [hotfix] [docs] Fix typos in logical.md
---
 docs/concepts/logical.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/docs/concepts/logical.md b/docs/concepts/logical.md
index f7a462c..4ed47fe 100644
--- a/docs/concepts/logical.md
+++ b/docs/concepts/logical.md
@@ -34,8 +34,8 @@ Users are encouraged to model their applications as granularly as possible, base
 ## Function Address
 
 In a local environment, the address of an object is the same as a reference to it.
-But in a Stateful Function's application, function instances are virtual and their runtime location is not exposed to the user.
-Instead, an ``Address`` is used to reference a specific stateful function in the system..
+But in a Stateful Functions application, function instances are virtual and their runtime location is not exposed to the user.
+Instead, an ``Address`` is used to reference a specific stateful function in the system.
 
 <p class="text-center">
     <img width="80%" src="{{ site.baseurl }}/fig/concepts/address.svg"/>
@@ -43,14 +43,14 @@ Instead, an ``Address`` is used to reference a specific stateful function in the
 
 An address is made of two components, a ``FunctionType`` and ``ID``.
 A function type is similar to a class in an object-oriented language; it declares what sort of function the address references.
-The id is a primary key, which scopes the function call to a specific instance of the function type.
+The ID is a primary key, which scopes the function call to a specific instance of the function type.
 
 When a function is being invoked, all actions - including reads and writes of persisted states - are scoped to the current address.
 
-For example, imagine there was a Stateful Function application to track the inventory of a warehouse.
+For example, imagine there was a Stateful Functions application to track the inventory of a warehouse.
 One possible implementation could include an ``Inventory`` function that tracks the number units in stock for a particular item; this would be the function type.
 There would then be one logical instance of this type for each SKU the warehouse manages.
-If it were clothing, there might be an instance for shirts and another for pants; "shirt" and "pant" would be two ids.
+If it were clothing, there might be an instance for shirts and another for pants; "shirt" and "pant" would be two IDs.
 Each instance may be interacted with and messaged independently.
 The application is free to create as many instances as there are types of items in inventory.
 


[flink-statefun] 03/10: [hotfix] [docs] Make differences sub sections in application-building-blocks.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit 65b83ddb504dc0ac6e56bb761f6430a7d8f5511f
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 10:13:21 2020 +0200

    [hotfix] [docs] Make differences sub sections in application-building-blocks.md
    
    These sections are treated as bullet points about stateful functions. Thus, it
    feels more natural to have them as subsections.
---
 docs/concepts/application-building-blocks.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/concepts/application-building-blocks.md b/docs/concepts/application-building-blocks.md
index 96a8461..e2861df 100644
--- a/docs/concepts/application-building-blocks.md
+++ b/docs/concepts/application-building-blocks.md
@@ -55,7 +55,7 @@ Instead of building up a static dataflow DAG, these functions can communicate wi
 If you are familiar with actor programming, this does share certain similarities in its ability to dynamically message between components.
 However, there are a number of significant differences.
 
-## Persisted States
+### Persisted States
 
 The first is that all functions have locally embedded state, known as persisted states.
 
@@ -66,7 +66,7 @@ The first is that all functions have locally embedded state, known as persisted
 One of Apache Flink's core strengths is its ability to provide fault-tolerant local state.
 When inside a function, while it is performing some computation, you are always working with local state in local variables.
 
-## Fault Tolerance
+### Fault Tolerance
 
 For both state and messaging, Stateful Function's is still able to provide the exactly-once guarantees users expect from a modern data processessing framework.
 
@@ -78,7 +78,7 @@ In the case of failure, the entire state of the world (both persisted states and
 
 These guarantees are provided with no database required, instead Stateful Function's leverages Apache Flink's proven snapshotting mechanism.
 
-## Event Egress
+### Event Egress
 
 Finally, applications can output data to external systems via event egress's.
 


[flink-statefun] 02/10: [hotfix] [docs] Add extension in project-setup.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit d1a1d3107bd03f076b58aaf9299c06099d540c9c
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 10:18:37 2020 +0200

    [hotfix] [docs] Add extension in project-setup.md
---
 docs/getting-started/project-setup.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/getting-started/project-setup.md b/docs/getting-started/project-setup.md
index b670de1..34fc281 100644
--- a/docs/getting-started/project-setup.md
+++ b/docs/getting-started/project-setup.md
@@ -71,7 +71,7 @@ $ tree statefun-quickstart/
 The project contains four files:
 
 * ``pom.xml``: A pom file with the basic dependencies to start building a Stateful Functions application.
-* ``Module``: The entry point for the application.
+* ``Module.java``: The entry point for the application.
 * ``org.apache.flink.statefun.sdk.spi.StatefulFunctionModule``: A service entry for the runtime to find the module.
 * ``Dockerfile``: A Dockerfile to quickly build a Stateful Functions image ready to deploy.
 


[flink-statefun] 08/10: [hotfix] [docs] Fix typo in packaging.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit 240139661e737e1a9f9ad6e29967c7beeb24be7d
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 11:02:22 2020 +0200

    [hotfix] [docs] Fix typo in packaging.md
---
 docs/deployment-and-operations/packaging.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/deployment-and-operations/packaging.md b/docs/deployment-and-operations/packaging.md
index 6e34f1d..6c9e5ae 100644
--- a/docs/deployment-and-operations/packaging.md
+++ b/docs/deployment-and-operations/packaging.md
@@ -50,7 +50,7 @@ COPY module.yaml /opt/statefun/modules/remote/module.yaml
 {% if site.is_stable %}
 <div class="alert alert-info">
 	The Flink community is currently waiting for the official Docker images to be published to Docker Hub.
-	In the meantime, Ververica has volunteered to make Stateful Function's images available via their public registry: 
+	In the meantime, Ververica has volunteered to make Stateful Functions' images available via their public registry: 
 
 	<code class="language-dockerfile" data-lang="dockerfile">
 		<span class="k">FROM</span><span class="s"> ververica/flink-statefun:{{ site.version }}</span>


[flink-statefun] 09/10: [hotfix] [docs] Fix typo in java.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit 5d15efcdd92d078941d5d8504a8aabb641109bca
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 11:02:32 2020 +0200

    [hotfix] [docs] Fix typo in java.md
---
 docs/sdk/java.md | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/docs/sdk/java.md b/docs/sdk/java.md
index 05e7192..b5903f5 100644
--- a/docs/sdk/java.md
+++ b/docs/sdk/java.md
@@ -27,7 +27,7 @@ under the License.
 Stateful functions are the building blocks of applications; they are atomic units of isolation, distribution, and persistence.
 As objects, they encapsulate the state of a single entity (e.g., a specific user, device, or session) and encode its behavior.
 Stateful functions can interact with each other, and external systems, through message passing.
-The Java SDK is supported as an [embedded_module]({{ site.baseurl }}/sdk/modules.html#embedded-module).
+The Java SDK is supported as an [embedded module]({{ site.baseurl }}/sdk/modules.html#embedded-module).
 
 To get started, add the Java SDK as a dependency to your application.
 
@@ -96,16 +96,16 @@ public class FnMatchGreeter extends StatefulMatchFunction {
 			.predicate(Employee.class, this::greetEmployee);
 	}
 
-	private void greetManager(Context context, Employee message) {
-		System.out.println("Hello manager " + message.getEmployeeId());
+	private void greetCustomer(Context context, Customer message) {
+		System.out.println("Hello customer " + message.getName());
 	}
 
 	private void greetEmployee(Context context, Employee message) {
 		System.out.println("Hello employee " + message.getEmployeeId());
 	}
 
-	private void greetCustomer(Context context, Customer message) {
-		System.out.println("Hello customer " + message.getName());
+	private void greetManager(Context context, Employee message) {
+		System.out.println("Hello manager " + message.getEmployeeId());
 	}
 }
 {% endhighlight %}
@@ -134,20 +134,20 @@ public class FnMatchGreeterWithCatchAll extends StatefulMatchFunction {
 			.otherwise(this::catchAll);
 	}
 
-	private void catchAll(Context context, Object message) {
-		System.out.println("Hello unexpected message");
+	private void greetCustomer(Context context, Customer message) {
+		System.out.println("Hello customer " + message.getName());
 	}
 
-	private void greetManager(Context context, Employee message) {
-		System.out.println("Hello manager");
+	private void greetEmployee(Context context, Employee message) {
+		System.out.println("Hello employee " + message.getEmployeeId());
 	}
 
-	private void greetEmployee(Context context, Employee message) {
-		System.out.println("Hello employee");
+	private void greetManager(Context context, Employee message) {
+		System.out.println("Hello manager " + message.getEmployeeId());
 	}
 
-	private void greetCustomer(Context context, Customer message) {
-		System.out.println("Hello customer");
+	private void catchAll(Context context, Object message) {
+		System.out.println("Hello unexpected message");
 	}
 }
 {% endhighlight %}
@@ -162,7 +162,7 @@ Finally, if a catch-all exists, it will be executed or an ``IllegalStateExceptio
 
 ## Function Types and Messaging
 
-In Java, function types are defined as a _stringly_ typed reference containing a namespace and name.
+In Java, function types are defined as logical pointers composed of a namespace and name.
 The type is bound to the implementing class in the [module]({{ site.baseurl }}/sdk/modules.html#embedded-module) definition.
 Below is an example function type for the hello world function.
 
@@ -228,7 +228,7 @@ public class FnDelayedMessage implements StatefulFunction {
 ## Completing Async Requests
 
 When interacting with external systems, such as a database or API, one needs to take care that communication delay with the external system does not dominate the application’s total work.
-Stateful Functions allows registering a java ``CompletableFuture`` that will resolve to a value at some point in the future.
+Stateful Functions allows registering a Java ``CompletableFuture`` that will resolve to a value at some point in the future.
 Future's are registered along with a metadata object that provides additional context about the caller.
 
 When the future completes, either successfully or exceptionally, the caller function type and id will be invoked with a ``AsyncOperationResult``.
@@ -303,7 +303,7 @@ The data is always scoped to a specific function type and identifier.
 Below is a stateful function that greets users based on the number of times they have been seen.
 
 <div class="alert alert-info">
-  <strong>Attention:</strong> All <b>PersistedValue</b>, <b>PersistedTable</b>, and <b>PersistedAppendingBuffer</b> fields must be marked with an <b>@Persisted</b> annotation or they will not be made fault tolerant by the runtime.
+  <strong>Attention:</strong> All <b>PersistedValue</b>, <b>PersistedTable</b>, and <b>PersistedAppendingBuffer</b> fields must be marked with a <b>@Persisted</b> annotation or they will not be made fault tolerant by the runtime.
 </div>
 
 {% highlight java %}
@@ -345,7 +345,7 @@ public class FnUserGreeter implements StatefulFunction {
 }
 {% endhighlight %}
 
-Persisted value comes with the right primitive methods to build powerful stateful applications.
+``PersistedValue`` comes with the right primitive methods to build powerful stateful applications.
 Calling ``PersistedValue#get`` will return the current value of an object stored in state, or ``null`` if nothing is set.
 Conversely, ``PersistedValue#set`` will update the value in state and ``PersistedValue#clear`` will delete the value from state.
 
@@ -403,7 +403,7 @@ State TTL configurations are made fault-tolerant by the runtime. In the case of
 ## Function Providers and Dependency Injection
 
 Stateful functions are created across a distributed cluster of nodes.
-``StatefulFunctionProvider`` is a factory class for creating a new instance of a stateful function the first time it is activated.
+``StatefulFunctionProvider`` is a factory class for creating a new instance of a ``StatefulFunction`` the first time it is activated.
 
 {% highlight java %}
 package org.apache.flink.statefun.docs;


[flink-statefun] 04/10: [hotfix] [docs] Fix typos in application-building-blocks.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit e8e5b347e7d6ee52c15726de319419650c8dd1a3
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 10:25:15 2020 +0200

    [hotfix] [docs] Fix typos in application-building-blocks.md
    
    * Plural of egress seems to be egresses (https://en.wiktionary.org/wiki/egress)
---
 docs/concepts/application-building-blocks.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/concepts/application-building-blocks.md b/docs/concepts/application-building-blocks.md
index e2861df..81d7628 100644
--- a/docs/concepts/application-building-blocks.md
+++ b/docs/concepts/application-building-blocks.md
@@ -68,7 +68,7 @@ When inside a function, while it is performing some computation, you are always
 
 ### Fault Tolerance
 
-For both state and messaging, Stateful Function's is still able to provide the exactly-once guarantees users expect from a modern data processessing framework.
+For both state and messaging, Stateful Functions is able to provide the exactly-once guarantees users expect from a modern data processessing framework.
 
 <p class="text-center">
     <img width="80%" src="{{ site.baseurl }}/fig/concepts/statefun-app-fault-tolerance.svg"/>
@@ -80,7 +80,7 @@ These guarantees are provided with no database required, instead Stateful Functi
 
 ### Event Egress
 
-Finally, applications can output data to external systems via event egress's.
+Finally, applications can output data to external systems via event egresses.
 
 <p class="text-center">
     <img width="80%" src="{{ site.baseurl }}/fig/concepts/statefun-app-egress.svg"/>


[flink-statefun] 05/10: [hotfix] [docs] Fix typos in java_walkthrough.md

Posted by tz...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

tzulitai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink-statefun.git

commit ea7c3f690d5f5f9dad3b9abc1a6d8f5c4c5c7c7f
Author: Ufuk Celebi <uf...@ververica.com>
AuthorDate: Tue Jun 30 10:31:42 2020 +0200

    [hotfix] [docs] Fix typos in java_walkthrough.md
    
    * Fix typos
    * Add link to Java SDK in further work section
---
 docs/getting-started/java_walkthrough.md | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/docs/getting-started/java_walkthrough.md b/docs/getting-started/java_walkthrough.md
index cec130a..9f650ce 100644
--- a/docs/getting-started/java_walkthrough.md
+++ b/docs/getting-started/java_walkthrough.md
@@ -93,18 +93,19 @@ private static String greetText(String name, int seen) {
             return String.format("Happy to see you once again %s !", name);
         default:
             return String.format("Hello at the %d-th time %s", seen + 1, name);
+    }
 }
 {% endhighlight %}
 
 ## Routing Messages
 
-To send a user a personalized greeting, the system needs to keep track of how many times it has seen each user so far.
+To send a personalized greeting to a user, the system needs to keep track of how many times it has seen each user so far.
 Speaking in general terms, the simplest solution would be to create one function for every user and independently track the number of times they have been seen. Using most frameworks, this would be prohibitively expensive.
 However, stateful functions are virtual and do not consume any CPU or memory when not actively being invoked.
 That means your application can create as many functions as necessary — in this case, users — without worrying about resource consumption.
 
 Whenever data is consumed from an external system (or [ingress]({{ site.baseurl }}/io-module/index.html#ingress)), it is routed to a specific function based on a given function type and identifier.
-The function type represents the Class of function to be invoked, such as the Greeter function, while the identifier (``GreetRequest#getWho``) scopes the call to a specific virtual instance based on some key.
+The function type represents the class of function to be invoked, such as the Greeter function, while the identifier (``GreetRequest#getWho``) scopes the call to a specific virtual instance based on some key.
 
 {% highlight java %}
 package org.apache.flink.statefun.examples.greeter;
@@ -200,3 +201,5 @@ docker-compose exec kafka-broker kafka-console-consumer.sh \
 
 This Greeter never forgets a user.
 Try and modify the function so that it will reset the ``count`` for any user that spends more than 60 seconds without interacting with the system.
+
+Check out the [Java SDK]({{ site.baseurl }}/sdk/java.html) page for more information on how to achieve this.