Skip to content

perf(core): introduce three shared thread pools - Query, Write and Network#5805

Merged
bluestreak01 merged 32 commits intomasterfrom
perf-change-thread-pooling-strategy
Aug 1, 2025
Merged

perf(core): introduce three shared thread pools - Query, Write and Network#5805
bluestreak01 merged 32 commits intomasterfrom
perf-change-thread-pooling-strategy

Conversation

@ideoma
Copy link
Copy Markdown
Collaborator

@ideoma ideoma commented Jul 2, 2025

This PR changes default QuestDB threading strategy. Instead of single shared pool there will be three shared thread pools:

  • Network thread pool. This will run network IO e.g. HTTP, Pg and ILP servers.
  • Query Thread pool. This pool will handle parallel queries, e.g. parallel filters and group by
  • Writer Thread pool. This will run Wal Apply Job, Table Writer jobs, Mat View Refresh, various purge and housekeeping jobs.

tandem: https://github.com/questdb/questdb-enterprise/pull/645

@ideoma ideoma requested a review from Copilot July 2, 2025 16:58

This comment was marked as outdated.

@ideoma ideoma added Performance Performance improvements tandem labels Jul 4, 2025
@bluestreak01
Copy link
Copy Markdown
Member

can i suggest to rename pools:

  • Network Worker Pool
  • Read IO Worker Pool
  • Write IO Worker Pool

Subjectively this is clearer to me.

@bluestreak01 bluestreak01 changed the title perf(core): introduce three shared thread pools - Query, Write and IO perf(core): introduce three shared thread pools - Query, Write and Network Jul 5, 2025
@bluestreak01 bluestreak01 requested a review from Copilot July 5, 2025 21:07
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR refactors QuestDB’s threading model to introduce three shared worker pools (Network, Query, Write) in place of the single shared pool.

Key changes:

  • Split single shared pool into distinct Network, Query, and Write pools
  • Updated WorkerPoolManager, ServerConfiguration, and service bindings to route jobs to the correct pool
  • Revised tests and property handling to support new pool configurations

Reviewed Changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
core/src/main/java/io/questdb/WorkerPoolManager.java Introduce separate sharedPoolNetwork, sharedPoolQuery, sharedPoolWrite and specialized getInstanceNetwork/getInstanceWrite
core/src/main/java/io/questdb/PropServerConfiguration.java Read legacy shared settings and configure three PropWorkerPoolConfiguration instances via configureSharedThreadPool
core/src/main/java/io/questdb/Services.java Updated service factory methods to call getInstanceNetwork/getInstanceWrite
core/src/main/java/io/questdb/ServerMain.java Assign engine maintenance, query, writer, and housekeeping jobs to the appropriate shared pools
core/src/main/java/io/questdb/ServerConfiguration.java Added getNetworkWorkerPoolConfiguration, getQueryWorkerPoolConfiguration, getWriteWorkerPoolConfiguration
core/src/main/java/io/questdb/cutlass/line/tcp Renamed IOWorkerPoolConfiguration to NetworkWorkerPoolConfiguration across interfaces and wrappers
core/src/test/java/... Adjusted tests to call new pool getters and updated expected default property outputs
Comments suppressed due to low confidence (1)

core/src/main/java/io/questdb/PropServerConfiguration.java:1920

  • The assignment this.metrics is incorrect and will not compile, as PropServerConfiguration has no metrics field of type WorkerPoolConfiguration.Metrics. You should assign a valid Metrics enum value (e.g. Metrics.ENABLED or Metrics.DISABLED) or retrieve it from the server's metrics configuration. For example:
poolConfiguration.metrics = config.getMetricsConfiguration().isEnabled() ? Metrics.ENABLED : Metrics.DISABLED;
        poolConfiguration.metrics = this.metrics;

Copy link
Copy Markdown
Member

@bluestreak01 bluestreak01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a lot more work is required here:

  • parameter and field names everywhere need to be reviewed now that "shared pool" is no more
  • there is proliferated confusion as to what "worker" count is meant to represent, wrong counts being passed around and parameter names are not helping
  • we probably need some sort of fuzz test that boostraps unequal size pools and executes parallel queries on them, for example writer pool could be 4 and query pool could be 10. SQL may partition its data structures for 4 workers and will have 10 workers executing, causing chaos
  • i observed weird boostrap, on 12 core laptop, network pool = 12, query pool = 12, wirter pool = 18? why 18?

bluestreak01 and others added 6 commits July 5, 2025 22:44
…worker pool configuration method to better distinguish between network, query, and write worker pools as part of a thread pooling performance

  optimization
@ideoma
Copy link
Copy Markdown
Collaborator Author

ideoma commented Jul 18, 2025

Hey @bluestreak01, this PR is now ready for a second look

parameter and field names everywhere need to be reviewed now that "shared pool" is no more
there is proliferated confusion as to what "worker" count is meant to represent, wrong counts being passed around and parameter names are not helping

I renamed parameters and fields everywhere to be sharedQueryWorkerCount instead of workerCount and sharedWorkerCount so it's more obvious what they are. I also removed the pattern where we passed both workerCount and sharedWorkderCount, almost all the places only need to know sharedQueryWorkerCount

we probably need some sort of fuzz test that boostraps unequal size pools and executes parallel queries on them, for example writer pool could be 4 and query pool could be 10. SQL may partition its data structures for 4 workers and will have 10 workers executing, causing chaos

I added test UnequalWorkerPoolTest where SHARED_WORKER_COUNT=1 and SHARED_QUERY_WORKER_COUNT=4. The test runs parallelised queries.

i observed weird boostrap, on 12 core laptop, network pool = 12, query pool = 12, wirter pool = 18? why 18?

I changed the writer pool to 12. It used to be 50% more than the other pool because it's not supposed to be CPU-bound, but I decided against it now to avoid oversaturating the IO.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Aug 1, 2025

Important

Review skipped

Auto reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

This change refactors the worker pool configuration system by splitting the previously monolithic shared worker pool into three specialized pools: network, query, and write. It updates configuration files, interfaces, and implementations to support these pools, and propagates this separation throughout the codebase and tests. Numerous method signatures, constructors, and internal logic are updated to use the new shared query worker count, and tests are adjusted to accommodate these changes.

Changes

