You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bookkeeper.apache.org by "Matteo Merli (JIRA)" <ji...@apache.org> on 2017/05/11 16:59:04 UTC

[jira] [Created] (BOOKKEEPER-1065) OrderedSafeExecutor should only have 1 thread per bucket

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)