Dear community and dear Dataverse developers,
I have a problem with configuration of Dataverse 6.2 with Handle.net.
With the new approach with multiple PID providers (with options "dataverse.pid.providers" and "dataverse.pid.default-provider") I can create a new dataset via GUI (new handle can be properly generated) but in server.log I see many exceptions that connection to the handle server was wrong, so physically the new handle was not registered:
[2024-06-19T15:16:29.234+0200] [Payara 6.2024.5] [WARNING] [] [edu.harvard.iq.dataverse.pidproviders.handle.HandlePidProvider] [tid: _ThreadID=133 _ThreadName=http-thread-pool::jk-connector(5)] [timeMillis: 1718802989234] [levelValue: 900] [[
Caught exception trying to process lookup request
HandleException (SERVICE_NOT_FOUND) Unable to find service for prefix
0.NA/
<XX.XXXXX-Prefix>
; prefix resolution response: Error(301): SERVER NOT RESPONSIBLE FOR HANDLE: That prefix doesn't live here
at net.handle.hdllib.HandleResolver.tryAuthGlobalServiceLookupAndThrowExceptionOnFailure(HandleResolver.java:901)
at net.handle.hdllib.HandleResolver.getServiceInfo(HandleResolver.java:873)
at net.handle.hdllib.HandleResolver.findLocalSites(HandleResolver.java:910)
at net.handle.hdllib.HandleResolver.processRequestGlobally(HandleResolver.java:617)
at net.handle.hdllib.HandleResolver.processRequest(HandleResolver.java:587)
at net.handle.hdllib.HandleResolver.processRequest(HandleResolver.java:595)
at edu.harvard.iq.dataverse.pidproviders.handle.HandlePidProvider.isHandleRegistered(HandlePidProvider.java:210)
at edu.harvard.iq.dataverse.pidproviders.handle.HandlePidProvider.alreadyRegistered(HandlePidProvider.java:332)
...
What is also interesting, on the logs of our handle server we see requests from Dataverse instance, but looks like they are empty or not complete:
-> UDP requests are only of 2 types:
<IP-Address> UDP:HDL(2.11) "2024-06-19 10:30:53.331+0200" 1 301 3ms
0.NA/<XX.XXXXX-Prefix>
<IP-Address> UDP:HDL(2.11) "2024-06-19 10:30:53.333+0200" 1 301 5ms 0.0/0.0
-> TCP requests have only 1 type:
<IP-Address> TCP:HDL(2.11) "2024-06-19 10:30:53.478+0200" 1 301 3ms 0.0/0.0
When we create new handles via other client (not from the Dataverse) we see something like this:
<IP-Address> HTTP:HDLApi "2024-06-19 09:17:46.791+0200" 105 1 26ms adm=300:
0.NA/<XX.XXXXX-Prefix>
<XX.XXXXX-Prefix>
So, can be that Dataverse sends wrong/empty requests?
My configuration in domain.xml:
<jvm-options>-Ddataverse.pid.handle1.handlenet.key.path=<PATH-TO-FILE>/admpriv.bin</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.handlenet.key.passphrase=${ALIAS=xxxxx}</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.handlenet.index=300</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.type=hdl</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.label=Handle label</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.authority=XX.XXXXX</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.shoulder=handle-pid/</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.identifier-generation-style=storedProcGenerated</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.datafile-pid-format=DEPENDENT</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.handlenet.auth-handle="
0.NA/XX.XXXXX"</jvm-options>
<jvm-options>-Ddataverse.pid.handle1.handlenet.independent-service=false</jvm-options>
<jvm-options>-Ddataverse.pid.fake.type=FAKE</jvm-options>
<jvm-options>-Ddataverse.pid.fake.label=Fake DOI Provider</jvm-options>
<jvm-options>-Ddataverse.pid.fake.authority=10.5072</jvm-options>
<jvm-options>-Ddataverse.pid.fake.shoulder=fake-pid-</jvm-options>
<jvm-options>-Ddataverse.pid.fake.identifier-generation-style=storedProcGenerated</jvm-options>
<jvm-options>-Ddataverse.pid.providers=fake,handle1</jvm-options>
<jvm-options>-Ddataverse.pid.default-provider=handle1</jvm-options>
Basing on this I have 2 questions:
1) Did anybody have similar problem with Handle.net and Dataverse 6.2? I thought maybe admpriv.bin has wrong permissions, but looks like it is readable and credentials are correct also (because changing credentials I get another exceptions).
2) If approach with many pid providers has currently some problems, can I still use the previous approach with only 1 provider? I have tried to configure it basing on the documentation, but I also have some problems - looks like currently the variables
"dataverse.pid.providers" and "dataverse.pid.default-provider" are must have! If I remove "dataverse.pid.providers" payara can not start, you see exceptions in log. If
"dataverse.pid.default-provider" is missing, then you see exceptions when you try to create new dataset. How can look like a configuration for only-one pid provider then? Because I tried with different combinations of jvm-options and database variables and I did not find a working one, I always got an exception.
I thank you very much in advance for your quick response.
All the best,
Vladimir