Cohort / File(s) Change Summary
Worker Pool Configuration Refactor
core/src/main/java/io/questdb/DefaultServerConfiguration.java, core/src/main/java/io/questdb/PropServerConfiguration.java, core/src/main/java/io/questdb/PropertyKey.java, core/src/main/java/io/questdb/ServerConfiguration.java, core/src/main/java/io/questdb/WorkerPoolManager.java, core/src/main/java/io/questdb/ServerMain.java, core/src/main/resources/io/questdb/site/conf/server.conf, pkg/ami/marketplace/assets/server.conf
Splits the single shared worker pool into three: network, query, and write. Updates configuration keys, classes, and resource files to support and document these pools, including new affinity and count settings. Removes legacy pool fields and logic.
Interface and Method Signature Updates
core/src/main/java/io/questdb/ServerConfiguration.java, core/src/main/java/io/questdb/DynamicPropServerConfiguration.java, core/src/main/java/io/questdb/cutlass/line/tcp/LineTcpReceiverConfiguration.java, core/src/main/java/io/questdb/cutlass/line/tcp/DefaultLineTcpReceiverConfiguration.java, core/src/main/java/io/questdb/cutlass/line/tcp/LineTcpReceiverConfigurationWrapper.java
Updates interfaces and implementations to provide and use the new network/query/write pool configurations, renaming methods and adjusting return types accordingly.
Removal of Legacy Worker Pool Classes
core/src/main/java/io/questdb/cairo/mv/DefaultMatViewRefreshWorkerPoolConfiguration.java, core/src/main/java/io/questdb/cairo/wal/DefaultWalApplyWorkerPoolConfiguration.java
Deletes old, now-obsolete worker pool configuration classes for materialized view refresh and WAL apply.
SqlExecutionContext and Related Changes
core/src/main/java/io/questdb/griffin/SqlExecutionContext.java, core/src/main/java/io/questdb/griffin/SqlExecutionContextImpl.java, core/src/main/java/io/questdb/griffin/SqlCodeGenerator.java, core/src/main/java/io/questdb/cairo/CairoEngine.java, core/src/main/java/io/questdb/cutlass/pgwire/PGConnectionContext.java
Refactors SqlExecutionContext to use only shared query worker count, updates constructors and method signatures, and adjusts logic for parallel features accordingly.
Job and Processor Constructor Refactoring
core/src/main/java/io/questdb/cairo/wal/ApplyWal2TableJob.java, core/src/main/java/io/questdb/cairo/wal/OperationExecutor.java, core/src/main/java/io/questdb/cairo/wal/WalApplySqlExecutionContext.java, core/src/main/java/io/questdb/cutlass/http/processors/JsonQueryProcessor.java, core/src/main/java/io/questdb/cutlass/http/processors/TextQueryProcessor.java, core/src/main/java/io/questdb/cutlass/http/HttpServer.java, core/src/main/java/io/questdb/cutlass/text/CopyRequestJob.java, core/src/main/java/io/questdb/cairo/mv/MatViewRefreshJob.java, core/src/main/java/io/questdb/cairo/mv/MatViewRefreshSqlExecutionContext.java, core/src/main/java/io/questdb/cairo/sql/async/PageFrameSequence.java
Updates constructors and internal logic to use the new sharedQueryWorkerCount parameter, removing previous workerCount/sharedWorkerCount separation.
Service and Factory Integration
core/src/main/java/io/questdb/cutlass/Services.java
Updates service creation to use the new shared network and query worker pools, and propagates parameter renaming.
Table and Cursor Factories
core/src/main/java/io/questdb/griffin/engine/table/AsyncJitFilteredRecordCursorFactory.java, core/src/main/java/io/questdb/griffin/engine/table/LatestByAllIndexedRecordCursor.java, core/src/main/java/io/questdb/griffin/engine/table/PageFrameRecordCursorFactory.java
Refactors classes to use sharedQueryWorkerCount, updates field names, constructor parameters, and logic for worker chunking and plan reporting.
Test Infrastructure and Test Cases
core/src/test/java/io/questdb/test/AbstractBootstrapTest.java, core/src/test/java/io/questdb/test/AbstractTest.java, core/src/test/java/io/questdb/test/PropServerConfigurationTest.java, core/src/test/java/io/questdb/test/ServerMainTest.java, core/src/test/java/io/questdb/test/ServerMainVectorGroupByTest.java, core/src/test/java/io/questdb/test/TestServerConfiguration.java, core/src/test/java/io/questdb/test/TestServerMain.java, core/src/test/java/io/questdb/test/WorkerPoolManagerTest.java, core/src/test/java/io/questdb/test/cairo/UnequalWorkerPoolTest.java, core/src/test/java/io/questdb/test/cairo/fuzz/FuzzRunner.java, core/src/test/java/io/questdb/test/cairo/mv/MatViewFuzzTest.java, core/src/test/java/io/questdb/test/cairo/mv/MatViewReloadOnRestartTest.java, core/src/test/java/io/questdb/test/cairo/mv/MatViewTelemetryTest.java, core/src/test/java/io/questdb/test/cairo/mv/MatViewTest.java, core/src/test/java/io/questdb/test/cutlass/http/HttpConnectionCountTest.java, core/src/test/java/io/questdb/test/cutlass/line/tcp/LineTcpO3Test.java, core/src/test/java/io/questdb/test/cutlass/line/udp/LinuxLineUdpProtoReceiverTest.java, core/src/test/java/io/questdb/test/cutlass/pgwire/BasePGTest.java, core/src/test/java/io/questdb/test/cutlass/pgwire/PGJobContextTest.java, core/src/test/java/io/questdb/test/cutlass/pgwire/PgLimitBindVariablesTest.java, core/src/test/java/io/questdb/test/cutlass/text/ParallelCsvFileImporterTest.java, core/src/test/java/io/questdb/test/cutlass/text/SqlExecutionContextStub.java, core/src/test/java/io/questdb/test/griffin/AlterTableSetTypeSuspendedTest.java, core/src/test/java/io/questdb/test/griffin/CopyTest.java, core/src/test/java/io/questdb/test/griffin/ExplainPlanTest.java, core/src/test/java/io/questdb/test/griffin/LatestByTest.java, core/src/test/java/io/questdb/test/griffin/engine/functions/bool/WithinGeohashFunctionFactoryTest.java, core/src/test/java/io/questdb/test/griffin/engine/groupby/SampleByTest.java, core/src/test/java/io/questdb/test/griffin/engine/table/AsyncFilteredRecordCursorFactoryTest.java, core/src/test/java/io/questdb/test/tools/TestUtils.java, utils/src/test/java/io/questdb/cliutil/Table2IlpTest.java
Updates test infrastructure and cases to use new worker pool configuration APIs, parameter names, and expected plan outputs. Introduces a new fuzz test for unequal pool sizes.

