we're trying to debug an issue in our production dataverse related to publication of metadata-only datasets. when we try to publish, we're seeing in the logs something like the following (when the log levels are set to FINE for the EZIdDOIProvider):
[2024-09-18T10:04:51.504-0700] [Payara 6.2024.7] [INFO] [] [edu.harvard.iq.dataverse.engine.command.impl.FinalizeDatasetPublicationCommand] [tid: _ThreadID=243 _ThreadName=__ejb-thread-pool12] [timeMillis: 1726679091504] [levelValue: 800] [[
Finalizing publication of the dataset doi:10.60503/D3/EEKRZR]]
[2024-09-18T10:04:51.532-0700] [Payara 6.2024.7] [FINE] [] [edu.harvard.iq.dataverse.pidproviders.doi.ezid.EZIdDOIProvider] [tid: _ThreadID=243 _ThreadName=__ejb-thread-pool12] [timeMillis: 1726679091532] [levelValue: 500] [CLASSNAME: edu.harvard.iq.dataverse.pidproviders.doi.ezid.EZIdDOIProvider] [METHODNAME: publicizeIdentifier] [[
publicizeIdentifier - dvObject]]
[2024-09-18T10:04:51.533-0700] [Payara 6.2024.7] [FINE] [] [edu.harvard.iq.dataverse.pidproviders.doi.ezid.EZIdDOIProvider] [tid: _ThreadID=243 _ThreadName=__ejb-thread-pool12] [timeMillis: 1726679091533] [levelValue: 500] [CLASSNAME: edu.harvard.iq.dataverse.pidproviders.doi.ezid.EZIdDOIProvider] [METHODNAME: updateIdentifierStatus] [[
updateIdentifierStatus]]
[2024-09-18T10:04:51.533-0700] [Payara 6.2024.7] [WARNING] [] [edu.harvard.iq.dataverse.engine.command.impl.FinalizeDatasetPublicationCommand] [tid: _ThreadID=243 _ThreadName=__ejb-thread-pool12] [timeMillis: 1726679091533] [levelValue: 900] [[
Failed to register the identifier doi:10.60503/D3/EEKRZR, or to register a file in the dataset; notifying the user(s), unlocking the dataset]]
are there further suggestions about how to dig into this? it seems isolated to a couple of records right now.
Hmm, it would help to print out this Throwable to see what the problem was: https://github.com/IQSS/dataverse/blob/v6.3/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/FinalizeDatasetPublicationCommand.java#L424
okay, this is is strange - saving is now failing on new datasets too:
2024-09-18T11:59:39.788-0700] [Payara 6.2024.7] [WARNING] [] [jakarta.enterprise.resource.webcontainer.faces.lifecycle] [tid: _ThreadID=110 _ThreadName=http-thread-pool::jk-connector(5)] [timeMillis: 1726685979788] [levelValue: 900] [[
#{DatasetPage.save}: /dataset.xhtml @992,44 action="#{DatasetPage.save}": java.lang.NullPointerException: Cannot invoke "edu.harvard.iq.dataverse.GlobalId.asString()" because the return value of "edu.harvard.iq.dataverse.Dataset.getGlobalId()" is null
jakarta.faces.FacesException: #{DatasetPage.save}: /dataset.xhtml @992,44 action="#{DatasetPage.save}": java.lang.NullPointerException: Cannot invoke "edu.harvard.iq.dataverse.GlobalId.asString()" because the return value of "edu.harvard.iq.dataverse.Dataset.getGlobalId()" is null
(this is an upgraded install from 6.1 to the patched 6.3)
null global id (PID), yuck
as far as i know, our EZID credentials are set up in the jvm config, and that shouldn't have changed
In https://github.com/IQSS/dataverse/pull/10234 for 6.2 we did a fairly major refactoring of the PID provider code. I hope we didn't break EZID.
We used to use EZID ourselves, before it became California only.
i gather from the discussion on that pr and #10557 that the configuration format may have changed? is that the case?
Yes, it's certainly possible!
I'm not sure how helpful this is, but in dev I use these FAKE settings: https://github.com/IQSS/dataverse/blob/v6.3/docker-compose-dev.yml#L54-L59
This might help: #docs > domain.xml example for configuring DataCite PID provider
(I know you're on EZID, but it might help.)
okay. yes, our configuration probably needs to look different. we'll probably need to do some testing on our side and coordinate with our devops folks.
we currently only have dataverse.pid.ezid.username, dataverse.pid.ezid.password, and dataverse.pid.ezid.api-url set
Ok. If you have any suggestions for the guides or release notes, please let us know!
@Philip Durbin 🐉 will do. i think the big thing is that if configuration structure for Dataverse changes in a breaking way, that should be called out very clearly in the upgrade procedures.
@María A. Matienzo I absolutely agree. https://github.com/IQSS/dataverse/releases/tag/v6.2 says "While backward compatibility for installations using a single PID Provider account is provided, updating to use the new microprofile settings is highly recommended and will be required in a future version."
But it sounds like you aren't seeing the promised backward compatibility. :thinking:
@Philip Durbin 🐉 yeah, that seems to be the case :face_with_diagonal_mouth:
I guess I would try following the DataCite pattern I showed in #docs > domain.xml example for configuring DataCite PID provider
yup, we'll try that next
great
Hi @Philip Durbin 🐉 is * dataverse.spi.pidproviders.directory not needed? I don't see it in your examples.
Not needed. Someday it will be useful, if people create their own PID providers. They'll drop their own jar file in, like we have for exporters, if you're familiar with that. It's for extensibility. Modularity.
Thanks again @Philip Durbin 🐉 we got it working now.
Phew! Should we add something to the release notes and the docs? Suggestions and pull requests welcome!
Last updated: Oct 30 2025 at 06:21 UTC