question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Thread lock starvation with RSemaphore on high concurrency with hundreds of locks (2)

See original GitHub issue

This is a followup to #3573. We have now received the first user feedback from @jebeaudet which exhibits the same behavior as in the previous issue.

We have tried with Maven 3.8.x from the maven-3.8.x and Resolver 1.7.1 with Redisson’s RSemaphore. Several runs observe the same behavior. One thread tries to acquire a lock which is not held by anyone else and after the time is up (30 s) no lock is obtained. @jebeaudet privately provided me log files of those builds and I have distilled the lock workflows from it. Here is a sample:

lock_held	start_timestamp	end_timestamp	thread	lock_workflow	lock_type	lock_name
6	3017	3023	main	acquire => release	write	artifact:com.coveo:coveo-cloud-base-service-pom:40.123.0
12	3052	3064	main	acquire => release	write	artifact:com.amazonaws:aws-java-sdk-bom:1.12.9
4	3093	3097	main	acquire => release	write	artifact:com.amazonaws:aws-java-sdk-pom:1.12.9
3	3117	3120	main	acquire => release	write	artifact:com.fasterxml.jackson:jackson-bom:2.12.3
4	3130	3134	main	acquire => release	write	artifact:com.fasterxml.jackson:jackson-parent:2.12
3	3141	3144	main	acquire => release	write	artifact:com.fasterxml:oss-parent:41
6	3163	3169	main	acquire => release	write	artifact:org.eclipse.jetty:jetty-bom:9.4.42.v20210604
5	3180	3185	main	acquire => release	write	artifact:org.springframework.boot:spring-boot-dependencies:2.3.12.RELEASE
2	3209	3211	main	acquire => release	write	artifact:com.datastax.oss:java-driver-bom:4.6.1
6	3239	3245	main	acquire => release	write	artifact:io.dropwizard.metrics:metrics-bom:4.1.22
2	3266	3268	main	acquire => release	write	artifact:io.dropwizard.metrics:metrics-parent:4.1.22
2	3278	3280	main	acquire => release	write	artifact:org.codehaus.groovy:groovy-bom:2.5.14
14	3298	3312	main	acquire => release	write	artifact:com.fasterxml.jackson:jackson-bom:2.11.4
2	3360	3362	main	acquire => release	write	artifact:com.fasterxml.jackson:jackson-parent:2.11
2	3369	3371	main	acquire => release	write	artifact:com.fasterxml:oss-parent:38
4	3388	3392	main	acquire => release	write	artifact:org.glassfish.jersey:jersey-bom:2.30.1
2	3408	3410	main	acquire => release	write	artifact:org.eclipse.ee4j:project:1.0.5
2	3419	3421	main	acquire => release	write	artifact:org.junit:junit-bom:5.6.3
2	3431	3433	main	acquire => release	write	artifact:org.jetbrains.kotlin:kotlin-bom:1.3.72
5	3460	3465	main	acquire => release	write	artifact:org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.3.8
3	3484	3487	main	acquire => release	write	artifact:org.apache.logging.log4j:log4j-bom:2.13.3
5	3496	3501	main	acquire => release	write	artifact:org.apache.logging:logging-parent:1
1	3516	3517	main	acquire => release	write	artifact:org.apache:apache:18
2	3530	3532	main	acquire => release	write	artifact:io.micrometer:micrometer-bom:1.5.14
3	3539	3542	main	acquire => release	write	artifact:io.netty:netty-bom:4.1.65.Final
2	3546	3548	main	acquire => release	write	artifact:org.sonatype.oss:oss-parent:7
2	3555	3557	main	acquire => release	write	artifact:io.r2dbc:r2dbc-bom:Arabba-SR10
2	3563	3565	main	acquire => release	write	artifact:io.projectreactor:reactor-bom:Dysprosium-SR20
1	3577	3578	main	acquire => release	write	artifact:io.rsocket:rsocket-bom:1.0.5
2	3591	3593	main	acquire => release	write	artifact:org.springframework.data:spring-data-releasetrain:Neumann-SR9
2	3605	3607	main	acquire => release	write	artifact:org.springframework.data.build:spring-data-build:2.3.9.RELEASE
2	3614	3616	main	acquire => release	write	artifact:org.springframework:spring-framework-bom:5.2.15.RELEASE
2	3623	3625	main	acquire => release	write	artifact:org.springframework.integration:spring-integration-bom:5.3.8.RELEASE
1	3631	3632	main	acquire => release	write	artifact:org.springframework.security:spring-security-bom:5.3.9.RELEASE
2	3640	3642	main	acquire => release	write	artifact:org.springframework.session:spring-session-bom:Dragonfruit-SR3
1	3653	3654	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-dependencies:Hoxton.SR11
4	3659	3663	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-dependencies-parent:2.3.4.RELEASE
1	3670	3671	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-commons-dependencies:2.2.8.RELEASE
2	3675	3677	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-netflix-dependencies:2.2.8.RELEASE
1	3681	3682	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-stream-dependencies:Horsham.SR12
2	3686	3688	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-task-dependencies:2.2.5.RELEASE
2	3691	3693	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-dependencies-parent:2.2.3.RELEASE
1	3697	3698	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-circuitbreaker-dependencies:1.0.5.RELEASE
1	3703	3704	main	acquire => release	write	artifact:io.github.resilience4j:resilience4j-bom:1.7.0
2	3708	3710	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-config-dependencies:2.2.8.RELEASE
1	3714	3715	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-function-dependencies:3.0.14.RELEASE
2	3719	3721	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-gateway-dependencies:2.2.8.RELEASE
2	3724	3726	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-consul-dependencies:2.2.7.RELEASE
1	3730	3731	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-sleuth-dependencies:2.2.8.RELEASE
1	3736	3737	main	acquire => release	write	artifact:io.zipkin.brave:brave-bom:5.12.7
2	3741	3743	main	acquire => release	write	artifact:io.zipkin.reporter2:zipkin-reporter-bom:2.15.2
1	3748	3749	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-vault-dependencies:2.2.7.RELEASE
2	3753	3755	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-dependencies-parent:2.3.2.RELEASE
1	3760	3761	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-zookeeper-dependencies:2.2.5.RELEASE
2	3765	3767	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-security-dependencies:2.2.5.RELEASE
2	3771	3773	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-cloudfoundry-dependencies:2.2.3.RELEASE
1	3776	3777	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-dependencies-parent:2.3.1.RELEASE
1	3782	3783	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-bus-dependencies:2.2.4.RELEASE
1	3788	3789	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-contract-dependencies:2.2.7.RELEASE
1	3794	3795	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-aws-dependencies:2.2.6.RELEASE
1	3798	3799	main	acquire => release	write	artifact:com.amazonaws:aws-java-sdk-bom:1.11.792
1	3802	3803	main	acquire => release	write	artifact:com.amazonaws:aws-java-sdk-pom:1.11.792
1	3809	3810	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-openfeign-dependencies:2.2.8.RELEASE
1	3813	3814	main	acquire => release	write	artifact:io.github.openfeign:feign-bom:10.12
1	3819	3820	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-kubernetes-dependencies:1.1.9.RELEASE
2	3824	3826	main	acquire => release	write	artifact:io.fabric8:kubernetes-client-bom:4.13.2
2	3834	3836	main	acquire => release	write	artifact:org.springframework.cloud:spring-cloud-gcp-dependencies:1.2.8.RELEASE
1	3841	3842	main	acquire => release	write	artifact:com.google.guava:guava-bom:30.0-jre
2	3845	3847	main	acquire => release	write	artifact:org.sonatype.oss:oss-parent:9
1	3851	3852	main	acquire => release	write	artifact:com.google.cloud:libraries-bom:16.2.0
2	3856	3858	main	acquire => release	write	artifact:com.google.guava:guava-bom:30.1-android
2	3861	3863	main	acquire => release	write	artifact:com.google.protobuf:protobuf-bom:3.14.0
1	3866	3867	main	acquire => release	write	artifact:com.google.cloud:google-cloud-bom:0.146.0
2	3871	3873	main	acquire => release	write	artifact:com.google.cloud:google-cloud-accessapproval-bom:1.0.7
1	3877	3878	main	acquire => release	write	artifact:com.google.cloud:google-cloud-shared-config:0.9.4
1	3885	3886	main	acquire => release	write	artifact:com.google.cloud:google-cloud-asset-bom:2.2.0
1	3891	3892	main	acquire => release	write	artifact:com.google.cloud:google-cloud-automl-bom:1.3.2
1	3897	3898	main	acquire => release	write	artifact:com.google.cloud:google-cloud-bigquerydatatransfer-bom:1.0.22
11	3904	3915	main	acquire => release	write	artifact:com.google.cloud:google-cloud-bigquerystorage-bom:1.7.0
1	3920	3921	main	acquire => release	write	artifact:com.google.cloud:google-cloud-bigqueryconnection-bom:1.0.4
2	3927	3929	main	acquire => release	write	artifact:com.google.cloud:google-cloud-bigqueryreservation-bom:1.0.4
1	3934	3935	main	acquire => release	write	artifact:com.google.cloud:google-cloud-bigtable-bom:1.19.0
1	3940	3941	main	acquire => release	write	artifact:com.google.cloud:google-cloud-billing-bom:1.1.9
2	3946	3948	main	acquire => release	write	artifact:com.google.cloud:google-cloud-billingbudgets-bom:1.0.1
1	3952	3953	main	acquire => release	write	artifact:com.google.cloud:google-cloud-build-bom:2.1.7
1	3959	3960	main	acquire => release	write	artifact:com.google.cloud:google-cloud-container-bom:1.2.1
1	3965	3966	main	acquire => release	write	artifact:com.google.cloud:google-cloud-containeranalysis-bom:1.2.7
1	3971	3972	main	acquire => release	write	artifact:com.google.cloud:google-cloud-datacatalog-bom:1.0.10
1	3977	3978	main	acquire => release	write	artifact:com.google.cloud:google-cloud-datalabeling-bom:0.119.7
1	3984	3985	main	acquire => release	write	artifact:com.google.cloud:google-cloud-dataproc-bom:1.1.8
1	3990	3991	main	acquire => release	write	artifact:com.google.cloud:google-cloud-datastore-bom:1.105.3
1	3995	3996	main	acquire => release	write	artifact:com.google.cloud:google-cloud-dlp-bom:2.2.3
1	4001	4002	main	acquire => release	write	artifact:com.google.cloud:google-cloud-dialogflow-bom:2.4.3
2	4006	4008	main	acquire => release	write	artifact:com.google.cloud:google-cloud-document-ai-bom:0.3.6
1	4012	4013	main	acquire => release	write	artifact:com.google.cloud:google-cloud-errorreporting-bom:0.120.9-beta
1	4017	4018	main	acquire => release	write	artifact:com.google.cloud:google-cloud-firestore-bom:2.1.0
1	4022	4023	main	acquire => release	write	artifact:com.google.cloud:google-cloud-shared-config:0.9.2
1	4029	4030	main	acquire => release	write	artifact:com.google.cloud:google-cloud-functions-bom:1.0.3
1	4035	4036	main	acquire => release	write	artifact:com.google.cloud:google-cloud-game-servers-bom:1.0.3
2	4041	4043	main	acquire => release	write	artifact:com.google.cloud:google-cloud-iamcredentials-bom:1.1.7
1	4047	4048	main	acquire => release	write	artifact:com.google.cloud:google-cloud-iot-bom:1.1.8
2	4052	4054	main	acquire => release	write	artifact:com.google.cloud:google-cloud-kms-bom:1.40.3
1	4058	4059	main	acquire => release	write	artifact:com.google.cloud:google-cloud-language-bom:1.101.7
1	4063	4064	main	acquire => release	write	artifact:com.google.cloud:google-cloud-logging-bom:2.1.0
1	4068	4069	main	acquire => release	write	artifact:com.google.cloud:google-cloud-mediatranslation-bom:0.2.7
1	4072	4073	main	acquire => release	write	artifact:com.google.cloud:google-cloud-memcache-bom:0.2.8
1	4077	4078	main	acquire => release	write	artifact:com.google.cloud:google-cloud-monitoring-bom:2.0.9
1	4083	4084	main	acquire => release	write	artifact:com.google.cloud:google-cloud-monitoring-dashboard-bom:1.0.5
1	4089	4090	main	acquire => release	write	artifact:com.google.cloud:google-cloud-os-config-bom:1.1.1
2	4094	4096	main	acquire => release	write	artifact:com.google.cloud:google-cloud-os-login-bom:1.1.4
1	4101	4102	main	acquire => release	write	artifact:com.google.cloud:google-cloud-phishingprotection-bom:0.29.9
1	4106	4107	main	acquire => release	write	artifact:com.google.cloud:google-cloud-pubsub-bom:1.110.1
1	4111	4112	main	acquire => release	write	artifact:com.google.cloud:google-cloud-recaptchaenterprise-bom:1.0.7
1	4117	4118	main	acquire => release	write	artifact:com.google.cloud:google-cloud-recommender-bom:1.2.7
1	4123	4124	main	acquire => release	write	artifact:com.google.cloud:google-cloud-redis-bom:1.1.6
1	4128	4129	main	acquire => release	write	artifact:com.google.cloud:google-cloud-scheduler-bom:1.23.4
1	4133	4134	main	acquire => release	write	artifact:com.google.cloud:google-cloud-secretmanager-bom:1.2.6
1	4138	4139	main	acquire => release	write	artifact:com.google.cloud:google-cloud-securitycenter-bom:1.3.3
1	4142	4143	main	acquire => release	write	artifact:com.google.cloud:google-cloud-servicedirectory-bom:1.0.0
1	4148	4149	main	acquire => release	write	artifact:com.google.cloud:google-cloud-spanner-bom:3.1.1
2	4153	4155	main	acquire => release	write	artifact:com.google.cloud:google-cloud-speech-bom:1.24.8
1	4159	4160	main	acquire => release	write	artifact:com.google.cloud:google-cloud-talent-bom:1.0.3
1	4166	4167	main	acquire => release	write	artifact:com.google.cloud:google-cloud-tasks-bom:1.30.9
1	4172	4173	main	acquire => release	write	artifact:com.google.cloud:google-cloud-texttospeech-bom:1.2.5
2	4178	4180	main	acquire => release	write	artifact:com.google.cloud:google-cloud-trace-bom:1.2.8
1	4184	4185	main	acquire => release	write	artifact:com.google.cloud:google-cloud-translate-bom:1.95.5
1	4191	4192	main	acquire => release	write	artifact:com.google.cloud:google-cloud-video-intelligence-bom:1.5.6
2	4197	4199	main	acquire => release	write	artifact:com.google.cloud:google-cloud-vision-bom:1.100.8
1	4206	4207	main	acquire => release	write	artifact:com.google.cloud:google-cloud-websecurityscanner-bom:1.0.7
1	4215	4216	main	acquire => release	write	artifact:com.google.cloud:google-cloud-webrisk-bom:1.1.5
1	4221	4222	main	acquire => release	write	artifact:com.google.auth:google-auth-library-bom:0.22.1
2	4225	4227	main	acquire => release	write	artifact:com.google.cloud:google-cloud-core-bom:1.94.0
1	4296	4297	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3
1	4307	4308	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.enforcer:enforcer:3.0.0-M3
1	4312	4313	BuilderThread 0	acquire => release	write	artifact:org.apache.maven:maven-parent:33
1	4319	4320	BuilderThread 0	acquire => release	write	artifact:org.apache:apache:21
1	4331	4332	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3
1	4343	4344	BuilderThread 0	acquire => release	write	artifact:net.revelc.code.formatter:formatter-maven-plugin:2.15.0
2	4348	4350	BuilderThread 0	acquire => release	write	artifact:com.fasterxml.jackson:jackson-bom:2.12.2
3	4353	4356	BuilderThread 0	acquire => release	write	artifact:com.fasterxml.jackson:jackson-parent:2.12
1	4359	4360	BuilderThread 0	acquire => release	write	artifact:com.fasterxml:oss-parent:41
2	4367	4369	BuilderThread 0	acquire => release	write	artifact:net.revelc.code.formatter:formatter-maven-plugin:2.15.0
2	4375	4377	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-jar-plugin:3.2.0
1	4380	4381	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-plugins:33
1	4386	4387	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-jar-plugin:3.2.0
1	4392	4393	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-source-plugin:3.2.1
2	4399	4401	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-source-plugin:3.2.1
2	4408	4410	BuilderThread 0	acquire => release	write	artifact:pl.project13.maven:git-commit-id-plugin:4.0.5
1	4414	4415	BuilderThread 0	acquire => release	write	artifact:pl.project13.maven:git-commit-id-plugin-parent:4.0.5
2	4419	4421	BuilderThread 0	acquire => release	write	artifact:org.sonatype.oss:oss-parent:9
1	4425	4426	BuilderThread 0	acquire => release	write	artifact:pl.project13.maven:git-commit-id-plugin:4.0.5
1	4430	4431	BuilderThread 0	acquire => release	write	artifact:io.github.jebeaudet:flyway-validator-maven-plugin:0.4.1
1	4434	4435	BuilderThread 0	acquire => release	write	artifact:io.github.jebeaudet:flyway-validator-maven-plugin:0.4.1
1	4440	4441	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-clean-plugin:2.5
1	4444	4445	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-plugins:22
1	4450	4451	BuilderThread 0	acquire => release	write	artifact:org.apache.maven:maven-parent:21
1	4455	4456	BuilderThread 0	acquire => release	write	artifact:org.apache:apache:10
2	4459	4461	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-clean-plugin:2.5
1	4467	4468	BuilderThread 0	acquire => release	write	artifact:com.mycila:license-maven-plugin:4.1
1	4471	4472	BuilderThread 0	acquire => release	write	artifact:com.mycila:license-maven-plugin-parent:4.1
2	4475	4477	BuilderThread 0	acquire => release	write	artifact:com.mycila:mycila-pom:9
1	4482	4483	BuilderThread 0	acquire => release	write	artifact:com.mycila:license-maven-plugin:4.1
2	4490	4492	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-install-plugin:2.4
1	4495	4496	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-plugins:23
1	4499	4500	BuilderThread 0	acquire => release	write	artifact:org.apache.maven:maven-parent:22
1	4503	4504	BuilderThread 0	acquire => release	write	artifact:org.apache:apache:11
2	4509	4511	BuilderThread 0	acquire => release	write	artifact:org.apache.maven.plugins:maven-install-plugin:2.4
1	4541	4542	BuilderThread 0	acquire => release	write	artifact:ch.qos.logback:logback-classic:1.2.3
1	4546	4547	BuilderThread 0	acquire => release	write	artifact:ch.qos.logback:logback-parent:1.2.3
1	4556	4557	BuilderThread 0	acquire => release	write	artifact:ch.qos.logback:logback-core:1.2.3
1	4562	4563	BuilderThread 0	acquire => release	write	artifact:org.slf4j:slf4j-api:1.7.30
1	4565	4566	BuilderThread 0	acquire => release	write	artifact:org.slf4j:slf4j-parent:1.7.30
1	4577	4578	BuilderThread 0	acquire => release	write	artifact:org.slf4j:jcl-over-slf4j:1.7.30
2	4583	4585	BuilderThread 0	acquire => release	write	artifact:org.springframework.boot:spring-boot-starter-test:2.3.12.RELEASE
2	4591	4593	BuilderThread 0	acquire => release	write	artifact:org.springframework.boot:spring-boot-starter:2.3.12.RELEASE
2	4596	4598	BuilderThread 0	acquire => release	write	artifact:org.springframework.boot:spring-boot:2.3.12.RELEASE
1	4601	4602	BuilderThread 0	acquire => release	write	artifact:org.springframework:spring-core:5.2.15.RELEASE
1	4606	4607	BuilderThread 0	acquire => release	write	artifact:org.springframework:spring-jcl:5.2.15.RELEASE
1	4611	4612	BuilderThread 0	acquire => release	write	artifact:org.springframework:spring-context:5.2.15.RELEASE
1	4616	4617	BuilderThread 0	acquire => release	write	artifact:org.springframework:spring-aop:5.2.15.RELEASE
1	4621	4622	BuilderThread 0	acquire => release	write	artifact:org.springframework:spring-beans:5.2.15.RELEASE
2	4626	4628	BuilderThread 0	acquire => release	write	artifact:org.springframework:spring-expression:5.2.15.RELEASE
1	4631	4632	BuilderThread 0	acquire => release	write	artifact:org.springframework.boot:spring-boot-autoconfigure:2.3.12.RELEASE
1	4635	4636	BuilderThread 0	acquire => release	write	artifact:org.springframework.boot:spring-boot-starter-logging:2.3.12.RELEASE
3	4639	4642	BuilderThread 0	acquire => release	write	artifact:org.apache.logging.log4j:log4j-to-slf4j:2.13.3
1	4645	4646	BuilderThread 0	acquire => release	write	artifact:org.apache.logging.log4j:log4j:2.13.3
1	4653	4654	BuilderThread 0	acquire => release	write	artifact:org.apache.logging.log4j:log4j-api:2.13.3
1	4659	4660	BuilderThread 0	acquire => release	write	artifact:org.slf4j:jul-to-slf4j:1.7.30
1	4665	4666	BuilderThread 0	acquire => release	write	artifact:jakarta.annotation:jakarta.annotation-api:1.3.5
1	4669	4670	BuilderThread 0	acquire => release	write	artifact:jakarta.annotation:ca-parent:1.3.5
1	4673	4674	BuilderThread 0	acquire => release	write	artifact:org.eclipse.ee4j:project:1.0.5
1	4679	4680	BuilderThread 0	acquire => release	write	artifact:org.yaml:snakeyaml:1.26
2	4685	4687	BuilderThread 0	acquire => release	write	artifact:org.springframework.boot:spring-boot-test:2.3.12.RELEASE
1	4690	4691	BuilderThread 0	acquire => release	write	artifact:org.springframework.boot:spring-boot-test-autoconfigure:2.3.12.RELEASE
1	4695	4696	BuilderThread 0	acquire => release	write	artifact:com.jayway.jsonpath:json-path:2.4.0
1	4699	4700	BuilderThread 0	acquire => release	write	artifact:net.minidev:json-smart:2.3.1
1	4703	4704	BuilderThread 0	acquire => release	write	artifact:net.minidev:minidev-parent:2.3.1
1	4708	4709	BuilderThread 0	acquire => release	write	artifact:net.minidev:accessors-smart:2.3.1
1	4712	4713	BuilderThread 0	acquire => release	write	artifact:org.ow2.asm:asm:5.0.4
1	4715	4716	BuilderThread 0	acquire => release	write	artifact:org.ow2.asm:asm-parent:5.0.4
1	4718	4719	BuilderThread 0	acquire => release	write	artifact:org.ow2:ow2:1.3
1	4723	4724	BuilderThread 0	acquire => release	write	artifact:jakarta.xml.bind:jakarta.xml.bind-api:2.3.3
1	4728	4729	BuilderThread 0	acquire => release	write	artifact:jakarta.xml.bind:jakarta.xml.bind-api-parent:2.3.3
2	4732	4734	BuilderThread 0	acquire => release	write	artifact:org.eclipse.ee4j:project:1.0.6
1	4738	4739	BuilderThread 0	acquire => release	write	artifact:jakarta.activation:jakarta.activation-api:1.2.2
1	4743	4744	BuilderThread 0	acquire => release	write	artifact:com.sun.activation:all:1.2.2
1	4750	4751	BuilderThread 0	acquire => release	write	artifact:org.assertj:assertj-core:3.16.1
1	4755	4756	BuilderThread 0	acquire => release	write	artifact:org.assertj:assertj-parent-pom:2.2.7
1	4760	4761	BuilderThread 0	acquire => release	write	artifact:org.junit:junit-bom:5.6.2
1	4765	4766	BuilderThread 0	acquire => release	write	artifact:org.hamcrest:hamcrest:2.2
2	4769	4771	BuilderThread 0	acquire => release	write	artifact:org.junit.jupiter:junit-jupiter:5.6.3
2	4775	4777	BuilderThread 0	acquire => release	write	artifact:org.junit:junit-bom:5.6.3
1	4780	4781	BuilderThread 0	acquire => release	write	artifact:org.junit.jupiter:junit-jupiter-api:5.6.3
1	4785	4786	BuilderThread 0	acquire => release	write	artifact:org.apiguardian:apiguardian-api:1.1.0
1	4789	4790	BuilderThread 0	acquire => release	write	artifact:org.opentest4j:opentest4j:1.2.0
1	4793	4794	BuilderThread 0	acquire => release	write	artifact:org.junit.platform:junit-platform-commons:1.6.3
1	4797	4798	BuilderThread 0	acquire => release	write	artifact:org.junit.jupiter:junit-jupiter-params:5.6.3
1	4802	4803	BuilderThread 0	acquire => release	write	artifact:org.junit.jupiter:junit-jupiter-engine:5.6.3
1	4806	4807	BuilderThread 0	acquire => release	write	artifact:org.junit.platform:junit-platform-engine:1.6.3
1	4811	4812	BuilderThread 0	acquire => release	write	artifact:org.junit.vintage:junit-vintage-engine:5.6.3
1	4816	4817	BuilderThread 0	acquire => release	write	artifact:junit:junit:4.13.1
1	4823	4824	BuilderThread 0	acquire => release	write	artifact:org.mockito:mockito-core:3.3.3
1	4828	4829	BuilderThread 0	acquire => release	write	artifact:net.bytebuddy:byte-buddy:1.10.22
1	4832	4833	BuilderThread 0	acquire => release	write	artifact:net.bytebuddy:byte-buddy-parent:1.10.22
2	4839	4841	BuilderThread 0	acquire => release	write	artifact:net.bytebuddy:byte-buddy-agent:1.10.22
1	4846	4847	BuilderThread 0	acquire => release	write	artifact:org.objenesis:objenesis:2.6
1	4849	4850	BuilderThread 0	acquire => release	write	artifact:org.objenesis:objenesis-parent:2.6
1	4854	4855	BuilderThread 0	acquire => release	write	artifact:org.mockito:mockito-junit-jupiter:3.3.3
1	4860	4861	BuilderThread 0	acquire => release	write	artifact:org.skyscreamer:jsonassert:1.5.0
1	4864	4865	BuilderThread 0	acquire => release	write	artifact:org.sonatype.oss:oss-parent:7
1	4868	4869	BuilderThread 0	acquire => release	write	artifact:com.vaadin.external.google:android-json:0.0.20131108.vaadin1
1	4872	4873	BuilderThread 0	acquire => release	write	artifact:org.springframework:spring-test:5.2.15.RELEASE
1	4875	4876	BuilderThread 0	acquire => release	write	artifact:org.xmlunit:xmlunit-core:2.7.0
1	4878	4879	BuilderThread 0	acquire => release	write	artifact:org.xmlunit:xmlunit-parent:2.7.0
1	4883	4884	BuilderThread 0	acquire => release	write	artifact:org.hamcrest:java-hamcrest:2.0.0.0
1	4888	4889	BuilderThread 0	acquire => release	write	artifact:pl.pragmatists:JUnitParams:1.1.1
1	4895	4896	BuilderThread 0	acquire => release	write	artifact:org.hamcrest:hamcrest-core:2.2
1	4898	4899	BuilderThread 0	acquire => release	write	artifact:com.github.npathai:hamcrest-optional:2.0.0
1	4904	4905	BuilderThread 0	acquire => release	write	artifact:uk.co.jemos.podam:podam:7.2.7.RELEASE
1	4911	4912	BuilderThread 0	acquire => release	write	artifact:net.jcip:jcip-annotations:1.0
1	4915	4916	BuilderThread 0	acquire => release	write	artifact:javax.annotation:javax.annotation-api:1.3.2
1	4919	4920	BuilderThread 0	acquire => release	write	artifact:net.java:jvnet-parent:3
1	4923	4924	BuilderThread 0	acquire => release	write	artifact:javax.validation:validation-api:2.0.1.Final
2	4929	4931	BuilderThread 0	acquire => release	write	artifact:org.apache.commons:commons-lang3:3.10
5	4934	4939	BuilderThread 0	acquire => release	write	artifact:org.apache.commons:commons-parent:50
1	4949	4950	BuilderThread 0	acquire => release	write	artifact:io.github.glytching:junit-extensions:2.4.0
1	4957	4958	BuilderThread 0	acquire => release	write	artifact:io.github.benas:random-beans:3.7.0
2	4961	4963	BuilderThread 0	acquire => release	write	artifact:io.github.benas:random-beans-parent:3.7.0
1	4966	4967	BuilderThread 0	acquire => release	write	artifact:org.objenesis:objenesis:2.5.1
2	4970	4972	BuilderThread 0	acquire => release	write	artifact:org.objenesis:objenesis-parent:2.5.1
2	4977	4979	BuilderThread 0	acquire => release	write	artifact:io.github.lukehutch:fast-classpath-scanner:2.2.1
2	4983	4985	BuilderThread 0	acquire => release	write	artifact:com.fasterxml.jackson.core:jackson-databind:2.12.3
2	4989	4991	BuilderThread 0	acquire => release	write	artifact:com.fasterxml.jackson:jackson-base:2.12.3
1	4994	4995	BuilderThread 0	acquire => release	write	artifact:com.fasterxml.jackson:jackson-bom:2.12.3
1	5001	5002	BuilderThread 0	acquire => release	write	artifact:com.fasterxml.jackson.core:jackson-annotations:2.12.3
1	5006	5007	BuilderThread 0	acquire => release	write	artifact:com.fasterxml.jackson.core:jackson-core:2.12.3
1	5012	5013	BuilderThread 0	acquire => release	write	artifact:com.h2database:h2:1.4.200
1	5016	5017	BuilderThread 0	acquire => release	write	artifact:com.google.guava:guava:30.1.1-jre
1	5019	5020	BuilderThread 0	acquire => release	write	artifact:com.google.guava:guava-parent:30.1.1-jre
2	5028	5030	BuilderThread 0	acquire => release	write	artifact:com.google.guava:failureaccess:1.0.1
1	5033	5034	BuilderThread 0	acquire => release	write	artifact:com.google.guava:guava-parent:26.0-android
1	5038	5039	BuilderThread 0	acquire => release	write	artifact:com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
1	5043	5044	BuilderThread 0	acquire => release	write	artifact:com.google.code.findbugs:jsr305:3.0.2
1	5047	5048	BuilderThread 0	acquire => release	write	artifact:org.checkerframework:checker-qual:3.8.0
2	5051	5053	BuilderThread 0	acquire => release	write	artifact:com.google.errorprone:error_prone_annotations:2.5.1
1	5055	5056	BuilderThread 0	acquire => release	write	artifact:com.google.errorprone:error_prone_parent:2.5.1
1	5061	5062	BuilderThread 0	acquire => release	write	artifact:com.google.j2objc:j2objc-annotations:1.3
1	5065	5066	BuilderThread 0	acquire => release	write	artifact:joda-time:joda-time:2.10.10
1	5076	5077	BuilderThread 0	acquire => release	write	artifact:org.apache.commons:commons-text:1.9
1	5082	5083	BuilderThread 0	acquire => release	write	artifact:org.apache.commons:commons-parent:51
1	5090	5091	BuilderThread 0	acquire => release	write	artifact:org.apache:apache:23
1	5097	5098	BuilderThread 0	acquire => release	write	artifact:commons-io:commons-io:2.10.0
1	5102	5103	BuilderThread 0	acquire => release	write	artifact:org.apache.commons:commons-parent:52
1	5112	5113	BuilderThread 0	acquire => release	write	artifact:org.junit:junit-bom:5.7.2
1	5119	5120	BuilderThread 0	acquire => release	write	artifact:com.google.truth:truth:1.1.3
1	5125	5126	BuilderThread 0	acquire => release	write	artifact:com.google.truth:truth-parent:1.1.3
1	5134	5135	BuilderThread 0	acquire => release	write	artifact:org.checkerframework:checker-qual:3.13.0
1	5139	5140	BuilderThread 0	acquire => release	write	artifact:com.google.auto.value:auto-value-annotations:1.7.4
1	5142	5143	BuilderThread 0	acquire => release	write	artifact:com.google.auto.value:auto-value-parent:1.7.4
1	5147	5148	BuilderThread 0	acquire => release	write	artifact:com.google.errorprone:error_prone_annotations:2.7.1
1	5151	5152	BuilderThread 0	acquire => release	write	artifact:com.google.errorprone:error_prone_parent:2.7.1
1	5155	5156	BuilderThread 0	acquire => release	write	artifact:org.ow2.asm:asm:9.1
1	5159	5160	BuilderThread 0	acquire => release	write	artifact:org.ow2:ow2:1.5
1	5164	5165	BuilderThread 0	acquire => release	write	artifact:com.google.truth.extensions:truth-java8-extension:1.1.3
1	5168	5169	BuilderThread 0	acquire => release	write	artifact:com.google.truth.extensions:truth-extensions-parent:1.1.3
30006	5207	35213	BuilderThread 0	acquire => acquire_failed	write	artifact:ch.qos.logback:logback-classic:1.2.3