Sequence Diagram(s)

sequenceDiagram
    participant Config as ServerConfiguration
    participant WorkerMgr as WorkerPoolManager
    participant Service as Services
    participant Job as Job/Processor

    Config->>WorkerMgr: getNetworkWorkerPoolConfiguration()
    Config->>WorkerMgr: getQueryWorkerPoolConfiguration()
    Config->>WorkerMgr: getWriteWorkerPoolConfiguration()
    WorkerMgr->>WorkerMgr: create shared pools (network, query, write)
    Service->>WorkerMgr: getSharedNetworkPool()
    Service->>WorkerMgr: getInstanceWrite()
    Service->>Job: instantiate with sharedQueryWorkerCount
    Job->>Job: run using correct pool (network/query/write)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch perf-change-thread-pooling-strategy

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

‼️ IMPORTANT
Auto-reply has been disabled for this repository in the CodeRabbit settings. The CodeRabbit bot will not respond to your replies unless it is explicitly tagged.

  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@bluestreak01
Copy link
Copy Markdown
Member

@CodeRabbit please review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Aug 1, 2025

@bluestreak01 I'll review this PR which introduces the three shared thread pools architecture change. This is a significant modification to QuestDB's threading strategy that deserves careful examination.

🐰

   /|   /|  
  ( :v:  ) 
   |(_)|
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (4)
core/src/test/java/io/questdb/test/griffin/engine/functions/bool/WithinGeohashFunctionFactoryTest.java (1)

341-346: Duplicate of previous remark

The second expectation string has the same hard-coded workers: 2; please apply the same adjustment.

core/src/main/java/io/questdb/ServerMain.java (1)

428-432: FlushQueryCacheJob should be assigned to the query pool.

This job deals with query caching and belongs on the query pool rather than the network pool.

core/src/main/java/io/questdb/DefaultServerConfiguration.java (1)

152-171: Incomplete implementation of WorkerPoolConfiguration interface.

The DefaultWorkerPoolConfiguration class only implements getPoolName() and getWorkerCount(). Other interface methods may return default values which could affect worker affinity, sleep thresholds, and metric registration.

core/src/main/java/io/questdb/WorkerPoolManager.java (1)

128-135: Log messages should indicate pool type.

The log messages are ambiguous as they all use the same prefix. Include the pool type in the message to clearly differentiate in logs.

🧹 Nitpick comments (11)
core/src/test/java/io/questdb/test/griffin/LatestByTest.java (1)

180-185: Hard-coding the expected worker count makes the test brittle

workers: 2 is embedded directly in the expected plan string. If the default sharedQueryWorkerCount is changed via configuration or future refactor, this assertion will fail for reasons unrelated to query logic. Consider deriving the worker count from the active configuration (e.g. SharedWorkerPool.getWorkerCount()) or asserting via a regex such as workers: \\d+.

core/src/test/java/io/questdb/test/griffin/engine/functions/bool/WithinGeohashFunctionFactoryTest.java (1)

