We are getting a NullPointerException in clustered 2LC on EAP 6

Solution Unverified - Updated -

Issue

We are currently using a Hibernate second-level cache for some of our object trees. We are seeing a case where we get an NPE in certain cases, and we are trying to nail down the root cause.

The payload validation errors in the hibernate_server.log file are due to the test we are running; both valid and invalid input are provided to the test, and all are handled as expected. The text to search for is "NullPointerException".

We do not use a persistence.xml file. I will attach standalone.xml - could you please let me know what other server configuration files you will need?

Here is the allowedValues declaration:

    /**
     * The set of allowed values for this configuration field.
     */
    @Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
    @ElementCollection(fetch = FetchType.EAGER)
    @CollectionTable(name = "nep_config_field_allowed_value", joinColumns = @JoinColumn(name = "field_id"))
    @Column(name = "allowed_value", length = ConfigurationFieldData.MAX_DEFAULT_VALUE_LENGTH, nullable = false)
    private Set<String> allowedValues = new HashSet<>();

This is used in the hashCode() implementation as follows:
    public int hashCode() {
        return new HashCodeBuilder().appendSuper(super.hashCode()).append(allowedValues).toHashCode();
    }

Stacktrace:

Caused by: java.lang.NullPointerException
        at org.hibernate.engine.internal.StatefulPersistenceContext.getLoadedCollectionOwnerOrNull(StatefulPersistenceContext.java:859) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.hibernate.event.spi.AbstractCollectionEvent.getLoadedOwnerOrNull(AbstractCollectionEvent.java:75) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.hibernate.event.spi.InitializeCollectionEvent.<init>(InitializeCollectionEvent.java:36) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1847) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.hibernate.collection.internal.AbstractPersistentCollection$4.doWork(AbstractPersistentCollection.java:549) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:234) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:124) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.hibernate.collection.internal.PersistentSet.hashCode(PersistentSet.java:428) [hibernate-core-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.apache.commons.lang3.builder.HashCodeBuilder.append(HashCodeBuilder.java:850) [commons-lang3-3.1.jar:3.1]
        at test.provisioning.configuration.domain.EnumConfigurationField.hashCode(EnumConfigurationField.java:122) [nep-provisioning-service-2.0.0-GA.jar:]
        at java.util.HashMap.hash(HashMap.java:366) [rt.jar:1.7.0_40]
        at java.util.HashMap.put(HashMap.java:496) [rt.jar:1.7.0_40]
...
        at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:283) [hibernate-entitymanager-4.2.0.SP1-redhat-1.jar:4.2.0.SP1-redhat-1]
        at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:123) [spring-data-jpa-1.2.0.RELEASE.jar:]
...

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP)
    • 6.x

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content