I have been looking into some seemingly slow responses in several
clients running simultaneously, and I see in some stack traces that
there are synchronization points in DynamicPolicyProvider.implies()
that seem to be heavily contended. We probably need to revisit this
class and rewrite it to use copy on write mutation so that reads (the
majority of activity) are completely uncontended.
Any thoughts or experience with this issue?
Gregg Wonderly
River-323 ConcurrentDynamicPolicyProvider
This is a new implementation of DynamicPolicy, designed for concurrency
to overcome the problem Gregg is experiencing with client contention for
implies()
Three qa tests are failing for me:
The first one's simple, but the other two aren't clear:
[java]
com/sun/jini/test/spec/policyprovider/dynamicPolicyProvider/NullCases.td
[java] Test Failed: Test Failed: com.sun.jini.qa.harness.TestException:
[java] policy.grant(null, new Principal[] {..., null,... }, null)
[java] returned: no Exception
[java] expected: NullPointerException
[java]
[java]
[java] -----------------------------------------
[java]
com/sun/jini/test/spec/policyprovider/dynamicPolicyProvider/GrantPrincipal.td
[java] Test Failed: Test Failed: com.sun.jini.qa.harness.TestException:
[java]
policy.implies(ProtectionDomain((file:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar
<no signer certificates>), null,
sun.misc.launcher$appclassloa...@7d772e, [QAPrincipal[01]]), C)
[java] returned: false
[java] expected: true
[java]
[java]
[java] -----------------------------------------
[java]
com/sun/jini/test/spec/policyprovider/dynamicPolicyProvider/GrantNoPrincipalCase02.td
[java] Test Failed: Test Failed: com.sun.jini.qa.harness.TestException:
[java]
policy.implies(ProtectionDomain((file:/opt/src/ApacheRiver/trunk/qa/lib/jinitests.jar
<no signer certificates>), null,
sun.misc.launcher$appclassloa...@7d772e, []), C)
[java] returned: false
[java] expected: true
[java]
[java]
[java] -----------------------------------------
Details to follow