Stream: troubleshooting

Topic: ✔ NullPointerException because "languages" is null


view this post on Zulip Juan (Nov 18 2024 at 10:35):

Hi, we are migrating e-cienciaDatos from Dataverse v5.10.1 to v6.4 and we get a null pointer exception in the languages Field.
It works in v5.10.1, but fails in v6.4

The database :Languages setting entry is filled.
dvndb=> select  * from setting where name =':Languages';
   name    |                                                content                                                 | id | lang  
------------+--------------------------------------------------------------------------------------------------------+----+------
:Languages | [{"locale":"es","title":"Spanish"},{"locale":"en","title":"English"},{"locale":"fr","title":"French"}] | 40 |  

The dataverse.lang .directory value in domain.xml file is set
grep dataverse.lang $PAYARA/glassfish/domains/domain1/config/domain.xml
       <jvm-options>-Ddataverse.lang.directory=/usr/local/dataverseLang</jvm-options>

The log trace is long, but we have checked that the Dataverse.initLocale method is called and all languages are read:
The server.log trace shows:
[2024-11-18T11:05:40.772+0100] [Payara 6.2024.10] [WARNING] [AS-EJB-00056] [jakarta.enterprise.ejb.container] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340772] [levelValue: 900] [[
 A system exception occurred during an invocation on EJB DatasetFieldServiceBean, method: public java.lang.String edu.harvard.iq.dataverse.DatasetFieldServiceBean.getFieldLanguage(java.lang.String,java.lang.String)]]
[2024-11-18T11:05:40.773+0100] [Payara 6.2024.10] [WARNING] [] [jakarta.enterprise.ejb.container] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340773] [levelValue: 900] [[

jakarta.ejb.EJBException: Cannot invoke "String.split(String)" because "languages" is null
       at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:723)
       at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:652)
       at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:482)
       at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4601)
       at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2134)
       at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2104)
       at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
       at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
       at jdk.proxy74/jdk.proxy74.$Proxy373.getFieldLanguage(Unknown Source)
       at edu.harvard.iq.dataverse.__EJB31_Generated__DatasetFieldServiceBean__Intf____Bean__.getFieldLanguage(Unknown Source)
       at edu.harvard.iq.dataverse.DatasetPage.getFieldLanguage(DatasetPage.java:6207)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[.................]

at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.NullPointerException: Cannot invoke "String.split(String)" because "languages" is null
       at edu.harvard.iq.dataverse.DatasetFieldServiceBean.getFieldLanguage(DatasetFieldServiceBean.java:856)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
       at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.base/java.lang.reflect.Method.invoke(Method.java:569)
[.................]

... 96 more
]]
[2024-11-18T11:05:40.775+0100] [Payara 6.2024.10] [SEVERE] [] [jakarta.enterprise.resource.webcontainer.faces.application] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340775] [levelValue: 1000] [[
 Error Rendering View[/dataverse.xhtml]
jakarta.el.ELException: /search-include-fragment.xhtml @390,208 value="#{DatasetPage.getFieldLanguage(cvocConf.get(SearchIncludeFragment.getFieldTypeId(friendlyNames.get(0))).getString('languages'))}": jakarta.ejb.EJBException: Cannot invoke "String.split(String)" because "languages" is null
       at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:77)
       at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.getAttributeValue(HtmlResponseWriter.java:1137)
       at com.sun.faces.renderkit.html_basic.HtmlResponseWriter.flushAttributes(HtmlResponseWriter.java:1097)

[.................]

at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
       at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
       at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
       at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
       at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: jakarta.el.ELException: jakarta.ejb.EJBException: Cannot invoke "String.split(String)" because "languages" is null
       at jakarta.el.ELUtil.invokeMethod(ELUtil.java:221)
[.................]
       at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:73)
       ... 80 more
Caused by: jakarta.ejb.EJBException: Cannot invoke "String.split(String)" because "languages" is null
       at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:723)
       at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:652)
       at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:482)
       at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4601)
       at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2134)
       at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2104)
       at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
       at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
       at jdk.proxy74/jdk.proxy74.$Proxy373.getFieldLanguage(Unknown Source)
       at edu.harvard.iq.dataverse.__EJB31_Generated__DatasetFieldServiceBean__Intf____Bean__.getFieldLanguage(Unknown Source)
       at edu.harvard.iq.dataverse.DatasetPage.getFieldLanguage(DatasetPage.java:6207)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
       at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       ... 87 more
Caused by: java.lang.NullPointerException: Cannot invoke "String.split(String)" because "languages" is null
       at edu.harvard.iq.dataverse.DatasetFieldServiceBean.getFieldLanguage(DatasetFieldServiceBean.java:856)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[.................]
       at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212)
       ... 96 more
]]
[2024-11-18T11:05:40.783+0100] [Payara 6.2024.10] [WARNING] [] [jakarta.enterprise.web.core] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340783] [levelValue: 900] [[
 Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException: Cannot invoke "String.split(String)" because "languages" is null
       at edu.harvard.iq.dataverse.DatasetFieldServiceBean.getFieldLanguage(DatasetFieldServiceBean.java:856)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[.................]
90)
       at jdk.proxy74/jdk.proxy74.$Proxy373.getFieldLanguage(Unknown Source)
       at edu.harvard.iq.dataverse.__EJB31_Generated__DatasetFieldServiceBean__Intf____Bean__.getFieldLanguage(Unknown Source)
       at edu.harvard.iq.dataverse.DatasetPage.getFieldLanguage(DatasetPage.java:6207)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[.................]
       at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
       at java.base/java.lang.Thread.run(Thread.java:840)
]]
[2024-11-18T11:05:40.784+0100] [Payara 6.2024.10] [WARNING] [] [jakarta.enterprise.web] [tid: _ThreadID=198 _ThreadName=http-thread-pool::http-listener-1(2)] [timeMillis: 1731924340784] [levelValue: 900] [[
 StandardWrapperValve[default]: Servlet.service() for servlet default threw exception
java.lang.NullPointerException: Cannot invoke "String.split(String)" because "languages" is null
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[.................]
com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:90)
       at jdk.proxy74/jdk.proxy74.$Proxy373.getFieldLanguage(Unknown Source)
       at edu.harvard.iq.dataverse.__EJB31_Generated__DatasetFieldServiceBean__Intf____Bean__.getFieldLanguage(Unknown Source)
       at edu.harvard.iq.dataverse.DatasetPage.getFieldLanguage(DatasetPage.java:6207)
[.................]
       at java.base/java.lang.Thread.run(Thread.java:840)
]]

Do you know where could be the problem?

Thanks

Juan

view this post on Zulip Philip Durbin 🚀 (Nov 18 2024 at 13:54):

@Juan yikes, thanks for letting us know. I see cvocConf.get in there. As an experiment, have you tried disabling the external controlled vocabulary feature?

view this post on Zulip Juan (Nov 18 2024 at 13:55):

Thanks @Philip Durbin 🐉 . I will try it.

view this post on Zulip Juan (Nov 18 2024 at 14:14):

I didn't have the ":CVocConf" entry in the database settings:

dvndb=> select * from setting where name like '%CVocConf%';
name | content | id | lang  
------+---------+----+------
(0 rows)

I think that the external vocabulary is disabled.

view this post on Zulip Philip Durbin 🚀 (Nov 18 2024 at 14:21):

Thanks. Interesting. I wonder why it appears in the stacktrace.

view this post on Zulip Philip Durbin 🚀 (Nov 18 2024 at 14:22):

According to https://metrics.dataverse.org eight installations have upgraded to 6.4 but I don't know if any of them are using multiple languages.

view this post on Zulip Philip Durbin 🚀 (Nov 18 2024 at 14:22):

We aren't at Harvard Dataverse. Just English.

view this post on Zulip Philip Durbin 🚀 (Nov 18 2024 at 14:22):

You might want to email https://groups.google.com/g/dataverse-community

view this post on Zulip Juan (Nov 18 2024 at 14:59):

Thank you, I will send the e-mail.

view this post on Zulip Philip Durbin 🚀 (Nov 18 2024 at 17:05):

Thanks for posting https://groups.google.com/g/dataverse-community/c/pCMSLdiYR_0/m/aDsXzWXgCAAJ

It looks like @Mireia Alcala replied already.

view this post on Zulip Juan (Nov 19 2024 at 08:34):

You are right, I will start with the Alfredo recommendation at first. Thanks.

view this post on Zulip Juan (Nov 19 2024 at 10:33):

At the end, the problem was that we were using a wrong Payara version. The help here and on the Google group was, as always, perfect.

view this post on Zulip Notification Bot (Nov 19 2024 at 10:33):

Juan has marked this topic as resolved.


Last updated: Oct 30 2025 at 06:21 UTC