The write lock artifact:ch.qos.logback:logback-classic:1.2.3 is not held by someone, yet it fails. I can provide several SQLite databases which contain raw imported data, prepared data as well as joined by lock workflows/transitions. The thread dump of a hanging build looks always the same:

"main" #1 prio=5 os_prio=0 cpu=2355.05ms elapsed=33.20s tid=0x00007f12e8028800 nid=0x3ad03e waiting on condition  [0x00007f12efa2f000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@11.0.11/Native Method)
	- parking to wait for  <0x0000000629cb6a28> (a java.util.concurrent.Semaphore$NonfairSync)
	at java.util.concurrent.locks.LockSupport.parkNanos(java.base@11.0.11/LockSupport.java:234)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(java.base@11.0.11/AbstractQueuedSynchronizer.java:1079)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(java.base@11.0.11/AbstractQueuedSynchronizer.java:1369)
	at java.util.concurrent.Semaphore.tryAcquire(java.base@11.0.11/Semaphore.java:415)
	at org.redisson.RedissonSemaphore.tryAcquire(RedissonSemaphore.java:320)
	at org.eclipse.aether.named.redisson.RedissonSemaphoreNamedLockFactory$RedissonSemaphore.tryAcquire(RedissonSemaphoreNamedLockFactory.java:83)
	at org.eclipse.aether.named.support.AdaptedSemaphoreNamedLock.lockExclusively(AdaptedSemaphoreNamedLock.java:107)
	at org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter$AdaptedLockSyncContext.acquire(NamedLockFactoryAdapter.java:135)
	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:229)
	at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:209)
	at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:264)
	at org.apache.maven.project.ProjectModelResolver.resolveModel(ProjectModelResolver.java:192)
	at org.apache.maven.model.building.DefaultModelBuilder.importDependencyManagement(DefaultModelBuilder.java:1265)
	at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:474)
	at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:440)
	at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:618)
	at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:387)
	at org.apache.maven.graph.DefaultGraphBuilder.collectProjects(DefaultGraphBuilder.java:414)
	at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor(DefaultGraphBuilder.java:405)
	at org.apache.maven.graph.DefaultGraphBuilder.build(DefaultGraphBuilder.java:82)
	at org.apache.maven.DefaultMaven.buildGraph(DefaultMaven.java:507)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:219)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.11/Native Method)
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.11/NativeMethodAccessorImpl.java:62)
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.11/DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(java.base@11.0.11/Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)

