jiangpengcheng commented on code in PR #21966:
URL: https://github.com/apache/pulsar/pull/21966#discussion_r1466188662


##########
pulsar-functions/instance/src/main/java/org/apache/pulsar/functions/instance/state/BKStateStoreImpl.java:
##########
@@ -190,4 +191,39 @@ public ByteBuffer get(String key) {
             throw new RuntimeException("Failed to retrieve the state value for 
key '" + key + "'", e);
         }
     }
+
+    @Override
+    public StateValue getStateValue(String key) {
+        try {
+            return result(getStateValueAsync(key));
+        } catch (Exception e) {
+            throw new RuntimeException("Failed to retrieve the state value for 
key '" + key + "'", e);
+        }
+    }
+
+    @Override
+    public CompletableFuture<StateValue> getStateValueAsync(String key) {
+        return 
table.getKv(Unpooled.wrappedBuffer(key.getBytes(UTF_8))).thenApply(
+                data -> {
+                    try {
+                        if (data != null && data.value() != null) {
+                            ByteBuffer result = 
ByteBuffer.allocate(data.value().readableBytes());
+                            data.value().readBytes(result);
+                            // Set position to off the buffer to the 
beginning, since the position after the
+                            // read is going to be end of the buffer
+                            // If we do not rewind to the beginning here, 
users will have to explicitly do
+                            // this in their function code
+                            // in order to use any of the ByteBuffer operations
+                            result.position(0);

Review Comment:
   but the result is a new init `ByteBuffer`, I think its position was 0 before 
reading?



-- 
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