On Mon, Jun 26, 2023 at 3:43 PM Gary Gregory <garydgreg...@gmail.com> wrote:
> Hi Phil, > > YW and thank you for the review. > > Yes, you are right that this is about POOL-269. While binary compatibility > is preserved 100%, source compatibility is not. This is one of those rare > cases where you can't make an omelette without breaking some eggs ;-) Since > binary compatibility is preserved, I don't think this is worth going to a > new major release. > We should definitely add a *loud* statement in the release notes then and directions for how to work around because I am sure a lot of downstream builds will fail due to this as DBCP did. Is there no way that we can somehow keep the source compatability? Pool is widely used and a lot of builds will break IIUC what is going on here. Phil > > I have POOL projects that will benefit (greatly IMO) from cleaner exception > handling and avoid having to throw/propagate Exception or catch/rethrow > Exception as a domain Exception, and will now instead be able to use domain > specific exception for resources being pooled from the get go. > > I'll obviously adjust DBCP for this as soon as possible (IOW, > post-release). > > For the other items, I will try and reproduce. My tests builds were ok on > Windows 10 and macOS latest with Java 8. Maybe by hardware is too slow or > too fast compared to yours, hard to say. > > Gary > > On Mon, Jun 26, 2023, 16:53 Phil Steitz <phil.ste...@gmail.com> wrote: > > > Hi Gary, First, thanks for doing this. There are a lot of good fixes in > > here. > > > > I checked the build, sigs et al on a couple of platforms and did not > > find anything major except one item. I will start with the > > show-stopper (IMO) and then the other smaller things. > > > > 1. I get compilation failure when I try to compile the latest DBCP > > release with this code. I think it may have something to do with > > POOL-269. Here is one example: > > > > [*ERROR*] > > > /Users/psteitz/Downloads/commons-dbcp2-2.9.0-src/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java:[45,70] > > wrong number of type arguments; required 2 > > > > This should not happen in a dot release. > > > > 2. On MacOS 13.4.1, OpenJDK 20.0.1, I got the following test failure > > just one time and can't reproduce: > > > > java.util.concurrent.ExecutionException: > > java.lang.NullPointerException: Cannot invoke > > > > > "org.apache.commons.pool2.impl.GenericKeyedObjectPool$ObjectDeque.getIdleObjects()" > > because the return value of "java.util.Map.get(Object)" is null > > > > at > > java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) > > at > > java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) > > at > > > org.apache.commons.pool2.impl.TestGenericKeyedObjectPool.lambda$testConcurrentBorrowAndClear$2(TestGenericKeyedObjectPool.java:1056) > > ... 71 more > > Caused by: java.lang.NullPointerException: Cannot invoke > > > > > "org.apache.commons.pool2.impl.GenericKeyedObjectPool$ObjectDeque.getIdleObjects()" > > because the return value of "java.util.Map.get(Object)" is null > > at > > > org.apache.commons.pool2.impl.GenericKeyedObjectPool.addIdleObject(GenericKeyedObjectPool.java:307) > > at > > > org.apache.commons.pool2.impl.GenericKeyedObjectPool.addObject(GenericKeyedObjectPool.java:332) > > at > > > org.apache.commons.pool2.KeyedObjectPool.addObjects(KeyedObjectPool.java:136) > > at > > > org.apache.commons.pool2.KeyedObjectPool.addObjects(KeyedObjectPool.java:113) > > at > > > org.apache.commons.pool2.impl.TestGenericKeyedObjectPool.lambda$testConcurrentBorrowAndClear$0(TestGenericKeyedObjectPool.java:1036) > > at > > > java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:577) > > at > > java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) > > at > > > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) > > at > > > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) > > at java.base/java.lang.Thread.run(Thread.java:1623) > > > > This one is driving me crazy because the NPE should not be possible > > due to key registration guarding. I will keep digging on this. > > > > 3. > > > > I see this one on every run, both config above and Ubuntu 20.0.4 / > > OpenJDK 11.0.19 > > > > Exception in thread "Thread-1305" org.opentest4j.AssertionFailedError > > > > at > > org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:34) > > > > at org.junit.jupiter.api.Assertions.fail(Assertions.java:116) > > > > at > > > org.apache.commons.pool2.impl.TestGenericKeyedObjectPool.lambda$testClearUnblocksWaiters$3(TestGenericKeyedObjectPool.java:1237) > > > > at java.base/java.lang.Thread.run(Thread.java:1623) > > > > The test that causes it doesn't fail because it happens in a thread > > that the test spawns and the test does not wait for the threads it > > starts to finish. Digging into it, I realize this is my sloppiness as > > I committed this test case. I will make a PR to fix it. I don't > > think that it indicates a bug. > > > > 4. I forgot to add since tag on the new version of GKOP clear that > > adds reuseCapacity parm. Will fix in the same PR. > > > > 5. Small nit. There is a vestigal paragraph in the release notes > > template that I think should be dropped: > > > > > > No client code changes are required to migrate from versions 2.0-2.3 > > to version 2.4.3. > > > > Users of version 1.x should consult the migration guide on the Commons > > Pool web site. > > > > Phil > > > > On Sat, Jun 24, 2023 at 6:27 PM Gary Gregory <garydgreg...@gmail.com> > > wrote: > > > > > We have fixed quite a few bugs and added some enhancements since > > > Apache Commons Pool 2.11.1 was released, so I would like to release > > > Apache Commons Pool 2.12.0. > > > > > > Apache Commons Pool 2.12.0 RC1 is available for review here: > > > https://dist.apache.org/repos/dist/dev/commons/pool/2.12.0-RC1 > > > (svn revision 62626) > > > > > > The Git tag commons-pool-2.12.0-RC1 commit for this RC is > > > e5dae53e0ce1211b40680e7dccf601c3c3897378 which you can browse here: > > > > > > > > > https://gitbox.apache.org/repos/asf?p=commons-pool.git;a=commit;h=e5dae53e0ce1211b40680e7dccf601c3c3897378 > > > You may checkout this tag using: > > > git clone https://gitbox.apache.org/repos/asf/commons-pool.git > > > --branch <https://gitbox.apache.org/repos/asf/commons-pool.git--branch > > > > > commons-pool-2.12.0-RC1 commons-pool-2.12.0-RC1 > > > > > > Maven artifacts are here: > > > > > > > > > https://repository.apache.org/content/repositories/orgapachecommons-1640/org/apache/commons/commons-pool2/2.12.0/ > > > > > > These are the artifacts and their hashes: > > > > > > #Release SHA-512s > > > #Sat Jun 24 21:12:18 EDT 2023 > > > > > > > > > commons-pool2-2.12.0-bin.tar.gz=e16b3a81c98feae6f9855a9bd2f2226dae51558c6e7bb77ee626e58853420ccc59d0943a594bba27ab7147524eca823cac47484e304ebaf14bd724b96bbffc25 > > > > > > > > > commons-pool2-2.12.0-bin.zip=29339f89a8efaa4ad3efbe656d610b8951be1a2a005ba7cb58ae356660331af9d473e8ada8bcdedd3d765c54d1dcfee8779ccb3902f0220de7e92e3039f95b8d > > > > > > > > > commons-pool2-2.12.0-bom.json=adb3e197d360dc7f53ab116c8fa8b1699d60560fcf977cae613c4cb493168a130ca8041d4ca475e75386f281688819fa5f5111e4aa937b24390a6de8e779f507 > > > > > > > > > commons-pool2-2.12.0-bom.xml=d964e9ec5ed51c10591093bdd0e174f8eb354a447f710e8c3749100fdbda7456e3922846a7190180e5044fe46e571cbc600aaea1b8f64a37c12c5deaa2f1662a > > > > > > > > > commons-pool2-2.12.0-javadoc.jar=356891b25f2e0367b74a7c4070c26d3cec7a3e608b6e47205e5ffeface590c9717187cb1fa72ebb4c484adaac2c7634ff1944c88282ba9c6551ab5abb58c87f4 > > > > > > > > > commons-pool2-2.12.0-sources.jar=6d955b437496d7af6f94844010a1df15efc04e2b9c15fadc1001777c54a60433570744605b0625a21adf53f03ce9e339809977384c562ad357a98370749c8ee6 > > > > > > > > > commons-pool2-2.12.0-src.tar.gz=eed0575d8357349c908fe8539db2c8ef23234c306f373d203d3d2d9a4ee1ae51cb6bdb2f86163e2296ac90f67a27c7d8cfde239cdfc8ab4966c6239b63f5984e > > > > > > > > > commons-pool2-2.12.0-src.zip=d8158fd14ee393a99dd0abcb55448b699182a50e0ea114cd3a2681799c9f5e58161f71a2420d0605d1ea39efb08c31be1f7a38531c169fd2c69cc604458ee184 > > > > > > > > > commons-pool2-2.12.0-test-sources.jar=db4fabab1fae77e5dcf8af35397635738c6296ebc25065be9a73725d6b837179c3973ae3ea531aa40056459f011ff90e3c2ef16ad2fa77114dacaa5709e3bf57 > > > > > > > > > commons-pool2-2.12.0-tests.jar=81af180ba6d2a5ce12064c9cc4eda4bc25d072fef55a3dc7ce48506571d40aceb6636c80202c31eff867eb8fd1971a44e0c2c2979019a1e32f43005d70cf2f5e > > > > > > > > > org.apache.commons_commons-pool2-2.12.0.spdx.json=ed49a8ca7a776ede454f8765f1bd71b5d6a2da35b8bd46ebe930f663127fbd6f248c27059b417ca578665295113ca56a0f0e6486c92436b7b9af7984e3f111db > > > > > > I have tested this with: > > > > > > mvn -V -Duser.name=$my_apache_id > > > -Dcommons.release-plugin.version=$commons_release_plugin_version > > > -Prelease -Ptest-deploy -P jacoco -P japicmp clean package site deploy > > > > > > using: > > > > > > Apache Maven 3.9.2 (c9616018c7a021c1c39be70fb2843d6f5f9b8a1c) > > > Maven home: /usr/local/Cellar/maven/3.9.2/libexec > > > Java version: 1.8.0_372, vendor: Homebrew, runtime: > > > /usr/local/Cellar/openjdk@8 > > > /1.8.0+372/libexec/openjdk.jdk/Contents/Home/jre > > > Default locale: en_US, platform encoding: UTF-8 > > > OS name: "mac os x", version: "13.4.1", arch: "x86_64", family: "mac" > > > Darwin gdg-mac-mini.local 22.5.0 Darwin Kernel Version 22.5.0: Thu Jun > > > 8 22:22:22 PDT 2023; root:xnu-8796.121.3~7/RELEASE_X86_64 x86_64 > > > > > > Details of changes since 2.11.1 are in the release notes: > > > > > > > > > https://dist.apache.org/repos/dist/dev/commons/pool/2.12.0-RC1/RELEASE-NOTES.txt > > > > > > > > > https://dist.apache.org/repos/dist/dev/commons/pool/2.12.0-RC1/site/changes-report.html > > > > > > Site: > > > > > > > > > https://dist.apache.org/repos/dist/dev/commons/pool/2.12.0-RC1/site/index.html > > > (note some *relative* links are broken and the 2.12.0 directories > > > are not yet created - these will be OK once the site is deployed.) > > > > > > JApiCmp Report (compared to 2.11.1): > > > > > > > > > https://dist.apache.org/repos/dist/dev/commons/pool/2.12.0-RC1/site/japicmp.html > > > > > > RAT Report: > > > > > > > > > https://dist.apache.org/repos/dist/dev/commons/pool/2.12.0-RC1/site/rat-report.html > > > > > > KEYS: > > > https://www.apache.org/dist/commons/KEYS > > > > > > Please review the release candidate and vote. > > > This vote will close no sooner than 72 hours from now. > > > > > > [ ] +1 Release these artifacts > > > [ ] +0 OK, but... > > > [ ] -0 OK, but really should fix... > > > [ ] -1 I oppose this release because... > > > > > > Thank you, > > > > > > Gary Gregory, > > > Release Manager (using key 86fdc7e2a11262cb) > > > > > > For following is intended as a helper and refresher for reviewers. > > > > > > Validating a release candidate > > > ============================== > > > > > > These guidelines are NOT complete. > > > > > > Requirements: Git, Java, Maven. > > > > > > You can validate a release from a release candidate (RC) tag as > follows. > > > > > > 1) Clone and checkout the RC tag > > > > > > git clone https://gitbox.apache.org/repos/asf/commons-pool.git > > > --branch commons-pool-2.12.0-RC1 commons-pool-2.12.0-RC1 > > > cd commons-pool-2.12.0-RC1 > > > > > > 2) Check Apache licenses > > > > > > This step is not required if the site includes a RAT report page which > > > you then must check. > > > > > > mvn apache-rat:check > > > > > > 3) Check binary compatibility > > > > > > Older components still use Apache Clirr: > > > > > > This step is not required if the site includes a Clirr report page > > > which you then must check. > > > > > > mvn clirr:check > > > > > > Newer components use JApiCmp with the japicmp Maven Profile: > > > > > > This step is not required if the site includes a JApiCmp report page > > > which you then must check. > > > > > > mvn install -DskipTests -P japicmp japicmp:cmp > > > > > > 4) Build the package > > > > > > mvn -V clean package > > > > > > You can record the Maven and Java version produced by -V in your VOTE > > > reply. > > > To gather OS information from a command line: > > > Windows: ver > > > Linux: uname -a > > > > > > 5) Build the site for a single module project > > > > > > Note: Some plugins require the components to be installed instead of > > > packaged. > > > > > > mvn site > > > Check the site reports in: > > > - Windows: target\site\index.html > > > - Linux: target/site/index.html > > > > > > -the end- > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > > > > > >