flink-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FLINK-5530) race condition in AbstractRocksDBState#getSerializedValue
Date Fri, 20 Jan 2017 10:47:26 GMT

    [ https://issues.apache.org/jira/browse/FLINK-5530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15831533#comment-15831533

ASF GitHub Bot commented on FLINK-5530:

Github user StephanEwen commented on a diff in the pull request:

    --- Diff: flink-contrib/flink-statebackend-rocksdb/src/main/java/org/apache/flink/contrib/streaming/state/AbstractRocksDBState.java
    @@ -132,55 +132,95 @@ public void setCurrentNamespace(N namespace) {
     		int keyGroup = KeyGroupRangeAssignment.assignToKeyGroup(des.f0, backend.getNumberOfKeyGroups());
    -		writeKeyWithGroupAndNamespace(keyGroup, des.f0, des.f1);
    -		return backend.db.get(columnFamily, keySerializationStream.toByteArray());
    +		// we cannot reuse the keySerializationStream member since this method
    +		// is called concurrently to the other ones and it may thus contain garbage
    +		ByteArrayOutputStreamWithPos tmpKeySerializationStream =
    --- End diff --
    Please try to use the same style as the remainder of the project. I know that every programmer
in the world has figured out the perfect code style and is very opinionated on that ;-)
    Keeping a coherent style in a project is worth a lot and worth compromising...

> race condition in AbstractRocksDBState#getSerializedValue
> ---------------------------------------------------------
>                 Key: FLINK-5530
>                 URL: https://issues.apache.org/jira/browse/FLINK-5530
>             Project: Flink
>          Issue Type: Bug
>          Components: Queryable State
>    Affects Versions: 1.2.0
>            Reporter: Nico Kruber
>            Assignee: Nico Kruber
>            Priority: Blocker
> AbstractRocksDBState#getSerializedValue() uses the same key serialisation stream as the
ordinary state access methods but is called in parallel during state queries thus violating
the assumption of only one thread accessing it. 
> This may lead to either wrong results in queries or corrupt data while queries are executed.

This message was sent by Atlassian JIRA

View raw message