You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
deps: Updates commons-compress to 1.28.0, which transitively updates commons-lang3 from 3.16.0 to 3.18.0 which addresses CVE-2025-48924 by @scala-steward in #1714
#1226 [2.10.x] Avoid running out of memory when parsing heavily nested arrays or objects by @mkurz
We now limit the maximum allowed nesting depth of JSON structures (arrays, objects, or a mix of both) to 1000.
This limit can be adjusted using the system property play.json.parser.maxNestingDepth.
We assume a depth of 1000 should be more than sufficient for virtually all real-world use cases.
This change helps prevent both potential OutOfMemoryErrors and StackOverflowErrors.
The latter, however, is not a concern for Play JSON, since it already uses a @tailrec-optimized parsing method.
As a result, Play JSON is not affected by CVE-2025-52999, which specifically addresses StackOverflowError risks.
This improvement is simply an additional safety measure.
If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor.
You can also individually sponsor the project by becoming a backer.
🙇 Thanks to our contributors
Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors.
Special thanks to all code contributors who helped with this particular release (they are listed below)!
If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor.
You can also individually sponsor the project by becoming a backer.
🙇 Thanks to our contributors
Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors.
Special thanks to all code contributors who helped with this particular release (they are listed below)!
feat: invalidate the prepared-statement cache when the server reports a search_path change via GUC_REPORT (PostgreSQL 18+), so cached plans are no longer used against the wrong schema PR #4259
feat: reWriteBatchedInserts now merges up to 32768 rows into one multi-values INSERT (bounded by the 65535 bind-parameter limit on the extended protocol) instead of capping at 128, which speeds up batches of few-column rows. The new reWriteBatchedInsertsSize connection property lowers that cap when set; the default of 0 uses that maximum. PR #4207
feat: invalidate the prepared-statement cache after CREATE/DROP/ALTER so callers no longer trip on "cached plan must not change result type" without opting into autosave=ALWAYS. Controlled by the new flushCacheOnDdl connection property (default true); set to false for the prior behaviour. PR #4067
feat: add connectExecutor connection property to customize the Executor used to run the worker task that performs the connection attempt when loginTimeout is in effect. The value is the fully qualified name of a class implementing java.util.concurrent.Executor. With a null value, the default, the driver retains the prior behavior of running the connection attempt on a daemon thread named "PostgreSQL JDBC driver connection thread". The executor must run the task on a thread other than the caller's. Running the attempt on a named thread lets applications that monitor driver-created threads identify it. PR #4165
feat: add classLoaderStrategy connection property to control which classloaders the driver searches when loading a class named by a connection property, for example socketFactory. The default driver-first now falls back to the thread context classloader when the driver's classloader cannot resolve the class, which fixes class loading in non-flat class paths such as Quarkus and OSGi. Set driver to keep the previous driver-classloader-only behaviour, or context-first to prefer the thread context classloader Issue #2112PR #4167
feat: add OID constants for geometric arrays, RECORD, and refcursorPR #4220
feat: LargeObjectBlobInputStream now skips by seeking instead of reading, and the driver exposes the server version so it can select the 64-bit large-object API where available PR #4204
Changed
refactor: the worker that runs the connection attempt under loginTimeout is now a FutureTask (ConnectTask) instead of the hand-rolled ConnectThread. When the caller hits the timeout, the task is now cancelled with cancel(true), which interrupts the worker thread rather than letting it run to completion. This makes the connection attempt interruptible, so loginTimeout can stop a slow connection attempt instead of leaking a thread. As before, a connection that the worker still manages to establish after the caller gives up is closed by the worker so that it does not leak. There are no public API changes and this should only lead to faster background resource cleanup for connections that time out. PR #4120
chore: PGXAConnection.ConnectionHandler now rejects setAutoCommit(false) and setSavepoint(...) during an active XA branch, in addition to the long-rejected setAutoCommit(true) / commit() / rollback(). The setSavepoint rejection was already meant to be in place but the guard misspelled the method name as setSavePoint, so savepoints silently went through. Both changes bring the proxy in line with JTA 1.2 §3.4. PR #4114
chore: commitPrepared / rollback-of-prepared now return XAER_RMFAIL instead of XAER_RMERR when the underlying connection is left in a non-idle TransactionState. Transaction managers (Geronimo, Narayana, Atomikos) treat XAER_RMFAIL as retryable on a fresh XAResource; the prepared transaction is no longer abandoned. PR #4114
refactor: derive getPrimaryKeys from pg_constraint.conkeyPR #4202
Fixed
fix: the published GitHub release now ships the released postgresql-<version>.jar and its detached PGP signature, taken from the same signed build that is uploaded to Maven Central, instead of a leftover SNAPSHOT jar Issue #3812PR #3814
fix: simplify the Statement#cancel state machine by dropping the redundant CANCELLED state. killTimerTask now waits for the state to return to IDLE directly, which removes a spin-forever case when more than one thread observes the cancel completing PR #1827.
perf: defer simple-query flushes until the driver reads the response, allowing BEGIN and the following query to share a network flush Issue #3894PR #4196
fix: reWriteBatchedInserts no longer throws IllegalArgumentException when batching a parameterless INSERT (for example INSERT INTO t VALUES (1, 2)) of 256 rows or more PR #4207
fix: a comment before CALL in a CallableStatement no longer hides the native call, so OUT parameter registration works for /* comment */ call proc(?, ?) and similar. Parser.modifyJdbcCall now skips leading whitespace and SQL comments (both -- and /* */) before the call, tolerates a trailing comment after a { ... } escape, and no longer adds a spurious comma when moving an OUT parameter into a call whose arguments are only a comment Issue #2538PR #4209
fix: PreparedStatement.toString() no longer throws for a bytea value supplied as text via PGobject. Hex-format values (\x...) are validated and rendered as a bytea literal, and escape-format values are quoted and cast like any other literal Issue #3757PR #4201
fix: the driver no longer nulls the contextClassLoader of shared ForkJoinPool.commonPool() worker threads, which previously left unrelated tasks on those threads running with a null classloader Issue #4155PR #4156
fix: PgResultSet#getCharacterStream wraps String in a StringReaderPR #4063
fix: PGXAConnection no longer saves and restores the underlying connection's JDBC autoCommit flag. All XA-protocol SQL (BEGIN, PREPARE TRANSACTION, COMMIT, ROLLBACK, COMMIT PREPARED, ROLLBACK PREPARED, the recover() SELECT) is sent through QUERY_SUPPRESS_BEGIN, so the caller's autoCommit value is invariant across every XAResource call. Fixes the "2nd phase commit must be issued using an idle connection" failure during recovery on managed datasources that pool connections with autoCommit=false (TomEE, WildFly, WebSphere Liberty) PR #4114
fix: PGXAConnection.prepare() now mutates XA state only after PREPARE TRANSACTION succeeds. A failed PREPARE previously left the driver thinking the branch was already prepared, so the follow-up rollback(xid) tried ROLLBACK PREPARED against a non-existent gid and returned XAER_RMERR. Transaction managers (Narayana) escalated this to HeuristicMixedException. With the fix, rollback(xid) takes the active-branch path and issues a plain ROLLBACK, which the server accepts cleanly. Fixes Issue #3153, Issue #3123. PR #4114
fix: an updatable result set over an unqualified table name is now classified using only the table visible through search_path. When two schemas held a table with the same name and the same primary or unique index name but a different set of key columns, the driver took the union of both schemas' columns, so the result set could be wrongly rejected as not updatable PR #4214. Supersedes PR #3400.
fix: LargeObject.close() now flushes a buffered output stream before marking the object closed, so closing a large object without an explicit flush() no longer drops buffered writes. The flush runs while the object is still open (it calls back into LargeObject.write()), and lo_close always runs afterward; a failure from lo_close no longer masks an earlier flush error, and the transaction is not committed when the flush failed Issue #4247PR #4248.
fix: reject empty timestamp, timestamptz, and
✂ Note
PR body was truncated to here.
Configuration
📅 Schedule: (in timezone Etc/UTC)
Branch creation
"before 8am on monday"
Automerge
At any time (no schedule defined)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
If you want to rebase/retry this PR, check this box
Based on the git blame history of the changed files, we recommend the following reviewers:
Committers with relevant context:@pjfanning
You can request their reviews formally with /request-review @pjfanning.
Contributors with relevant context:@Ma77Ball, @aglinxinyuan, @Yicong-Huang
You can notify them by mentioning @Ma77Ball, @aglinxinyuan, @Yicong-Huang in a comment.
Compared against main d0ab10d benchmarked on this same runner, so the delta is largely free of cross-runner hardware noise. The "7d avg" column still reflects the gh-pages dashboard. Treat <±5% as noise unless repeated.
View the top 3 failed test(s) by shortest run time
org.apache.texera.service.resource.LiteLLMProxyAuthSpec::(It is not a test it is a sbt.testing.SuiteSelector)
Stack Traces | 0.001s run time
com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.18.8 requires Jackson Databind version >= 2.18.0 and < 2.19.0 - Found jackson-databind version 2.21.0
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule$(JacksonModule.scala:46)
at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)
at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:909)
at org.apache.texera.service.resource.LiteLLMProxyAuthSpec.<init>(LiteLLMProxyAuthSpec.scala:49)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:347)
at java.base/java.lang.Class.newInstance(Class.java:647)
at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:454)
at sbt.TestRunner.runTest$1(TestFramework.scala:153)
at sbt.TestRunner.run(TestFramework.scala:168)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:336)
at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:296)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFunction.apply(TestFramework.scala:348)
at sbt.Tests$.$anonfun$toTask$1(Tests.scala:436)
at sbt.std.Transform$$anon$3.$anonfun$apply$2(Transform.scala:47)
at sbt.std.Transform$$anon$4.work(Transform.scala:69)
at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
at sbt.Execute.work(Execute.scala:292)
at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
org.apache.texera.service.NotebookMigrationServiceRunSpec::NotebookMigrationService.initialize should open a connection pool against the configured JDBC URL
Stack Traces | 0.042s run time
com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.18.8 requires Jackson Databind version >= 2.18.0 and < 2.19.0 - Found jackson-databind version 2.21.0
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule$(JacksonModule.scala:46)
at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)
at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:909)
at org.apache.texera.service.NotebookMigrationService.initialize(NotebookMigrationService.scala:52)
at org.apache.texera.service.NotebookMigrationServiceRunSpec.$anonfun$initialized$3(NotebookMigrationServiceRunSpec.scala:157)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at scala.util.Try$.apply(Try.scala:217)
at org.apache.texera.service.NotebookMigrationServiceRunSpec.initialized$lzycompute(NotebookMigrationServiceRunSpec.scala:157)
at org.apache.texera.service.NotebookMigrationServiceRunSpec.initialized(NotebookMigrationServiceRunSpec.scala:140)
at org.apache.texera.service.NotebookMigrationServiceRunSpec.resolve(NotebookMigrationServiceRunSpec.scala:174)
at org.apache.texera.service.NotebookMigrationServiceRunSpec.$anonfun$new$2(NotebookMigrationServiceRunSpec.scala:184)
at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.flatspec.AnyFlatSpecLike$$anon$5.apply(AnyFlatSpecLike.scala:1832)
at org.scalatest.TestSuite.withFixture(TestSuite.scala:196)
at org.scalatest.TestSuite.withFixture$(TestSuite.scala:195)
at org.scalatest.flatspec.AnyFlatSpec.withFixture(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.invokeWithFixture$1(AnyFlatSpecLike.scala:1830)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$runTest$1(AnyFlatSpecLike.scala:1842)
at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
at org.scalatest.flatspec.AnyFlatSpecLike.runTest(AnyFlatSpecLike.scala:1842)
at org.scalatest.flatspec.AnyFlatSpecLike.runTest$(AnyFlatSpecLike.scala:1824)
at org.scalatest.flatspec.AnyFlatSpec.runTest(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$runTests$1(AnyFlatSpecLike.scala:1900)
at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
at scala.collection.immutable.List.foreach(List.scala:323)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:390)
at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:427)
at scala.collection.immutable.List.foreach(List.scala:323)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
at org.scalatest.flatspec.AnyFlatSpecLike.runTests(AnyFlatSpecLike.scala:1900)
at org.scalatest.flatspec.AnyFlatSpecLike.runTests$(AnyFlatSpecLike.scala:1899)
at org.scalatest.flatspec.AnyFlatSpec.runTests(AnyFlatSpec.scala:1686)
at org.scalatest.Suite.run(Suite.scala:1114)
at org.scalatest.Suite.run$(Suite.scala:1096)
at org.scalatest.flatspec.AnyFlatSpec.org$scalatest$flatspec$AnyFlatSpecLike$$super$run(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$run$1(AnyFlatSpecLike.scala:1945)
at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
at org.scalatest.flatspec.AnyFlatSpecLike.run(AnyFlatSpecLike.scala:1945)
at org.scalatest.flatspec.AnyFlatSpecLike.run$(AnyFlatSpecLike.scala:1943)
at org.scalatest.flatspec.AnyFlatSpec.run(AnyFlatSpec.scala:1686)
at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
at sbt.TestRunner.runTest$1(TestFramework.scala:153)
at sbt.TestRunner.run(TestFramework.scala:168)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:336)
at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:296)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFunction.apply(TestFramework.scala:348)
at sbt.Tests$.$anonfun$toTask$1(Tests.scala:436)
at sbt.std.Transform$$anon$3.$anonfun$apply$2(Transform.scala:47)
at sbt.std.Transform$$anon$4.work(Transform.scala:69)
at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
at sbt.Execute.work(Execute.scala:292)
at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
org.apache.texera.service.NotebookMigrationServiceRunSpec::NotebookMigrationService.initialize should register the Scala module on Dropwizard's object mapper
Stack Traces | 0.047s run time
org.scalatest.exceptions.TestFailedException: "{[]}" was not equal to "{["notebookName":"notebook.ipynb","cellOutcomes":{"migrated":[1,2],"failed":null}]}"
at org.scalatest.matchers.MatchersHelper$.indicateFailure(MatchersHelper.scala:392)
at org.scalatest.matchers.should.Matchers$AnyShouldWrapper.shouldBe(Matchers.scala:7539)
at org.apache.texera.service.NotebookMigrationServiceRunSpec.$anonfun$new$4(NotebookMigrationServiceRunSpec.scala:208)
at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.flatspec.AnyFlatSpecLike$$anon$5.apply(AnyFlatSpecLike.scala:1832)
at org.scalatest.TestSuite.withFixture(TestSuite.scala:196)
at org.scalatest.TestSuite.withFixture$(TestSuite.scala:195)
at org.scalatest.flatspec.AnyFlatSpec.withFixture(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.invokeWithFixture$1(AnyFlatSpecLike.scala:1830)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$runTest$1(AnyFlatSpecLike.scala:1842)
at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
at org.scalatest.flatspec.AnyFlatSpecLike.runTest(AnyFlatSpecLike.scala:1842)
at org.scalatest.flatspec.AnyFlatSpecLike.runTest$(AnyFlatSpecLike.scala:1824)
at org.scalatest.flatspec.AnyFlatSpec.runTest(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$runTests$1(AnyFlatSpecLike.scala:1900)
at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
at scala.collection.immutable.List.foreach(List.scala:323)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:390)
at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:427)
at scala.collection.immutable.List.foreach(List.scala:323)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
at org.scalatest.flatspec.AnyFlatSpecLike.runTests(AnyFlatSpecLike.scala:1900)
at org.scalatest.flatspec.AnyFlatSpecLike.runTests$(AnyFlatSpecLike.scala:1899)
at org.scalatest.flatspec.AnyFlatSpec.runTests(AnyFlatSpec.scala:1686)
at org.scalatest.Suite.run(Suite.scala:1114)
at org.scalatest.Suite.run$(Suite.scala:1096)
at org.scalatest.flatspec.AnyFlatSpec.org$scalatest$flatspec$AnyFlatSpecLike$$super$run(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$run$1(AnyFlatSpecLike.scala:1945)
at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
at org.scalatest.flatspec.AnyFlatSpecLike.run(AnyFlatSpecLike.scala:1945)
at org.scalatest.flatspec.AnyFlatSpecLike.run$(AnyFlatSpecLike.scala:1943)
at org.scalatest.flatspec.AnyFlatSpec.run(AnyFlatSpec.scala:1686)
at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
at sbt.TestRunner.runTest$1(TestFramework.scala:153)
at sbt.TestRunner.run(TestFramework.scala:168)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:336)
at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:296)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFunction.apply(TestFramework.scala:348)
at sbt.Tests$.$anonfun$toTask$1(Tests.scala:436)
at sbt.std.Transform$$anon$3.$anonfun$apply$2(Transform.scala:47)
at sbt.std.Transform$$anon$4.work(Transform.scala:69)
at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
at sbt.Execute.work(Execute.scala:292)
at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
org.apache.texera.service.AccessControlServiceRunSpec::AccessControlService.initialize should open a connection pool against the configured JDBC URL
Stack Traces | 0.088s run time
com.fasterxml.jackson.databind.JsonMappingException: Scala module 2.18.8 requires Jackson Databind version >= 2.18.0 and < 2.19.0 - Found jackson-databind version 2.21.0
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule(JacksonModule.scala:61)
at com.fasterxml.jackson.module.scala.JacksonModule.setupModule$(JacksonModule.scala:46)
at com.fasterxml.jackson.module.scala.DefaultScalaModule.setupModule(DefaultScalaModule.scala:17)
at com.fasterxml.jackson.databind.ObjectMapper.registerModule(ObjectMapper.java:909)
at org.apache.texera.service.AccessControlService.initialize(AccessControlService.scala:48)
at org.apache.texera.service.AccessControlServiceRunSpec.$anonfun$initialized$3(AccessControlServiceRunSpec.scala:172)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at scala.util.Try$.apply(Try.scala:217)
at org.apache.texera.service.AccessControlServiceRunSpec.initialized$lzycompute(AccessControlServiceRunSpec.scala:172)
at org.apache.texera.service.AccessControlServiceRunSpec.initialized(AccessControlServiceRunSpec.scala:155)
at org.apache.texera.service.AccessControlServiceRunSpec.resolve(AccessControlServiceRunSpec.scala:189)
at org.apache.texera.service.AccessControlServiceRunSpec.$anonfun$new$3(AccessControlServiceRunSpec.scala:199)
at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.flatspec.AnyFlatSpecLike$$anon$5.apply(AnyFlatSpecLike.scala:1832)
at org.scalatest.TestSuite.withFixture(TestSuite.scala:196)
at org.scalatest.TestSuite.withFixture$(TestSuite.scala:195)
at org.scalatest.flatspec.AnyFlatSpec.withFixture(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.invokeWithFixture$1(AnyFlatSpecLike.scala:1830)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$runTest$1(AnyFlatSpecLike.scala:1842)
at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
at org.scalatest.flatspec.AnyFlatSpecLike.runTest(AnyFlatSpecLike.scala:1842)
at org.scalatest.flatspec.AnyFlatSpecLike.runTest$(AnyFlatSpecLike.scala:1824)
at org.scalatest.flatspec.AnyFlatSpec.runTest(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$runTests$1(AnyFlatSpecLike.scala:1900)
at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
at scala.collection.immutable.List.foreach(List.scala:323)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:390)
at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:427)
at scala.collection.immutable.List.foreach(List.scala:323)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
at org.scalatest.flatspec.AnyFlatSpecLike.runTests(AnyFlatSpecLike.scala:1900)
at org.scalatest.flatspec.AnyFlatSpecLike.runTests$(AnyFlatSpecLike.scala:1899)
at org.scalatest.flatspec.AnyFlatSpec.runTests(AnyFlatSpec.scala:1686)
at org.scalatest.Suite.run(Suite.scala:1114)
at org.scalatest.Suite.run$(Suite.scala:1096)
at org.scalatest.flatspec.AnyFlatSpec.org$scalatest$flatspec$AnyFlatSpecLike$$super$run(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$run$1(AnyFlatSpecLike.scala:1945)
at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
at org.scalatest.flatspec.AnyFlatSpecLike.run(AnyFlatSpecLike.scala:1945)
at org.scalatest.flatspec.AnyFlatSpecLike.run$(AnyFlatSpecLike.scala:1943)
at org.scalatest.flatspec.AnyFlatSpec.run(AnyFlatSpec.scala:1686)
at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
at sbt.TestRunner.runTest$1(TestFramework.scala:153)
at sbt.TestRunner.run(TestFramework.scala:168)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:336)
at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:296)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFunction.apply(TestFramework.scala:348)
at sbt.Tests$.$anonfun$toTask$1(Tests.scala:436)
at sbt.std.Transform$$anon$3.$anonfun$apply$2(Transform.scala:47)
at sbt.std.Transform$$anon$4.work(Transform.scala:69)
at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
at sbt.Execute.work(Execute.scala:292)
at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
org.apache.texera.service.AccessControlServiceRunSpec::AccessControlService.initialize should register the Scala module on Dropwizard's object mapper
Stack Traces | 0.113s run time
org.scalatest.exceptions.TestFailedException: "{[]}" was not equal to "{["userEmail":"user@example.com","grantedAccess":{"read":[1,2],"write":null}]}"
at org.scalatest.matchers.MatchersHelper$.indicateFailure(MatchersHelper.scala:392)
at org.scalatest.matchers.should.Matchers$AnyShouldWrapper.shouldBe(Matchers.scala:7539)
at org.apache.texera.service.AccessControlServiceRunSpec.$anonfun$new$5(AccessControlServiceRunSpec.scala:222)
at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
at org.scalatest.OutcomeOf.outcomeOf$(OutcomeOf.scala:83)
at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
at org.scalatest.Transformer.apply(Transformer.scala:22)
at org.scalatest.Transformer.apply(Transformer.scala:20)
at org.scalatest.flatspec.AnyFlatSpecLike$$anon$5.apply(AnyFlatSpecLike.scala:1832)
at org.scalatest.TestSuite.withFixture(TestSuite.scala:196)
at org.scalatest.TestSuite.withFixture$(TestSuite.scala:195)
at org.scalatest.flatspec.AnyFlatSpec.withFixture(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.invokeWithFixture$1(AnyFlatSpecLike.scala:1830)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$runTest$1(AnyFlatSpecLike.scala:1842)
at org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
at org.scalatest.flatspec.AnyFlatSpecLike.runTest(AnyFlatSpecLike.scala:1842)
at org.scalatest.flatspec.AnyFlatSpecLike.runTest$(AnyFlatSpecLike.scala:1824)
at org.scalatest.flatspec.AnyFlatSpec.runTest(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$runTests$1(AnyFlatSpecLike.scala:1900)
at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:413)
at scala.collection.immutable.List.foreach(List.scala:323)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:390)
at org.scalatest.SuperEngine.$anonfun$runTestsInBranch$1(Engine.scala:427)
at scala.collection.immutable.List.foreach(List.scala:323)
at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
at org.scalatest.SuperEngine.runTestsInBranch(Engine.scala:396)
at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:475)
at org.scalatest.flatspec.AnyFlatSpecLike.runTests(AnyFlatSpecLike.scala:1900)
at org.scalatest.flatspec.AnyFlatSpecLike.runTests$(AnyFlatSpecLike.scala:1899)
at org.scalatest.flatspec.AnyFlatSpec.runTests(AnyFlatSpec.scala:1686)
at org.scalatest.Suite.run(Suite.scala:1114)
at org.scalatest.Suite.run$(Suite.scala:1096)
at org.scalatest.flatspec.AnyFlatSpec.org$scalatest$flatspec$AnyFlatSpecLike$$super$run(AnyFlatSpec.scala:1686)
at org.scalatest.flatspec.AnyFlatSpecLike.$anonfun$run$1(AnyFlatSpecLike.scala:1945)
at org.scalatest.SuperEngine.runImpl(Engine.scala:535)
at org.scalatest.flatspec.AnyFlatSpecLike.run(AnyFlatSpecLike.scala:1945)
at org.scalatest.flatspec.AnyFlatSpecLike.run$(AnyFlatSpecLike.scala:1943)
at org.scalatest.flatspec.AnyFlatSpec.run(AnyFlatSpec.scala:1686)
at org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:321)
at org.scalatest.tools.Framework$ScalaTestTask.execute(Framework.scala:517)
at sbt.TestRunner.runTest$1(TestFramework.scala:153)
at sbt.TestRunner.run(TestFramework.scala:168)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:336)
at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:296)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFramework$$anon$3$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:336)
at sbt.TestFunction.apply(TestFramework.scala:348)
at sbt.Tests$.$anonfun$toTask$1(Tests.scala:436)
at sbt.std.Transform$$anon$3.$anonfun$apply$2(Transform.scala:47)
at sbt.std.Transform$$anon$4.work(Transform.scala:69)
at sbt.Execute.$anonfun$submit$2(Execute.scala:283)
at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:24)
at sbt.Execute.work(Execute.scala:292)
at sbt.Execute.$anonfun$submit$1(Execute.scala:283)
at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
at sbt.CompletionService$$anon$2.call(CompletionService.scala:65)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
renovate-bot
changed the title
chore(deps, amber): update sbt patch updates
chore(deps): update sbt patch updates
Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.14.7→0.14.80.14.6→0.14.81.11.1→1.11.72.9.0→2.9.13.14.2→3.14.50.12.0→0.12.22.10.6→2.10.83.9.5→3.9.61.4.6→1.4.91.5.1→1.5.21.5.2→1.5.34.0.7→4.0.174.0.7→4.0.171.3.23→1.3.291.3.23→1.3.294.0.7→4.0.174.0.7→4.0.171.3.23→1.3.294.0.7→4.0.174.8.184→4.8.1944.8.157→4.8.1944.8.184→4.8.19421.0.0→21.0.2-legacy4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final4.2.15.Final→4.2.17.Final3.2→3.2.19.4.20.v20190813→9.4.58.v202508149.4.20.v20190813→9.4.58.v2025081411.0.24→11.0.269.4.20.v20190813→9.4.58.v202508145.13.0.202109080827-r→5.13.5.202508271544-r0.4.3→0.4.43.1.0-M1→3.1.0-M1042.7.10→42.7.133.2.15→3.2.203.2.17→3.2.201.7.26→1.7.36Release Notes
scalacenter/sbt-scalafix (ch.epfl.scala:sbt-scalafix)
v0.14.8Compare Source
Pull Requests
sbt/sbt-native-packager (com.github.sbt:sbt-native-packager)
v1.11.7: 1.11.7 SBT Native Packager 📦Compare Source
In This Release
sbt-herokufrom related plugins list (#1731)🐛 Bug Fixes
v1.11.4: 1.11.4Compare Source
sbt-native-packager 1.11.4 is cross published to:
About sbt-native-packager
sbt-native-packager is an sbt plugin to build packages for different operating systems. See https://www.scala-sbt.org/sbt-native-packager/ for the documentation.
Security update
Updates
Behind the scene
Full Changelog: sbt/sbt-native-packager@v1.11.3...v1.11.4
v1.11.3: 1.11.3Compare Source
sbt-native-packager 1.11.3 is cross published to:
About sbt-native-packager
sbt-native-packager is an sbt plugin to build packages for different operating systems. See https://www.scala-sbt.org/sbt-native-packager/ for the documentation.
sbt 2.x migration
Other updates
Behind the scene
New Contributors
Full Changelog: sbt/sbt-native-packager@v1.11.1...v1.11.3
scalapb/scalapb-json4s (com.thesamet.scalapb:scalapb-json4s)
v0.12.2Compare Source
v0.12.1Compare Source
playframework/play-json (com.typesafe.play:play-json)
v2.10.8: Play JSON 2.10.8Compare Source
Noteworthy improvements
This limit can be adjusted using the system property
play.json.parser.maxNestingDepth.We assume a depth of 1000 should be more than sufficient for virtually all real-world use cases.
This change helps prevent both potential
OutOfMemoryErrors andStackOverflowErrors.The latter, however, is not a concern for Play JSON, since it already uses a
@tailrec-optimized parsing method.As a result, Play JSON is not affected by CVE-2025-52999, which specifically addresses
StackOverflowErrorrisks.This improvement is simply an additional safety measure.
Changes
❤️ Thanks to our premium sponsors!
If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor.
You can also individually sponsor the project by becoming a backer.
🙇 Thanks to our contributors
Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors.
Special thanks to all code contributors who helped with this particular release (they are listed below)!
v2.10.7: Play JSON 2.10.7Compare Source
Noteworthy Scala 3 improvements
Changes
Dependency Graphaction (backport #1114) by @ihostage by @mergify[bot]❤️ Thanks to our premium sponsors!
If you find this OSS project useful for work, please consider asking your company to support it by becoming a sponsor.
You can also individually sponsor the project by becoming a backer.
🙇 Thanks to our contributors
Finally, thanks to the community for their help with detailed bug reports, discussions about new features and pull request reviews. This project is only possible due to the help we had from amazing contributors.
Special thanks to all code contributors who helped with this particular release (they are listed below)!
lightbend/scala-logging (com.typesafe.scala-logging:scala-logging)
v3.9.6Compare Source
What's Changed
New Contributors
Full Changelog: scala-garden/scala-logging@v3.9.5...v3.9.6
lightbend/config (com.typesafe:config)
v1.4.9Compare Source
What's Changed
New Contributors
Full Changelog: lightbend/config@v1.4.8...v1.4.9
v1.4.8Compare Source
What's Changed
Full Changelog: lightbend/config@v1.4.7...v1.4.8
v1.4.7Compare Source
What's Changed
New Contributors
Full Changelog: lightbend/config@v1.4.6...v1.4.7
altoo-ag/pekko-kryo-serialization (io.altoo:pekko-kryo-serialization)
v1.5.2Compare Source
What's Changed
Full Changelog: altoo-ag/pekko-kryo-serialization@v1.5.1...v1.5.2
altoo-ag/scala-kryo-serialization (io.altoo:scala-kryo-serialization)
v1.5.3Compare Source
What's Changed
Full Changelog: altoo-ag/scala-kryo-serialization@v1.5.2...v1.5.3
kubernetes-client/java (io.kubernetes:client-java)
v21.0.2-legacyCompare Source
[maven-release-plugin] copy for tag v21.0.2-legacy
v21.0.1Compare Source
v21.0.0-legacyCompare Source
ehcache/sizeof (org.ehcache:sizeof)
v0.4.4Compare Source
pgjdbc/pgjdbc (org.postgresql:postgresql)
v42.7.13Added
search_pathchange via GUC_REPORT (PostgreSQL 18+), so cached plans are no longer used against the wrong schema PR #4259reWriteBatchedInsertsnow merges up to 32768 rows into one multi-valuesINSERT(bounded by the 65535 bind-parameter limit on the extended protocol) instead of capping at 128, which speeds up batches of few-column rows. The newreWriteBatchedInsertsSizeconnection property lowers that cap when set; the default of0uses that maximum. PR #4207autosave=ALWAYS. Controlled by the newflushCacheOnDdlconnection property (defaulttrue); set tofalsefor the prior behaviour. PR #4067connectExecutorconnection property to customize theExecutorused to run the worker task that performs the connection attempt whenloginTimeoutis in effect. The value is the fully qualified name of a class implementingjava.util.concurrent.Executor. With a null value, the default, the driver retains the prior behavior of running the connection attempt on a daemon thread named"PostgreSQL JDBC driver connection thread". The executor must run the task on a thread other than the caller's. Running the attempt on a named thread lets applications that monitor driver-created threads identify it. PR #4165classLoaderStrategyconnection property to control which classloaders the driver searches when loading a class named by a connection property, for examplesocketFactory. The defaultdriver-firstnow falls back to the thread context classloader when the driver's classloader cannot resolve the class, which fixes class loading in non-flat class paths such as Quarkus and OSGi. Setdriverto keep the previous driver-classloader-only behaviour, orcontext-firstto prefer the thread context classloader Issue #2112 PR #4167RECORD, andrefcursorPR #4220LargeObjectBlobInputStreamnow skips by seeking instead of reading, and the driver exposes the server version so it can select the 64-bit large-object API where available PR #4204Changed
loginTimeoutis now aFutureTask(ConnectTask) instead of the hand-rolledConnectThread. When the caller hits the timeout, the task is now cancelled withcancel(true), which interrupts the worker thread rather than letting it run to completion. This makes the connection attempt interruptible, sologinTimeoutcan stop a slow connection attempt instead of leaking a thread. As before, a connection that the worker still manages to establish after the caller gives up is closed by the worker so that it does not leak. There are no public API changes and this should only lead to faster background resource cleanup for connections that time out. PR #4120PGXAConnection.ConnectionHandlernow rejectssetAutoCommit(false)andsetSavepoint(...)during an active XA branch, in addition to the long-rejectedsetAutoCommit(true)/commit()/rollback(). ThesetSavepointrejection was already meant to be in place but the guard misspelled the method name assetSavePoint, so savepoints silently went through. Both changes bring the proxy in line with JTA 1.2 §3.4. PR #4114commitPrepared/rollback-of-prepared now returnXAER_RMFAILinstead ofXAER_RMERRwhen the underlying connection is left in a non-idleTransactionState. Transaction managers (Geronimo, Narayana, Atomikos) treatXAER_RMFAILas retryable on a freshXAResource; the prepared transaction is no longer abandoned. PR #4114getPrimaryKeysfrompg_constraint.conkeyPR #4202Fixed
postgresql-<version>.jarand its detached PGP signature, taken from the same signed build that is uploaded to Maven Central, instead of a leftover SNAPSHOT jar Issue #3812 PR #3814Statement#cancelstate machine by dropping the redundantCANCELLEDstate.killTimerTasknow waits for the state to return toIDLEdirectly, which removes a spin-forever case when more than one thread observes the cancel completing PR #1827.BEGINand the following query to share a network flush Issue #3894 PR #4196reWriteBatchedInsertsno longer throwsIllegalArgumentExceptionwhen batching a parameterlessINSERT(for exampleINSERT INTO t VALUES (1, 2)) of 256 rows or more PR #4207CALLin aCallableStatementno longer hides the native call, so OUT parameter registration works for/* comment */ call proc(?, ?)and similar.Parser.modifyJdbcCallnow skips leading whitespace and SQL comments (both--and/* */) before the call, tolerates a trailing comment after a{ ... }escape, and no longer adds a spurious comma when moving an OUT parameter into a call whose arguments are only a comment Issue #2538 PR #4209PreparedStatement.toString()no longer throws for abyteavalue supplied as text viaPGobject. Hex-format values (\x...) are validated and rendered as abytealiteral, and escape-format values are quoted and cast like any other literal Issue #3757 PR #4201contextClassLoaderof sharedForkJoinPool.commonPool()worker threads, which previously left unrelated tasks on those threads running with anullclassloader Issue #4155 PR #4156PgResultSet#getCharacterStreamwrapsStringin aStringReaderPR #4063PGXAConnectionno longer saves and restores the underlying connection's JDBCautoCommitflag. All XA-protocol SQL (BEGIN,PREPARE TRANSACTION,COMMIT,ROLLBACK,COMMIT PREPARED,ROLLBACK PREPARED, therecover()SELECT) is sent throughQUERY_SUPPRESS_BEGIN, so the caller'sautoCommitvalue is invariant across everyXAResourcecall. Fixes the "2nd phase commit must be issued using an idle connection" failure during recovery on managed datasources that pool connections withautoCommit=false(TomEE, WildFly, WebSphere Liberty) PR #4114PGXAConnection.prepare()now mutates XA state only afterPREPARE TRANSACTIONsucceeds. A failedPREPAREpreviously left the driver thinking the branch was already prepared, so the follow-uprollback(xid)triedROLLBACK PREPAREDagainst a non-existent gid and returnedXAER_RMERR. Transaction managers (Narayana) escalated this toHeuristicMixedException. With the fix,rollback(xid)takes the active-branch path and issues a plainROLLBACK, which the server accepts cleanly. Fixes Issue #3153, Issue #3123. PR #4114search_path. When two schemas held a table with the same name and the same primary or unique index name but a different set of key columns, the driver took the union of both schemas' columns, so the result set could be wrongly rejected as not updatable PR #4214. Supersedes PR #3400.LargeObject.close()now flushes a buffered output stream before marking the object closed, so closing a large object without an explicitflush()no longer drops buffered writes. The flush runs while the object is still open (it calls back intoLargeObject.write()), andlo_closealways runs afterward; a failure fromlo_closeno longer masks an earlier flush error, and the transaction is not committed when the flush failed Issue #4247 PR #4248.timestamp,timestamptz, andConfiguration
📅 Schedule: (in timezone Etc/UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.