[ https://issues.apache.org/jira/browse/BOOKKEEPER-654?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13720403#comment-13720403 ]
Rakesh R commented on BOOKKEEPER-654: ------------------------------------- Thanks [~hustlmsp] for the comments. Few clarifications: bq.1. in OrderedSafeExecutor, why not just catch the rejected exception rather than adding an extra boolean flag. since this flag doesn't avoid throwing rejected exception. >From ThreadPoolExecutor JavaDoc, it says, will be rejected when the Executor >has been shut down, and also when the Executor uses finite bounds for both >maximum threads and work queue capacity, and is saturated. ThreadPoolExecutor.java {code} public void execute(Runnable command) { //.... //.... reject(command); // is shutdown or saturated {code} I've added the flag to convey to the user about the actual cause(either due to bk.close() or some other reason). Otherwise we need to iterate over the 'executor.threads[i]' and see whether its shutdown like below. Any other better way to handle this? OrderedSafeExecutor.java {code} for (int i = 0; i < executor.threads.length; i++) { if(executor.threads[i].isShutdown()){ safeOperationComplete(BKException.Code.BkClientClosedException, result); return; } } {code} bq.2. in LedgerOpenOp, why we need #readComplete here? an unscheduled speculative task doesn't affect any logic. If we throws exception back to the caller, (callers are: LedgerRecovery#doRecoveryRead() and LedgerHandle.asyncReadEntries()) callers need to duplicate the logic of handling the exception and return the BkClientClosedException. Whats your opinion? Also, I need to remove 'if(bk.bookieClient.isClosed())' check added at LedgerHandle.asyncReadEntries(), its not required. > Bookkeeper client operations are allowed even after its closure, bk#close() > --------------------------------------------------------------------------- > > Key: BOOKKEEPER-654 > URL: https://issues.apache.org/jira/browse/BOOKKEEPER-654 > Project: Bookkeeper > Issue Type: Bug > Components: bookkeeper-client > Affects Versions: 4.2.0 > Reporter: Rakesh R > Assignee: Rakesh R > Fix For: 4.2.2, 4.3.0 > > Attachments: 0001-BOOKKEEPER-654-testcase-to-understand-more.patch, > 0002-BOOKKEEPER-654.patch, 0003-BOOKKEEPER-654.patch > > > User can perform below operations with the closed bookkeeper client, which > was instantiated with external zkclient. > - open a closed ledger > - create a new ledger > Also, ledgerhandle operations like fencing/add/write are infinitely hanging. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira