swamirishi commented on code in PR #8203:
URL: https://github.com/apache/ozone/pull/8203#discussion_r2047917698


##########
hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/utils/db/RDBStoreCodecBufferIterator.java:
##########
@@ -84,38 +92,77 @@ CodecBuffer getFromDb() {
     }
   }
 
-  private final Buffer keyBuffer;
-  private final Buffer valueBuffer;
+  private final Stack<RawKeyValue<Buffer>> availableBufferStack;

Review Comment:
   Just because we have initialized a Buffer object it doesn't mean we have 
allocated anything yet. It will still do a lazy allocation. Use of stack will 
minimize if there are not many concurrent threads in lock code block than the 
number of max buffers the allocation that is why it is better to use a stack. 
Moreover stack.pop() is a very cheap operation and the thread would spend more 
time in copying stuff from the rocksdb iterator to the key & value. There would 
be only one thread waiting for a non empty stack which should be fine. There 
should be no contention as well in this case ideally. We need the synchronized 
block only for the published subscriber model, optmize on the wait() & notify()



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


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to