linliu-code opened a new issue, #20162: URL: https://github.com/apache/hudi/issues/20162
When a StorageBasedLockProvider release fails (for example the expire write throws after its retries), LockManager.unlock() skips close(), so the provider keeps a lock object whose heartbeat is already stopped and LockManager keeps the provider. The next lock() on the same LockManager reuses it, and the provider's reentrant path reports the lock as acquired without restarting the heartbeat; its shutdown hook and heartbeat manager also stay alive until the JVM exits. Separately, TimelineArchiverV1 and TimelineArchiverV2 each create a private TransactionManager that nothing closes. On the archive path this means a failed release is never re-attempted by close(), so the lock stays stranded for its full lease and the provider leaks. TimelineArchiverV2 also leaks the provider when lock acquisition fails. Expected: a failed unlock leaves no reused provider, and the archivers close their lock resources on every exit path. -- 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]
