equanz opened a new issue #2854:
URL: https://github.com/apache/bookkeeper/issues/2854


   **BUG REPORT**
   
   ***Describe the bug***
   
   When ScanAndCompareGarbageCollector#removeOverReplicatedledgers is called, 
all of underreplicated ledger locks are still acquired.
   This issue is caused by https://github.com/apache/bookkeeper/pull/2833. In 
this PR, the method uses 
[LedgerUnderreplicationManager#acquireUnderreplicatedLedger](https://github.com/apache/bookkeeper/blob/4ae5b3b5a6bf5a13ea73a2f6157a56ad22ec4ebe/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java#L256)
 and 
[LedgerUnderreplicationManager#releaseUnderreplicatedLedger](https://github.com/apache/bookkeeper/blob/4ae5b3b5a6bf5a13ea73a2f6157a56ad22ec4ebe/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java#L273)
 instead of 
[ZkLedgerUnderreplicationManager#acquireUnderreplicatedLedgerLock](https://github.com/apache/bookkeeper/blob/455ac52360bf98b61f2b498cf35c5dc5acaba82e/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java#L247-L248)
 and 
[ZkLedgerUnderreplicationManager#releaseUnderreplicatedLedgerLock](https://github.com/apache/bookkeeper/blob/455ac52360bf98b
 
61f2b498cf35c5dc5acaba82e/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/ScanAndCompareGarbageCollector.java#L276-L277).
   
   
[ZkLedgerUnderreplicationManager#releaseUnderreplicatedLedger](https://github.com/apache/bookkeeper/blob/4ae5b3b5a6bf5a13ea73a2f6157a56ad22ec4ebe/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/ZkLedgerUnderreplicationManager.java#L621-L641)
 requires ZkLedgerUnderreplicationManager#heldLocks to delete lock node. 
However, 
[ZkLedgerUnderreplicationManager#acquireUnderreplicatedLedger](https://github.com/apache/bookkeeper/blob/4ae5b3b5a6bf5a13ea73a2f6157a56ad22ec4ebe/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/ZkLedgerUnderreplicationManager.java#L792-L802)
 doesn't put lock instance to heldLocks. Therefore, can't remove lock z-node.
   
   Moreover, 
[ZkLedgerUnderreplicationManager#acquireUnderreplicatedLedger](https://github.com/apache/bookkeeper/blob/4ae5b3b5a6bf5a13ea73a2f6157a56ad22ec4ebe/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/ZkLedgerUnderreplicationManager.java#L792-L802)
 creates 
`/ledgers/underreplication/locks/urL${ledgerId}/underreplication/locks/urL${ledgerId}`
 node. It has redundant path `urL${ledgerId}/underreplication/locks/` by non 
ephemeral z-node. I think `/ledgers/underreplication/locks/urL${ledgerId}` is 
correct.
   
   **I think this issue blocks the release. I will fix the issue.**
   
   ***To Reproduce***
   
   Steps to reproduce the behavior:
   1. Run ScanAndCompareGarbageCollector#removeOverReplicatedledgers with 
ZKMetadataBookieDriver
   2. Check underreplicated ledger lock
   
   ***Expected behavior***
   
   * ZkLedgerUnderreplicationManager#acquireUnderreplicatedLedger will create 
lock node with correct path.
   * ScanAndCompareGarbageCollector#removeOverReplicatedledgers will remove 
lock z-node when the process is completed.
   


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