283-288: Same brittleness as above – avoid hard-wiring workers: 2

For maintainability, assert against workers: \\d+ or build the string with the actual query-worker-pool size at runtime.

core/src/main/resources/io/questdb/site/conf/server.conf (1)

25-30: Consider clarifying the precedence behavior.

The configuration shows both specific pool configurations (lines 8, 14, 20) and the default configuration (line 26). It would be helpful to clarify in the documentation how these interact - does the default value only apply when specific pool values are not set?

Consider adding a comment explaining the precedence behavior:

-# Default number of worker threads in Network, Query and Write shared pools. Single value to configure all three pools sizes.
+# Default number of worker threads in Network, Query and Write shared pools. Single value to configure all three pools sizes.
+# This value is used when specific pool configurations (shared.network.worker.count, shared.query.worker.count, shared.write.worker.count) are not set.
core/src/main/java/io/questdb/DynamicPropServerConfiguration.java (2)

358-361: Add missing non-reloadable comment for consistency.

The method implementation is correct, but it's missing the "// nested object is kept non-reloadable" comment that appears in other similar methods like getNetworkWorkerPoolConfiguration() and getWalApplyPoolConfiguration().

 @Override
 public WorkerPoolConfiguration getQueryWorkerPoolConfiguration() {
+    // nested object is kept non-reloadable
     return serverConfig.get().getQueryWorkerPoolConfiguration();
 }

363-366: Add missing non-reloadable comment for consistency.

The method implementation is correct, but it's also missing the "// nested object is kept non-reloadable" comment for consistency with other similar methods.

 @Override
 public WorkerPoolConfiguration getWriteWorkerPoolConfiguration() {
+    // nested object is kept non-reloadable
     return serverConfig.get().getWriteWorkerPoolConfiguration();
 }
core/src/test/java/io/questdb/test/cutlass/pgwire/PGJobContextTest.java (4)

139-141: Consider using specific imports instead of wildcards for better code clarity.

While wildcard imports reduce verbosity, specific imports make it clearer which methods are being used and help avoid potential naming conflicts.

-import static io.questdb.test.tools.TestUtils.*;
-import static org.junit.Assert.*;
+import static io.questdb.test.tools.TestUtils.assertResultSet;
+import static org.junit.Assert.assertNotNull;

3812-3874: Fix comment inconsistency and excellent test isolation.

The implementation correctly sets sharedQueryWorkerCount = 2 and properly cleans up in the finally block. However, the comment mentions "Set to 1" while actually setting to 2.

-        sharedQueryWorkerCount = 2; // Set to 1 to enable parallel query plans
+        sharedQueryWorkerCount = 2; // Set to 2 to enable parallel query plans

The expected query plans correctly reflect the parallel execution with "Async Filter workers: 2", and the try-finally pattern ensures proper test isolation.


3892-3923: Fix comment inconsistency.

Same issue as the previous method - the comment mentions "Set to 1" while actually setting to 2.

-        sharedQueryWorkerCount = 2; // Set to 1 to enable parallel query plans
+        sharedQueryWorkerCount = 2; // Set to 2 to enable parallel query plans

Good descriptive cleanup comment and correct expected query plan with "Async Filter workers: 2".


3804-3881: Fix comment inconsistency.

Same comment issue as the previous methods - mentions "Set to 1" while setting to 2.

-        sharedQueryWorkerCount = 2; // Set to 1 to enable parallel query plans
+        sharedQueryWorkerCount = 2; // Set to 2 to enable parallel query plans

The test comprehensively covers multiple scenarios and correctly expects "Async Filter workers: 2" in the query plan.

core/src/main/java/io/questdb/PropServerConfiguration.java (2)

1919-1944: Good refactoring to reduce code duplication.

The helper method effectively consolidates the shared thread pool configuration logic. Consider using a builder pattern or configuration object in the future if more parameters are added, as the method signature is already quite long.


1913-1916: Consider aligning field name with method name.

