Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-2333

Clean up thread pool and queue sizes

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Low
    • Resolution: Fixed
    • 0.7.5
    • None
    • None
    • Low

    Description

      Most of Cassandra assumes that ThreadPoolExecutor handles tasks by starting with Core threads, adding threads up to Max as tasks arrive, then queuing any additional. This is not correct:

          If fewer than corePoolSize threads are running, the Executor always prefers adding a new thread rather than queuing.
          If corePoolSize or more threads are running, the Executor always prefers queuing a request rather than adding a new thread.
          If a request cannot be queued, a new thread is created unless this would exceed maximumPoolSize, in which case, the task will be rejected.
      

      CASSANDRA-2178 fixed this in one place but made it worse by default since most people run with a single data dir, meaning as soon as you have multiple CFs flushing (or a single one with indexes) then you will start blocking writes.

      Attachments

        1. 2333.txt
          17 kB
          Jonathan Ellis

        Activity

          People

            jbellis Jonathan Ellis
            jbellis Jonathan Ellis
            Jonathan Ellis
            Brandon Williams
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: