Matteo Merli created BOOKKEEPER-1065: ----------------------------------------
Summary: OrderedSafeExecutor should only have 1 thread per bucket Key: BOOKKEEPER-1065 URL: https://issues.apache.org/jira/browse/BOOKKEEPER-1065 Project: Bookkeeper Issue Type: Bug Reporter: Matteo Merli Assignee: Matteo Merli Fix For: 4.5.0 In a earlier commit, "BOOKKEEPER-874: Explict LAC from Writer to Bookie", there was this change in the OrderedSafeExecutor implementation: {noformat} for (int i = 0; i < numThreads; i++) { - queues[i] = new LinkedBlockingQueue<Runnable>(); - threads[i] = new ThreadPoolExecutor(1, 1, - 0L, TimeUnit.MILLISECONDS, queues[i], + threads[i] = new ScheduledThreadPoolExecutor(1, new ThreadFactoryBuilder() .setNameFormat(name + "-orderedsafeexecutor-" + i + "-%d") .setThreadFactory(threadFactory) .build()); + threads[i].setMaximumPoolSize(1); {noformat} Then, as part of "BOOKKEEPER-1013: Fix findbugs errors on latest master", the max pool size line has been removed. {noformat} @@ -183,7 +183,6 @@ public class OrderedSafeExecutor { .setNameFormat(name + "-orderedsafeexecutor-" + i + "-%d") .setThreadFactory(threadFactory) .build()); - threads[i].setMaximumPoolSize(1); // Save thread ids final int idx = i; {noformat} Without that the thread pool would create multiple threads for the same bucket, breaking the ordering guarantee of the executor. -- This message was sent by Atlassian JIRA (v6.3.15#6346)