The method getNetworkWorkerPoolConfiguration() returns lineTcpIOWorkerPoolConfiguration. For consistency, consider renaming the field to lineTcpNetworkWorkerPoolConfiguration or keeping the method name as getIOWorkerPoolConfiguration().

bluestreak01
bluestreak01 previously approved these changes Aug 1, 2025
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@glasstiger
Copy link
Copy Markdown
Contributor

[PR Coverage check]

😍 pass : 265 / 279 (94.98%)

file detail

path covered line new line coverage
🔵 io/questdb/DefaultServerConfiguration.java 8 14 57.14%
🔵 io/questdb/griffin/SqlCodeGenerator.java 15 19 78.95%
🔵 io/questdb/log/LogFactory.java 5 6 83.33%
🔵 io/questdb/cutlass/Services.java 11 12 91.67%
🔵 io/questdb/ServerMain.java 26 28 92.86%
🔵 io/questdb/griffin/engine/table/LatestByAllIndexedRecordCursor.java 5 5 100.00%
🔵 io/questdb/cutlass/line/tcp/LineTcpMeasurementScheduler.java 9 9 100.00%
🔵 io/questdb/PropServerConfiguration.java 54 54 100.00%
🔵 io/questdb/cairo/sql/async/PageFrameSequence.java 1 1 100.00%
🔵 io/questdb/cutlass/pgwire/PGWireServer.java 6 6 100.00%
🔵 io/questdb/cutlass/pgwire/modern/PGWireServerModern.java 6 6 100.00%
🔵 io/questdb/WorkerPoolManager.java 52 52 100.00%
🔵 io/questdb/cutlass/pgwire/IPGWireServer.java 2 2 100.00%
🔵 io/questdb/griffin/engine/table/FwdTableReaderPageFrameCursor.java 2 2 100.00%
🔵 io/questdb/cutlass/line/tcp/LineTcpReceiverConfigurationWrapper.java 1 1 100.00%
🔵 io/questdb/cutlass/line/tcp/LineTcpReceiver.java 4 4 100.00%
🔵 io/questdb/mp/WorkerPoolConfiguration.java 1 1 100.00%
🔵 io/questdb/cutlass/http/HttpServer.java 5 5 100.00%
🔵 io/questdb/cairo/mv/MatViewRefreshJob.java 2 2 100.00%
🔵 io/questdb/cutlass/text/CopyRequestJob.java 1 1 100.00%
🔵 io/questdb/DynamicPropServerConfiguration.java 3 3 100.00%
🔵 io/questdb/mp/WorkerPoolUtils.java 16 16 100.00%
🔵 io/questdb/cairo/wal/WalApplySqlExecutionContext.java 1 1 100.00%
🔵 io/questdb/griffin/SqlExecutionContextImpl.java 7 7 100.00%
🔵 io/questdb/cairo/CairoEngine.java 1 1 100.00%
🔵 io/questdb/cutlass/line/tcp/LineTcpLegacyWriterJob.java 1 1 100.00%
🔵 io/questdb/PropertyKey.java 6 6 100.00%
🔵 io/questdb/cairo/wal/ApplyWal2TableJob.java 1 1 100.00%
🔵 io/questdb/griffin/engine/table/AsyncJitFilteredRecordCursorFactory.java 2 2 100.00%
🔵 io/questdb/griffin/engine/functions/test/TestMatchFunctionFactory.java 1 1 100.00%
🔵 io/questdb/griffin/engine/table/PageFrameRecordCursorFactory.java 2 2 100.00%
🔵 io/questdb/griffin/engine/table/BwdTableReaderPageFrameCursor.java 2 2 100.00%
🔵 io/questdb/cairo/mv/MatViewRefreshSqlExecutionContext.java 1 1 100.00%
🔵 io/questdb/cutlass/pgwire/PGConnectionContext.java 1 1 100.00%
🔵 io/questdb/cutlass/http/processors/TextQueryProcessor.java 1 1 100.00%
🔵 io/questdb/cutlass/text/CopyJob.java 3 3 100.00%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Performance Performance improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants