fix: scale Gremlin concurrent test threads to available processors#3672
Conversation
Hardcoded thread counts (8 and 12) caused CI failures on GitHub runners with limited vCPUs due to thread starvation and Gremlin client timeouts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request enhances the robustness of Gremlin concurrent tests by making their thread counts adaptive to the execution environment. By dynamically scaling the number of threads based on available processors, it resolves issues encountered in resource-constrained CI environments while maintaining effective concurrency testing on more powerful developer machines. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
The pull request addresses an issue with hardcoded thread counts in concurrent tests, which caused CI failures on machines with fewer CPU cores. The change to dynamically scale the number of threads based on available processors is a good solution. My feedback focuses on a small improvement to reduce code duplication.
| @Test | ||
| void concurrentMergeVWithThreadBucketStrategy() throws Exception { | ||
| final int nOfThreads = 8; | ||
| final int nOfThreads = Math.max(2, Runtime.getRuntime().availableProcessors()); |
There was a problem hiding this comment.
This logic to determine the number of threads is also used in GremlinMergeVStressTest.java. To avoid code duplication, consider extracting this logic into a protected helper method in the common base class AbstractGremlinServerIT. This will improve maintainability.
For example, you could add this to AbstractGremlinServerIT:
protected int getConcurrentTestThreadCount() {
return Math.max(2, Runtime.getRuntime().availableProcessors());
}Then you can call this method from both test classes.
🧪 CI InsightsHere's what we observed from your CI run for 7d28087. 🟢 All jobs passed!But CI Insights is watching 👀 |
|
The core fix is correct and well-motivated: replacing hardcoded thread counts (8 and 12) with Minor issues worth noting (pre-existing, not introduced by this PR):
Verdict: The two-line change in the diff is correct and should be merged as-is. The observations above are pre-existing technical debt in these test files that could be addressed in a follow-up. |
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesFootnotes
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3672 +/- ##
==========================================
- Coverage 65.83% 65.81% -0.03%
==========================================
Files 1550 1550
Lines 109700 109733 +33
Branches 22878 22891 +13
==========================================
- Hits 72222 72221 -1
+ Misses 27799 27790 -9
- Partials 9679 9722 +43 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Server-side Gremlin executor threads may hash to the same bucket despite the thread bucket selection strategy, causing page conflicts on commit. Add retry loop (up to 10 attempts) since ArcadeDB marks these as retriable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Code ReviewThe core fix — replacing hardcoded thread counts with Issues1.
|
| Severity | Location | Issue |
|---|---|---|
| Medium | GremlinMergeVConcurrentTest:174 |
ExecutionException caught without failing the test |
| Low | GremlinMergeVConcurrentTest:120-126 |
isConcurrentModification misses ConcurrentModificationException class name |
| Low | GremlinMergeVConcurrentTest:101-114 |
No backoff between retries (contrast with GremlinMergeVStressTest:133-138) |
| Low | GremlinMergeVConcurrentTest:116-117 |
Unreachable throw loses original exception cause |
| Low | GremlinMergeVConcurrentTest:95-96 |
Missing final on queryInputParams, params |
| Info | Both files | System.out.println left in (project guideline: remove debug output) |
PR Review: Fix Gremlin concurrent test threads scaling + PageManagerFlushThread database-closed guardSummaryThis PR addresses two distinct issues:
1. Test Thread Count Scaling (
|
| Priority | Item |
|---|---|
| Should fix | Remove System.out/System.err from new retry logging code (CLAUDE.md requirement) |
| Should fix | Use instanceof ConcurrentModificationException instead of string-matching for retry detection |
| Should fix | Unify retry detection logic between GremlinMergeVConcurrentTest and GremlinMergeVStressTest |
| Consider | Add a log message in PageManagerFlushThread when the new break path is taken |
| Minor | Apply final keyword to new local variables per CLAUDE.md style guidelines |
The core changes are appropriate and solve real problems. The main items are the System.out cleanup (required per project guidelines) and making the retry exception detection more robust.
|
Addressed the review feedback in the next commit: Implemented:
Not implementing |
- Add linear backoff (10ms * attempt) between retries - Preserve lastException as cause in exhausted-retries throw - Replace System.out/System.err with LogManager calls - Add final keyword to new local variables - Check both "Concurrent modification" and "ConcurrentModificationException" strings in cause chain for consistency with GremlinMergeVStressTest - Add FINE-level log in PageManagerFlushThread database-closed break path Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
ReviewThe primary goal of this PR — scaling thread counts to A few issues worth addressing: 1. Dead code in the retry loop (
|
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferencesFootnotes
|
|
Re: review at #issuecomment-4075480501 Item 1 — "dead code" in retry loop: The post-loop code is reachable. When Item 2 — retry masking bugs: Items 3, 4: Acknowledged as correct/pre-existing by the reviewer. No changes needed. |
Makes retry events visible in CI logs per review feedback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Replacing test comment with actual review - posted in segments below. |
How to contribute to ArcadeDBContribution LicenseArcadeDB is licensed under the Apache License 2.0. By submitting a contribution (pull request, patch, or any other form), you agree that your contribution is licensed under the same terms, as stated in Section 5 of the Apache License 2.0. This means:
By submitting a contribution, you represent that you have the right to license it under the Apache License 2.0 — i.e., the work is your own, or you have permission from the copyright holder. Did you find a bug?
Did you write a patch that fixes a bug?
Did you fix whitespace, format code, or make a purely cosmetic patch?Changes that are cosmetic in nature and do not add anything substantial to the stability, functionality, or testability will generally not be accepted. Do you intend to add a new feature or change an existing one?
Are you adding a new dependency?When adding new third-party dependencies to ArcadeDB:
For questions about licensing, please ask in the discussion forum before adding the dependency. Prepare your environmentPre-commitThis project uses pre-commit. Every developer should install it locally, please Developer guideIn order to use the latest distribution before the official release, you have to build it from the latest SNAPSHOT version in
It's super easy, just follow the following steps: (1) Download the sources If you have git installed, execute the following command on a shell or command prompt: $ git clone git@github.com:ArcadeData/arcadedb.gitWith this command above you have just cloned the (2) Now build the project using Maven. Assure you have Apache Maven installed on your computer and execute the following commands: $ cd arcadedb
$ mvn clean install -DskipTestsThe build should take less than a minute. (3) Use the fresh built distribution You will find a fresh built distribution under the directory For example, if the latest release is the Some build targetsBuild and run default tests: $ mvn clean installTo run additional integration test locally use: $ mvn clean install -P integrationRebuild Docker images for $ mvn clean install -DskipTests -PdockerBuild and run in fail-at-end mode: $ mvn clean install -faePrint dependency tree: $ mvn dependency:tree |
|
PageManagerFlushThread.java note: The cleanup loop variable named remaining iterates over ALL pages, not just unprocessed ones. Pages already flushed had pageIndex.remove() called in their finally block. Calling it again is idempotent but the name and comment "Clean up remaining pageIndex entries" are misleading. Also: the new isOpen() in-loop check is redundant given the pre-loop guard — a single pre-loop check is cleaner on the hot path. |
|
GremlinMergeVConcurrentTest.java notes: Good changes: replacing System.out/err with LogManager is correct per project conventions; adding final to local variables aligns with the style guide; the retry loop for concurrent-modification errors is pragmatic. Issue: isConcurrentModification reassigns its e parameter preventing it from being declared final. Idiomatic fix: use a for-loop — for (Throwable e = throwable; e != null; e = e.getCause()). Also: ExecutionException increments receivedResults (good, prevents hang) but is swallowed after WARNING log — consider assertThat(errorCount.get()).isZero() for clearer diagnosis. Thread count Math.max(2, availableProcessors()) is acceptable for 2-vCPU CI runners. |
|
Minor: GremlinMergeVStressTest change is correct and minimal. Removing the now-unused GlobalConfiguration import is correct. Summary: Approve with minor nits — fix isConcurrentModification to accept a final parameter, and consider adding an explicit errorCount == 0 assertion to the concurrent test. |
Coverage summary from CodacySee diff coverage on Codacy
Coverage variation details
Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: Diff coverage details
Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: See your quality gate settings Change summary preferences |
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.20.0 to 8.21.0. Changelog *Sourced from [pg's changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md).* > pg@8.21.0 > --------- > > * Handle [SASL SCRAM](https://redirect.github.com/brianc/node-postgres/pull/3521) server error responses properly. > * Add support for [node@26](https://redirect.github.com/brianc/node-postgres/pull/3667). > * Add `scramMaxIterations` [config option](https://redirect.github.com/brianc/node-postgres/pull/3677). > * Add `client.getTransactionStatus()` [method](https://redirect.github.com/brianc/node-postgres/pull/3645). Commits * [`544b1ce`](brianc/node-postgres@544b1ce) Publish * [`cc03fa5`](brianc/node-postgres@cc03fa5) Add scramMaxIterations option to limit SCRAM iteration count ([#3677](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3677)) * [`f776327`](brianc/node-postgres@f776327) Remove compatibility code for unsupported versions of Node (<16) ([#3678](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3678)) * [`f252870`](brianc/node-postgres@f252870) cleanup: pg utils ([#3675](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3675)) * [`c8da6ab`](brianc/node-postgres@c8da6ab) Assorted test cleanup ([#3673](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3673)) * [`fa47e73`](brianc/node-postgres@fa47e73) fix: `Client#end` callback being called multiple times when first is no-op (#... * [`88a7e60`](brianc/node-postgres@88a7e60) cleanup: Move declaration to more natural place * [`2095247`](brianc/node-postgres@2095247) cleanup: Combine duplicated code in `Client#query` and avoid unneeded early n... * [`0ac3edd`](brianc/node-postgres@0ac3edd) fix: apply SASLprep (RFC 4013) to passwords before SCRAM-SHA-256 PBKDF2 ([#3669](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3669)) * [`be880d4`](brianc/node-postgres@be880d4) Assorted test fixes and cleanup ([#3672](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3672)) * Additional commits viewable in [compare view](https://github.com/brianc/node-postgres/commits/pg@8.21.0/packages/pg) [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
…[skip ci] Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.18.0 to 5.19.0. Release notes *Sourced from [org.mockito:mockito-core's releases](https://github.com/mockito/mockito/releases).* > v5.19.0 > ------- > > *Changelog generated by [Shipkit Changelog Gradle Plugin](https://github.com/shipkit/shipkit-changelog)* > > #### 5.19.0 > > * 2025-08-15 - [37 commit(s)](mockito/mockito@v5.18.0...v5.19.0) by Adrian-Kim, Tim van der Lippe, Tran Ngoc Nhan, dependabot[bot], juyeop > * feat: Add support for JDK21 Sequenced Collections. [([ArcadeData#3708](https://redirect.github.com/mockito/mockito/issues/3708))]([mockito/mockito#3708](https://redirect.github.com/mockito/mockito/pull/3708)) > * Bump actions/checkout from 4 to 5 [([ArcadeData#3707](https://redirect.github.com/mockito/mockito/issues/3707))]([mockito/mockito#3707](https://redirect.github.com/mockito/mockito/pull/3707)) > * build: Allow overriding 'Created-By' for reproducible builds [([ArcadeData#3704](https://redirect.github.com/mockito/mockito/issues/3704))]([mockito/mockito#3704](https://redirect.github.com/mockito/mockito/pull/3704)) > * Bump org.assertj:assertj-core from 3.27.3 to 3.27.4 [([ArcadeData#3703](https://redirect.github.com/mockito/mockito/issues/3703))]([mockito/mockito#3703](https://redirect.github.com/mockito/mockito/pull/3703)) > * Bump androidx.test:runner from 1.6.2 to 1.7.0 [([ArcadeData#3697](https://redirect.github.com/mockito/mockito/issues/3697))]([mockito/mockito#3697](https://redirect.github.com/mockito/mockito/pull/3697)) > * Bump org.junit.platform:junit-platform-launcher from 1.13.3 to 1.13.4 [([ArcadeData#3694](https://redirect.github.com/mockito/mockito/issues/3694))]([mockito/mockito#3694](https://redirect.github.com/mockito/mockito/pull/3694)) > * Bump com.diffplug.spotless:spotless-plugin-gradle from 7.1.0 to 7.2.1 [([ArcadeData#3693](https://redirect.github.com/mockito/mockito/issues/3693))]([mockito/mockito#3693](https://redirect.github.com/mockito/mockito/pull/3693)) > * Bump junit-jupiter from 5.13.3 to 5.13.4 [([ArcadeData#3691](https://redirect.github.com/mockito/mockito/issues/3691))]([mockito/mockito#3691](https://redirect.github.com/mockito/mockito/pull/3691)) > * Bump com.gradle.develocity from 4.0.2 to 4.1 [([ArcadeData#3689](https://redirect.github.com/mockito/mockito/issues/3689))]([mockito/mockito#3689](https://redirect.github.com/mockito/mockito/pull/3689)) > * Bump com.google.googlejavaformat:google-java-format from 1.27.0 to 1.28.0 [([ArcadeData#3688](https://redirect.github.com/mockito/mockito/issues/3688))]([mockito/mockito#3688](https://redirect.github.com/mockito/mockito/pull/3688)) > * Bump com.google.googlejavaformat:google-java-format from 1.25.2 to 1.27.0 [([ArcadeData#3686](https://redirect.github.com/mockito/mockito/issues/3686))]([mockito/mockito#3686](https://redirect.github.com/mockito/mockito/pull/3686)) > * Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.4 to 7.1.0 [([ArcadeData#3685](https://redirect.github.com/mockito/mockito/issues/3685))]([mockito/mockito#3685](https://redirect.github.com/mockito/mockito/pull/3685)) > * Bump junit-jupiter from 5.13.2 to 5.13.3 [([ArcadeData#3684](https://redirect.github.com/mockito/mockito/issues/3684))]([mockito/mockito#3684](https://redirect.github.com/mockito/mockito/pull/3684)) > * Bump org.shipkit:shipkit-auto-version from 2.1.0 to 2.1.2 [([ArcadeData#3683](https://redirect.github.com/mockito/mockito/issues/3683))]([mockito/mockito#3683](https://redirect.github.com/mockito/mockito/pull/3683)) > * Bump com.diffplug.spotless:spotless-plugin-gradle from 7.0.2 to 7.0.4 [([#3682](https://redirect.github.com/mockito/mockito/issues/3682))]([mockito/mockito#3682](https://redirect.github.com/mockito/mockito/pull/3682)) > * Only run release after both Java and Android tests have finished > [([ArcadeData#3681](https://redirect.github.com/mockito/mockito/issues/3681))]([mockito/mockito#3681](https://redirect.github.com/mockito/mockito/pull/3681)) > * Bump org.junit.platform:junit-platform-launcher from 1.12.2 to 1.13.3 [([ArcadeData#3680](https://redirect.github.com/mockito/mockito/issues/3680))]([mockito/mockito#3680](https://redirect.github.com/mockito/mockito/pull/3680)) > * Bump org.codehaus.groovy:groovy from 3.0.24 to 3.0.25 [([ArcadeData#3679](https://redirect.github.com/mockito/mockito/issues/3679))]([mockito/mockito#3679](https://redirect.github.com/mockito/mockito/pull/3679)) > * Bump org.eclipse.platform:org.eclipse.osgi from 3.23.0 to 3.23.100 [([ArcadeData#3678](https://redirect.github.com/mockito/mockito/issues/3678))]([mockito/mockito#3678](https://redirect.github.com/mockito/mockito/pull/3678)) > * Can no longer publish snapshot releases [([ArcadeData#3677](https://redirect.github.com/mockito/mockito/issues/3677))]([mockito/mockito#3677](https://redirect.github.com/mockito/mockito/issues/3677)) > * Update Gradle to 8.14.2 [([ArcadeData#3676](https://redirect.github.com/mockito/mockito/issues/3676))]([mockito/mockito#3676](https://redirect.github.com/mockito/mockito/pull/3676)) > * Bump errorprone from 2.23.0 to 2.39.0 [([#3674](https://redirect.github.com/mockito/mockito/issues/3674))]([mockito/mockito#3674](https://redirect.github.com/mockito/mockito/pull/3674)) > * Correct Junit docs link [([ArcadeData#3672](https://redirect.github.com/mockito/mockito/issues/3672))]([mockito/mockito#3672](https://redirect.github.com/mockito/mockito/pull/3672)) > * Bump net.ltgt.gradle:gradle-errorprone-plugin from 4.1.0 to 4.3.0 [([ArcadeData#3670](https://redirect.github.com/mockito/mockito/issues/3670))]([mockito/mockito#3670](https://redirect.github.com/mockito/mockito/pull/3670)) > * Bump junit-jupiter from 5.13.1 to 5.13.2 [([ArcadeData#3669](https://redirect.github.com/mockito/mockito/issues/3669))]([mockito/mockito#3669](https://redirect.github.com/mockito/mockito/pull/3669)) > * Bump bytebuddy from 1.17.5 to 1.17.6 [([ArcadeData#3668](https://redirect.github.com/mockito/mockito/issues/3668))]([mockito/mockito#3668](https://redirect.github.com/mockito/mockito/pull/3668)) > * Bump junit-jupiter from 5.12.2 to 5.13.1 [([ArcadeData#3666](https://redirect.github.com/mockito/mockito/issues/3666))]([mockito/mockito#3666](https://redirect.github.com/mockito/mockito/pull/3666)) > * Bump org.jetbrains.kotlin:kotlin-stdlib from 2.0.21 to 2.2.0 [([ArcadeData#3665](https://redirect.github.com/mockito/mockito/issues/3665))]([mockito/mockito#3665](https://redirect.github.com/mockito/mockito/pull/3665)) > * Bump org.gradle.toolchains.foojay-resolver-convention from 0.9.0 to 1.0.0 [([ArcadeData#3661](https://redirect.github.com/mockito/mockito/issues/3661))]([mockito/mockito#3661](https://redirect.github.com/mockito/mockito/pull/3661)) > * Bump org.junit.platform:junit-platform-launcher from 1.11.4 to 1.12.2 [([ArcadeData#3660](https://redirect.github.com/mockito/mockito/issues/3660))]([mockito/mockito#3660](https://redirect.github.com/mockito/mockito/pull/3660)) > * Add JDK21 sequenced collections for ReturnsEmptyValues [([ArcadeData#3659](https://redirect.github.com/mockito/mockito/issues/3659))]([mockito/mockito#3659](https://redirect.github.com/mockito/mockito/issues/3659)) > * Bump com.gradle.develocity from 3.19.1 to 4.0.2 [([ArcadeData#3658](https://redirect.github.com/mockito/mockito/issues/3658))]([mockito/mockito#3658](https://redirect.github.com/mockito/mockito/pull/3658)) > * Bump ru.vyarus:gradle-animalsniffer-plugin from 1.7.2 to 2.0.1 [([ArcadeData#3657](https://redirect.github.com/mockito/mockito/issues/3657))]([mockito/mockito#3657](https://redirect.github.com/mockito/mockito/pull/3657)) > * Bump org.eclipse.platform:org.eclipse.osgi from 3.22.0 to 3.23.0 [([ArcadeData#3656](https://redirect.github.com/mockito/mockito/issues/3656))]([mockito/mockito#3656](https://redirect.github.com/mockito/mockito/pull/3656)) > * Bump org.codehaus.groovy:groovy from 3.0.23 to 3.0.24 [([ArcadeData#3655](https://redirect.github.com/mockito/mockito/issues/3655))]([mockito/mockito#3655](https://redirect.github.com/mockito/mockito/pull/3655)) > * Bump junit-jupiter from 5.11.4 to 5.12.2 [([ArcadeData#3653](https://redirect.github.com/mockito/mockito/issues/3653))]([mockito/mockito#3653](https://redirect.github.com/mockito/mockito/pull/3653)) > * Reproducible Build: need to inject JDK distribution details to rebuild [([ArcadeData#3563](https://redirect.github.com/mockito/mockito/issues/3563))]([mockito/mockito#3563](https://redirect.github.com/mockito/mockito/issues/3563)) Commits * [`144751b`](mockito/mockito@144751b) Add support for JDK21 Sequenced Collections. ([ArcadeData#3708](https://redirect.github.com/mockito/mockito/issues/3708)) * [`b275c7d`](mockito/mockito@b275c7d) Bump actions/checkout from 4 to 5 ([ArcadeData#3707](https://redirect.github.com/mockito/mockito/issues/3707)) * [`ad6ae2f`](mockito/mockito@ad6ae2f) Allow overriding 'Created-By' for reproducible builds ([ArcadeData#3704](https://redirect.github.com/mockito/mockito/issues/3704)) * [`096ee9f`](mockito/mockito@096ee9f) Bump org.assertj:assertj-core from 3.27.3 to 3.27.4 ([ArcadeData#3703](https://redirect.github.com/mockito/mockito/issues/3703)) * [`aa7be27`](mockito/mockito@aa7be27) Bump androidx.test:runner from 1.6.2 to 1.7.0 ([ArcadeData#3697](https://redirect.github.com/mockito/mockito/issues/3697)) * [`c8a698b`](mockito/mockito@c8a698b) Remove unused tests * [`ea45979`](mockito/mockito@ea45979) Bump errorprone from 2.39.0 to 2.41.0 * [`9c8eb23`](mockito/mockito@9c8eb23) Bump org.junit.platform:junit-platform-launcher from 1.13.3 to 1.13.4 ([ArcadeData#3694](https://redirect.github.com/mockito/mockito/issues/3694)) * [`f05e44d`](mockito/mockito@f05e44d) Bump com.diffplug.spotless:spotless-plugin-gradle from 7.1.0 to 7.2.1 ([ArcadeData#3693](https://redirect.github.com/mockito/mockito/issues/3693)) * [`9d32dfe`](mockito/mockito@9d32dfe) Bump junit-jupiter from 5.13.3 to 5.13.4 ([ArcadeData#3691](https://redirect.github.com/mockito/mockito/issues/3691)) * Additional commits viewable in [compare view](mockito/mockito@v5.18.0...v5.19.0) [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) from 8.20.0 to 8.21.0. Changelog *Sourced from [pg's changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md).* > pg@8.21.0 > --------- > > * Handle [SASL SCRAM](https://redirect.github.com/brianc/node-postgres/pull/3521) server error responses properly. > * Add support for [node@26](https://redirect.github.com/brianc/node-postgres/pull/3667). > * Add `scramMaxIterations` [config option](https://redirect.github.com/brianc/node-postgres/pull/3677). > * Add `client.getTransactionStatus()` [method](https://redirect.github.com/brianc/node-postgres/pull/3645). Commits * [`544b1ce`](brianc/node-postgres@544b1ce) Publish * [`cc03fa5`](brianc/node-postgres@cc03fa5) Add scramMaxIterations option to limit SCRAM iteration count ([ArcadeData#3677](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3677)) * [`f776327`](brianc/node-postgres@f776327) Remove compatibility code for unsupported versions of Node (<16) ([ArcadeData#3678](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3678)) * [`f252870`](brianc/node-postgres@f252870) cleanup: pg utils ([ArcadeData#3675](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3675)) * [`c8da6ab`](brianc/node-postgres@c8da6ab) Assorted test cleanup ([ArcadeData#3673](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3673)) * [`fa47e73`](brianc/node-postgres@fa47e73) fix: `Client#end` callback being called multiple times when first is no-op (#... * [`88a7e60`](brianc/node-postgres@88a7e60) cleanup: Move declaration to more natural place * [`2095247`](brianc/node-postgres@2095247) cleanup: Combine duplicated code in `Client#query` and avoid unneeded early n... * [`0ac3edd`](brianc/node-postgres@0ac3edd) fix: apply SASLprep (RFC 4013) to passwords before SCRAM-SHA-256 PBKDF2 ([ArcadeData#3669](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3669)) * [`be880d4`](brianc/node-postgres@be880d4) Assorted test fixes and cleanup ([ArcadeData#3672](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg/issues/3672)) * Additional commits viewable in [compare view](https://github.com/brianc/node-postgres/commits/pg@8.21.0/packages/pg) [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- Dependabot commands and options You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Summary
GremlinMergeVConcurrentTestandGremlinMergeVStressTesthardcoded thread counts (8 and 12) causing CI failures on GitHub runners with only 2 vCPUsMath.max(2, Runtime.getRuntime().availableProcessors())to scale to the machine's capacity while still guaranteeing concurrent executionRemoteGremlinFactoryITandAbstractGremlinServerITTest plan
🤖 Generated with Claude Code