Skip to content

LinkageError in IdentityStore.validate() #116

Open
@hwellmann

Description

@hwellmann

The use of MethodHandles in IdentityStore.validate() may lead to linkage errors.

This issue may occur in

MethodHandles.lookup()
    .bind(this, "validate", methodType(CredentialValidationResult.class, credential.getClass()))

when redeploying a web application.

In this case, methodType() may return a stale reference caused by the internal use of weak references which may still hang around if the classloader of the original deployment has not yet been garbage collected.

I ran into this problem when executing an Arquillian test suite on a remote server, where every test class gives rise to a new deployment. Observed on Java 8 as well as Java 11.

See https://github.com/hwellmann/method-type-leak for a self-contained test case.

Possible workaround:

Override IdentityStore.validate(Credential) in your custom class and downcast the Credentialargument to the concrete type.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions