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

    https://github.com/apache/flink/pull/5582#discussion_r192331980
  
    --- Diff: 
flink-state-backends/flink-statebackend-rocksdb/src/main/java/org/apache/flink/contrib/streaming/state/RocksDBKeyedStateBackend.java
 ---
    @@ -795,20 +806,241 @@ private void restoreInstance(
                }
     
                /**
    -            * Recovery from local incremental state.
    +            * Recovery from multi incremental states.
    +            * In case of rescaling, this method creates a temporary 
RocksDB instance for a key-groups shard. All contents
    +            * from the temporary instance are copied into the real restore 
instance and then the temporary instance is
    +            * discarded.
                 */
    -           private void restoreInstance(IncrementalLocalKeyedStateHandle 
localKeyedStateHandle) throws Exception {
    +           void restoreFromMultiHandles(Collection<KeyedStateHandle> 
restoreStateHandles) throws Exception {
    +
    +                   KeyGroupRange targetKeyGroupRange = 
stateBackend.keyGroupRange;
    +
    +                   chooseTheBestStateHandleToInit(restoreStateHandles, 
targetKeyGroupRange);
    +
    +                   int targetStartKeyGroup = 
stateBackend.getKeyGroupRange().getStartKeyGroup();
    +                   byte[] targetStartKeyGroupPrefixBytes = new 
byte[stateBackend.keyGroupPrefixBytes];
    --- End diff --
    
    Oh yes, I wanted to pull this array creation out of the `for 
(KeyedStateHandle rawStateHandle : restoreStateHandles) {` but forgot to remove 
the array creation in the loop and replace the `startKeyGroupPrefixBytes` to 
`targetStartKeyGroupPrefixBytes `, nice catch! 👍 


---

Reply via email to