Redis version 6.2.4

Redisson version 3.15.6 on Java 11.0.11

Redisson configuration Nothing, but localhost....

PS: There is a similar issue with RReadWriteLock, but I will report this seperately.

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:38 (10 by maintainers)

github_iconTop GitHub Comments

2reactions
jebeaudetcommented, Aug 27, 2021

@michael-o I’ve ran it a couple of times and it’s all green on my end, gg!

2reactions
jebeaudetcommented, Aug 16, 2021

The holidays were good to me it seems, I had completely forgotten about this but thanks to @michael-o ping, I got around to it today.

I think I managed to reproduce it, it fails on my laptop and hopefully it’ll be the same for you.

  1. Checkout https://github.com/jebeaudet/maven-redisson-3728
  2. Build the custom mvn executable with mvn -DdistributionTargetDir="$HOME/app/maven/apache-maven-mosipov" clean package
  3. Checkout https://github.com/jebeaudet/redisson-issue-3728
  4. Run this magnificent script and check the output of the /tmp/semaphore-discriminating folder, you should have at least 1 build with a java.lang.IllegalStateException: Could not acquire write lock for xxxx exception :
redis-cli flushall;

rm -rf redisson-issue-3728-2;
rm -rf redisson-issue-3728-3;
rm -rf redisson-issue-3728-4;
cp -dpr redisson-issue-3728 redisson-issue-3728-2;
cp -dpr redisson-issue-3728 redisson-issue-3728-3;
cp -dpr redisson-issue-3728 redisson-issue-3728-4;

