This is an automated email from the ASF dual-hosted git repository.
lushiji pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new 528f373aac Recycle LongWrapper finally (#4007)
528f373aac is described below
commit 528f373aac0afd5bfe71baa2922cbeab4fedf4ac
Author: houxiaoyu <[email protected]>
AuthorDate: Mon Jul 10 10:29:19 2023 +0800
Recycle LongWrapper finally (#4007)
---
.../bookie/storage/ldb/LedgerMetadataIndex.java | 52 ++++++++++++----------
1 file changed, 29 insertions(+), 23 deletions(-)
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java
index cf6cbfcdc2..235b554988 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/storage/ldb/LedgerMetadataIndex.java
@@ -299,38 +299,44 @@ public class LedgerMetadataIndex implements Closeable {
public void flush() throws IOException {
LongWrapper key = LongWrapper.get();
- int updatedLedgers = 0;
- Entry<Long, LedgerData> entry;
- while ((entry = pendingLedgersUpdates.poll()) != null) {
- key.set(entry.getKey());
- byte[] value = entry.getValue().toByteArray();
- ledgersDb.put(key.array, value);
- ++updatedLedgers;
- }
+ try {
+ int updatedLedgers = 0;
+ Entry<Long, LedgerData> entry;
+ while ((entry = pendingLedgersUpdates.poll()) != null) {
+ key.set(entry.getKey());
+ byte[] value = entry.getValue().toByteArray();
+ ledgersDb.put(key.array, value);
+ ++updatedLedgers;
+ }
- if (log.isDebugEnabled()) {
- log.debug("Persisting updates to {} ledgers", updatedLedgers);
- }
+ if (log.isDebugEnabled()) {
+ log.debug("Persisting updates to {} ledgers", updatedLedgers);
+ }
- ledgersDb.sync();
- key.recycle();
+ ledgersDb.sync();
+ } finally {
+ key.recycle();
+ }
}
public void removeDeletedLedgers() throws IOException {
LongWrapper key = LongWrapper.get();
- int deletedLedgers = 0;
- for (Long ledgerId : pendingDeletedLedgers) {
- key.set(ledgerId);
- ledgersDb.delete(key.array);
- }
+ try {
+ int deletedLedgers = 0;
+ for (Long ledgerId : pendingDeletedLedgers) {
+ key.set(ledgerId);
+ ledgersDb.delete(key.array);
+ }
- if (log.isDebugEnabled()) {
- log.debug("Persisting deletes of ledgers {}", deletedLedgers);
- }
+ if (log.isDebugEnabled()) {
+ log.debug("Persisting deletes of ledgers {}", deletedLedgers);
+ }
- ledgersDb.sync();
- key.recycle();
+ ledgersDb.sync();
+ } finally {
+ key.recycle();
+ }
}
private ReentrantLock lockForLedger(long ledgerId) {