Myasuka commented on code in PR #20405: URL: https://github.com/apache/flink/pull/20405#discussion_r940106702
########## flink-state-backends/flink-statebackend-rocksdb/src/main/java/org/apache/flink/contrib/streaming/state/AbstractRocksDBState.java: ########## @@ -223,4 +223,27 @@ public StateIncrementalVisitor<K, N, V> getStateIncrementalVisitor( throw new UnsupportedOperationException( "Global state entry iterator is unsupported for RocksDb backend"); } + + /** + * Similar to decimal addition, add 1 to the last digit to calculate the upper bound. + * + * @param prefix the starting prefix for seek. + * @return end prefix for seek. + */ + protected final byte[] calculateUpperBound(byte[] prefix) { + byte[] upperBound = new byte[prefix.length]; + System.arraycopy(prefix, 0, upperBound, 0, prefix.length); + boolean overFlow = true; + for (int i = prefix.length - 1; i >= 0; i--) { + int unsignedValue = prefix[i] & 0xff; + int result = unsignedValue + 1; + upperBound[i] = (byte) (result & 0xff); + if (result >> 8 == 0) { + overFlow = false; + break; + } + } + Preconditions.checkArgument(!overFlow, "The upper boundary overflows."); Review Comment: @liming30 I'm afraid that you did not get to know what is the upper limit of a single byte. `0x80` can only mean 128 if we have `0x0080` with two bytes. For the single byte, `0x80` means `-128`. The reason why [clipDBWithKeyGroupRange](https://github.com/apache/flink/blob/master/flink-state-backends/flink-statebackend-rocksdb/src/main/java/org/apache/flink/contrib/streaming/state/RocksDBIncrementalCheckpointUtils.java#L128) would not get overflow is that we cannot change the max parallelism during restoring. Thus, we would not make `currentKeyGroupRange.getEndKeyGroup() > targetKeyGroupRange.getEndKeyGroup()` as the previous max parallelism should be smaller than 128. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org