COMMAND=$HOME'/app/maven/apache-maven-mosipov/bin/mvn compile -DskipTests -B -T1C -Dorg.slf4j.simpleLogger.showThreadName=true -Dorg.slf4j.simpleLogger.log.org.eclipse.aether=trace -Dmaven.artifact.threads=8 -Daether.metadataResolver.threads=8 -Daether.syncContext.named.factory=semaphore-redisson -Dorg.slf4j.simpleLogger.showDateTime=true -Daether.syncContext.named.nameMapper=discriminating';

MVN_CLEAN=$HOME'/app/maven/apache-maven-mosipov/bin/mvn clean'

LOG_FILE_PREFIX=semaphore-discriminating;
mkdir -p /tmp/${LOG_FILE_PREFIX}
LOG_DIR=/tmp/${LOG_FILE_PREFIX}/

#Clean all projects
cd redisson-issue-3728;
bash $MVN_CLEAN

cd ../redisson-issue-3728-2;
bash $MVN_CLEAN

cd ../redisson-issue-3728-3;
bash $MVN_CLEAN

cd ../redisson-issue-3728-4;
bash $MVN_CLEAN

cd ..;

cd redisson-issue-3728;
bash $COMMAND > ${LOG_DIR}${LOG_FILE_PREFIX}1 2>&1 &

cd ../redisson-issue-3728-2;
bash $COMMAND > ${LOG_DIR}${LOG_FILE_PREFIX}2 2>&1 &

cd ../redisson-issue-3728-3;
bash $COMMAND > ${LOG_DIR}${LOG_FILE_PREFIX}3 2>&1 &

cd ../redisson-issue-3728-4;
bash $COMMAND > ${LOG_DIR}${LOG_FILE_PREFIX}4 2>&1 &

cd ..;
Read more comments on GitHub >

github_iconTop Results From Across the Web

Starvation and Livelock - The Java™ Tutorials
Starvation describes a situation where a thread is unable to gain regular access to shared resources and is unable to make progress. This...
Read more >
Concurrency/Deadlock/Starvation - Alper Kultur's Web Site
Concurrency is nothing but execution of different transactions ... 2. Dead lock: A group of threads are waiting for resources held by others...
Read more >
Thread and Semaphore Examples
Although such a case may only arise only one time out of thousands, a concurrent program needs to coordinate the activities of multiple...
Read more >
Starvation and Fairness - Jenkov.com
This tutorial explains how starvation in multithreading can occur, and how you can avoid it by implementing a fairness policy.
Read more >
Concurrent Programming on Windows - PDF Free Download
Foreword byCraig Mundie,Chief Research and Strategy Officer, Microsoft T TConcurrent Programming on Windows .nr...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found