You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/03/13 13:04:00 UTC
[jira] [Commented] (FLINK-8802) Concurrent serialization without
duplicating serializers in state server.
[ https://issues.apache.org/jira/browse/FLINK-8802?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16396910#comment-16396910 ]
ASF GitHub Bot commented on FLINK-8802:
---------------------------------------
GitHub user kl0u opened a pull request:
https://github.com/apache/flink/pull/5691
[FLINK-8802] [QS] Fix concurrent access to non-duplicated serializers.
## What is the purpose of the change
This fixes the problem of multiple threads using the same serializer instance to concurrently deserialize requests.
## Brief change log
Now the `KvStateRegistry` holds a `KvStateEntry` for each registered `InternalKvState` and in that entry we have a cache that holds a copy of the serializer per thread, if the serializer is stateful. If it is stateless, we do not need to copy the serializer.
## Verifying this change
There is a test added in the `KvStateRegistryTest`, the `KvStateRegistryTest#testKvStateEntry()` and also I have tested it with an actual job (but I run it locally).
## Does this pull request potentially affect one of the following parts:
- Dependencies (does it add or upgrade a dependency): no
- The public API, i.e., is any changed class annotated with `@Public(Evolving)`: no
- The serializers: no
- The runtime per-record code paths (performance sensitive): no
- Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: no
- The S3 file system connector: no
## Documentation
- Does this pull request introduce a new feature? no
- If yes, how is the feature documented? not applicable
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/kl0u/flink improved-qs-inv
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/flink/pull/5691.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #5691
----
commit 595a59c30dfc778945c43351edf8dbc2887b6a87
Author: kkloudas <kk...@...>
Date: 2018-03-09T11:05:38Z
[FLINK-8908] Do not create copy when MapSerializer stateless.
commit 1a8c0415cec46ed6683768b793c295ab478b2eb8
Author: kkloudas <kk...@...>
Date: 2018-03-12T11:12:06Z
[FLINK-8928] [QS] Improve server binding error message.
commit 67b6d7ad2d128a14e001afc34eb14cd6c62d90c4
Author: kkloudas <kk...@...>
Date: 2018-03-09T21:47:35Z
[FLINK-8802] [QS] Fix concurrent access to non-duplicated serializers.
commit b86657f630363e59971edd29464130c62bd4b3a7
Author: kkloudas <kk...@...>
Date: 2018-03-12T12:19:23Z
[FLINK-8926] [QS] Shutdown client proxy after test ends.
----
> Concurrent serialization without duplicating serializers in state server.
> -------------------------------------------------------------------------
>
> Key: FLINK-8802
> URL: https://issues.apache.org/jira/browse/FLINK-8802
> Project: Flink
> Issue Type: Bug
> Components: Queryable State
> Affects Versions: 1.5.0
> Reporter: Kostas Kloudas
> Assignee: Kostas Kloudas
> Priority: Blocker
> Fix For: 1.5.0
>
>
> The `getSerializedValue()` may be called by multiple threads but serializers are not duplicated, which may lead to exceptions thrown when a serializer is stateful.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)