zoltar9264 commented on code in PR #22669:
URL: https://github.com/apache/flink/pull/22669#discussion_r1211024303


##########
flink-state-backends/flink-statebackend-rocksdb/src/main/java/org/apache/flink/contrib/streaming/state/snapshot/RocksDBSnapshotStrategyBase.java:
##########
@@ -395,18 +394,16 @@ public void release() {
     /** Previous snapshot with uploaded sst files. */
     protected static class PreviousSnapshot {
 
-        @Nullable private final Map<StateHandleID, Long> confirmedSstFiles;
+        @Nullable private final Map<StateHandleID, StreamStateHandle> 
confirmedSstFiles;
 
-        protected PreviousSnapshot(@Nullable Map<StateHandleID, Long> 
confirmedSstFiles) {
+        protected PreviousSnapshot(
+                @Nullable Map<StateHandleID, StreamStateHandle> 
confirmedSstFiles) {
             this.confirmedSstFiles = confirmedSstFiles;
         }
 
         protected Optional<StreamStateHandle> getUploaded(StateHandleID 
stateHandleID) {
             if (confirmedSstFiles != null && 
confirmedSstFiles.containsKey(stateHandleID)) {
-                // we introduce a placeholder state handle, that is replaced 
with the
-                // original from the shared state registry (created from a 
previous checkpoint)
-                return Optional.of(
-                        new 
PlaceholderStreamStateHandle(confirmedSstFiles.get(stateHandleID)));

Review Comment:
   ByteStreamStateHandle tends to occupy little memory (no more than 20KB by 
default), and these memory occupations only occur during network transmission. 
When repeated ByteStreamStateHandle is passed to SharedStateRegistry, it will 
be discarded. And, I think we should try to avoid the generation of small files 
(maybe through file aggregation, etc.).
   Using PlaceholderStreamStateHandle makes it difficult to implement 
SharedStateRegisterKey based on physical id, although it can be achieved by 
storing physical id of original StateHandle into PlaceholderStreamStateHandle. 
But I still think removing the PlaceholderStreamStateHandle would make the 
SharedStateRegistry much simpler and clearer. Since I haven't observed 
bottlenecks in ByteStreamStateHandle delivery in job with 2.6TB of state, I 
think the rpc overhead of removing PlaceholderStreamStateHandle is acceptable.
   Is the above explanation acceptable to you @rkhachatryan  ?



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to