Skip to content

blocked deposit page, hide host field when only one collection (e.g. root) #11301

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: develop
Choose a base branch
from

Conversation

jo-pol
Copy link
Contributor

@jo-pol jo-pol commented Mar 4, 2025

What this PR does / why we need it:

A dataset is not saved and there is no option to correct the mistake if you edit the “Host Dataverse” field and immediately correct and leave it. When clicking Save the page freezes and after a hard refresh all your metadata is gone and you have to start over. Reproduced in 6.3 and 6.5 (DANS branches).

A more robust solution is not to show the edit field at al when there is nothing to choose.

Which issue(s) this PR closes:

  • Closes #

Special notes for your reviewer:

Suggestions on how to test this:

  1. In the user interface click Add Data → New Dataset
  2. The cursor is placed in the “Host Dataverse” field.
  3. Type a space, remove it and quickly put the cursor in the title field.
  4. Fill in the required fields and click Save.

Does this PR introduce a user interface change? If mockups are available, please link/include them here:

Is there a release notes update needed for this change?:

Perhaps: the host dataverse field does not appear when there are none to choose from.

Additional documentation:

@pdurbin pdurbin moved this to Ready for Triage in IQSS Dataverse Project Mar 4, 2025
@pdurbin pdurbin added the Size: 3 A percentage of a sprint. 2.1 hours. label Mar 4, 2025
@ofahimIQSS ofahimIQSS moved this from Ready for Triage to Ready for Review ⏩ in IQSS Dataverse Project Mar 4, 2025
@qqmyers
Copy link
Member

qqmyers commented Mar 4, 2025

Can you reproduce this on demo (which is v6.5)? The code changes look OK but I haven't yet been able to trigger the problem on demo.dataverse.org.

@pdurbin
Copy link
Member

pdurbin commented Mar 5, 2025

I believe I was able to reproduce the bug on ab8110f (the latest in develop).

The page is greyed out like this:

Screenshot 2025-03-05 at 2 33 29 PM

Stacktrace:

dev_dataverse> [#|2025-03-05T19:32:37.841+0000|WARNING|Payara 6.2024.6|jakarta.enterprise.resource.webcontainer.faces.lifecycle|_ThreadID=275;_ThreadName=http-thread-pool::http-listener-1(6);_TimeMillis=1741203157841;_LevelValue=900;|
dev_dataverse>   For input string: "Root"
dev_dataverse> java.lang.NumberFormatException: For input string: "Root"
dev_dataverse> 	at java.base/java.lang.NumberFormatException.forInputString(Unknown Source)
dev_dataverse> 	at java.base/java.lang.Long.parseLong(Unknown Source)
dev_dataverse> 	at java.base/java.lang.Long.<init>(Unknown Source)
dev_dataverse> 	at edu.harvard.iq.dataverse.DataverseConverter.getAsObject(DataverseConverter.java:29)
dev_dataverse> 	at org.primefaces.component.autocomplete.AutoCompleteRenderer.getConvertedValue(AutoCompleteRenderer.java:803)
dev_dataverse> 	at jakarta.faces.component.UIInput.getConvertedValue(UIInput.java:901)
dev_dataverse> 	at jakarta.faces.component.UIInput.validate(UIInput.java:816)
dev_dataverse> 	at jakarta.faces.component.UIInput.executeValidate(UIInput.java:1093)
dev_dataverse> 	at jakarta.faces.component.UIInput.processValidators(UIInput.java:586)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIForm.processValidators(UIForm.java:222)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1257)
dev_dataverse> 	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:49)
dev_dataverse> 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:72)
dev_dataverse> 	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:159)
dev_dataverse> 	at jakarta.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:691)
dev_dataverse> 	at jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:449)
dev_dataverse> 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1554)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:331)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:83)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:226)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
dev_dataverse> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:166)
dev_dataverse> 	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:757)
dev_dataverse> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:577)
dev_dataverse> 	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
dev_dataverse> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:158)
dev_dataverse> 	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:372)
dev_dataverse> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:239)
dev_dataverse> 	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
dev_dataverse> 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:174)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
dev_dataverse> 	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
dev_dataverse> 	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510)
dev_dataverse> 	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82)
dev_dataverse> 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
dev_dataverse> 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
dev_dataverse> 	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
dev_dataverse> 	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
dev_dataverse> 	at java.base/java.lang.Thread.run(Unknown Source)
dev_dataverse> |#]
dev_dataverse> 
dev_dataverse> [#|2025-03-05T19:32:37.846+0000|SEVERE|Payara 6.2024.6|jakarta.enterprise.resource.webcontainer.faces.context|_ThreadID=275;_ThreadName=http-thread-pool::http-listener-1(6);_TimeMillis=1741203157846;_LevelValue=1000;|
dev_dataverse>   java.lang.NumberFormatException: For input string: "Root"
dev_dataverse> java.lang.NumberFormatException: For input string: "Root"
dev_dataverse> 	at java.base/java.lang.NumberFormatException.forInputString(Unknown Source)
dev_dataverse> 	at java.base/java.lang.Long.parseLong(Unknown Source)
dev_dataverse> 	at java.base/java.lang.Long.<init>(Unknown Source)
dev_dataverse> 	at edu.harvard.iq.dataverse.DataverseConverter.getAsObject(DataverseConverter.java:29)
dev_dataverse> 	at org.primefaces.component.autocomplete.AutoCompleteRenderer.getConvertedValue(AutoCompleteRenderer.java:803)
dev_dataverse> 	at jakarta.faces.component.UIInput.getConvertedValue(UIInput.java:901)
dev_dataverse> 	at jakarta.faces.component.UIInput.validate(UIInput.java:816)
dev_dataverse> 	at jakarta.faces.component.UIInput.executeValidate(UIInput.java:1093)
dev_dataverse> 	at jakarta.faces.component.UIInput.processValidators(UIInput.java:586)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIForm.processValidators(UIForm.java:222)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processValidators(UIComponentBase.java:907)
dev_dataverse> 	at jakarta.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1257)
dev_dataverse> 	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:49)
dev_dataverse> 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:72)
dev_dataverse> 	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:159)
dev_dataverse> 	at jakarta.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:691)
dev_dataverse> 	at jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:449)
dev_dataverse> 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1554)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:331)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:83)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:226)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
dev_dataverse> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:166)
dev_dataverse> 	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:757)
dev_dataverse> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:577)
dev_dataverse> 	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
dev_dataverse> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:158)
dev_dataverse> 	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:372)
dev_dataverse> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:239)
dev_dataverse> 	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
dev_dataverse> 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:174)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
dev_dataverse> 	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
dev_dataverse> 	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510)
dev_dataverse> 	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82)
dev_dataverse> 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
dev_dataverse> 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
dev_dataverse> 	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
dev_dataverse> 	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
dev_dataverse> 	at java.base/java.lang.Thread.run(Unknown Source)
dev_dataverse> |#]

@pdurbin
Copy link
Member

pdurbin commented Mar 5, 2025

I tried again and I was able to reproduce it again.

One difference for me, perhaps, is that after a hard-reset the fields I entered are still there, with the exception of the Subject field. So I don't lose all of my work, but still, it's a very annoying user experience!

@pdurbin
Copy link
Member

pdurbin commented Mar 5, 2025

@jo-pol I switched to this branch/PR and the stacktrace looks different but I have the same behavior in the UI. The screen goes gray-ish and the dataset isn't saved.

Screenshot 2025-03-05 at 2 43 10 PM

dev_dataverse> [#|2025-03-05T19:42:38.837+0000|INFO|Payara 6.2024.6|com.ocpsoft.pretty.faces.config.spi.DefaultXMLConfigurationProvider|_ThreadID=286;_ThreadName=http-thread-pool::http-listener-1(7);_TimeMillis=1741203758837;_LevelValue=800;|
dev_dataverse>   loadConfiguration called...|#]
dev_dataverse> 
dev_dataverse> [#|2025-03-05T19:42:39.430+0000|SEVERE|Payara 6.2024.6|jakarta.enterprise.resource.webcontainer.faces.context|_ThreadID=286;_ThreadName=http-thread-pool::http-listener-1(7);_TimeMillis=1741203759430;_LevelValue=1000;|
dev_dataverse>   jakarta.faces.component.UpdateModelException: java.lang.IllegalArgumentException: Cannot convert Root of type class java.lang.String to class edu.harvard.iq.dataverse.Dataverse
dev_dataverse> jakarta.faces.component.UpdateModelException: java.lang.IllegalArgumentException: Cannot convert Root of type class java.lang.String to class edu.harvard.iq.dataverse.Dataverse
dev_dataverse> 	at jakarta.faces.component.UIInput.updateModel(UIInput.java:721)
dev_dataverse> 	at jakarta.faces.component.UIInput.processUpdates(UIInput.java:622)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:938)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:938)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:938)
dev_dataverse> 	at jakarta.faces.component.UIForm.processUpdates(UIForm.java:253)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:938)
dev_dataverse> 	at jakarta.faces.component.UIComponentBase.processUpdates(UIComponentBase.java:938)
dev_dataverse> 	at jakarta.faces.component.UIViewRoot.processUpdates(UIViewRoot.java:1305)
dev_dataverse> 	at com.sun.faces.lifecycle.UpdateModelValuesPhase.execute(UpdateModelValuesPhase.java:50)
dev_dataverse> 	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:72)
dev_dataverse> 	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:159)
dev_dataverse> 	at jakarta.faces.webapp.FacesServlet.executeLifecyle(FacesServlet.java:691)
dev_dataverse> 	at jakarta.faces.webapp.FacesServlet.service(FacesServlet.java:449)
dev_dataverse> 	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1554)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:331)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:83)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.ocpsoft.rewrite.servlet.RewriteFilter.doFilter(RewriteFilter.java:226)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:253)
dev_dataverse> 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:211)
dev_dataverse> 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
dev_dataverse> 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:166)
dev_dataverse> 	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:757)
dev_dataverse> 	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:577)
dev_dataverse> 	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
dev_dataverse> 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:158)
dev_dataverse> 	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:372)
dev_dataverse> 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:239)
dev_dataverse> 	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
dev_dataverse> 	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:174)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153)
dev_dataverse> 	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
dev_dataverse> 	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
dev_dataverse> 	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
dev_dataverse> 	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510)
dev_dataverse> 	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82)
dev_dataverse> 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
dev_dataverse> 	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
dev_dataverse> 	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
dev_dataverse> 	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
dev_dataverse> 	at java.base/java.lang.Thread.run(Unknown Source)
dev_dataverse> Caused by: java.lang.IllegalArgumentException: Cannot convert Root of type class java.lang.String to class edu.harvard.iq.dataverse.Dataverse
dev_dataverse> 	at org.glassfish.expressly.lang.ELSupport.coerceToType(ELSupport.java:482)
dev_dataverse> 	at org.glassfish.expressly.lang.ELSupport.coerceToType(ELSupport.java:423)
dev_dataverse> 	at org.glassfish.expressly.parser.AstValue.setValue(AstValue.java:191)
dev_dataverse> 	at org.glassfish.expressly.ValueExpressionImpl.setValue(ValueExpressionImpl.java:184)
dev_dataverse> 	at org.jboss.weld.module.web.el.WeldValueExpression.setValue(WeldValueExpression.java:64)
dev_dataverse> 	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:95)
dev_dataverse> 	at jakarta.faces.component.UIInput.updateModel(UIInput.java:696)
dev_dataverse> 	... 48 more
dev_dataverse> |#]
dev_dataverse> 

@pdurbin pdurbin self-assigned this Mar 5, 2025
@pdurbin pdurbin moved this from Ready for Review ⏩ to In Review 🔎 in IQSS Dataverse Project Mar 5, 2025
@qqmyers
Copy link
Member

qqmyers commented Mar 5, 2025

FWIW: Looks like it only occurs when there are no templates for some reason.

@jo-pol
Copy link
Contributor Author

jo-pol commented Mar 6, 2025

@pdurbin
1: what do you mean with a hard-reset? cc @janvanmansum
2: I actually tested the code changes on a VM box with v6.5 and some patches https://github.com/DANS-KNAW/dataverse/tree/v6.5-DANS-DataStation

@jo-pol
Copy link
Contributor Author

jo-pol commented Mar 6, 2025

Tried the IQSS develop branch on a DANS v6.5 VM and got an internal DB error.

@pdurbin
Copy link
Member

pdurbin commented Mar 6, 2025

@jo-pol sorry, I was trying to use the same terminology you were. I said "hard reset" when I meant "hard refresh".

What was the internal DB error? 🤔

@jo-pol
Copy link
Contributor Author

jo-pol commented Mar 6, 2025

The DB error was

Internal Exception: org.postgresql.util.PSQLException: ERROR: column "displayoncreate" does not exist
  Position: 12
Error Code: 0
Call: SELECT ID, DISPLAYONCREATE, INCLUDE, REQUIRED, datasetfieldtype_id, dataverse_id FROM DataverseFieldTypeInputLevel WHERE (dataverse_id = ?)
	bind => [1 parameter bound]
Query: ReadAllQuery(name="dataverseFieldTypeInputLevels" referenceClass=DataverseFieldTypeInputLevel sql="SELECT ID, DISPLAYONCREATE, INCLUDE, REQUIRED, datasetfieldtype_id, dataverse_id FROM DataverseFieldTypeInputLevel WHERE (dataverse_id = ?)")

@jo-pol
Copy link
Contributor Author

jo-pol commented Mar 6, 2025

Tried returning null in stead of a string also worked on a DANS v6.5 VM. Examining the stack trace and corresponding jakarta/faces code that would cause a null pointer exception on IQSS development. So now I used zero as default. Don't know about the effects on templates and/or when the initial dataverse was another one.

@jo-pol
Copy link
Contributor Author

jo-pol commented Mar 6, 2025

Not sure but I might have stayed on the page https://dev.archaeology.datastations.nl/dataset.xhtml?ownerId=1 when redeploying the war when I saw the DB error.

@pdurbin
Copy link
Member

pdurbin commented Mar 6, 2025

ERROR: column "displayoncreate" does not exist

Right, sorry, that was our bad. Fixed in this PR:

@cmbz cmbz added FY25 Sprint 19 FY25 Sprint 19 (2025-03-12 - 2025-03-26) FY25 Sprint 18 FY25 Sprint 18 (2025-02-26 - 2025-03-12) labels Mar 12, 2025
@pdurbin
Copy link
Member

pdurbin commented Mar 19, 2025

@jo-pol we just released Dataverse 6.6. Can you please merge the latest from develop into this branch?

Also, as I said above, I can definitely reproduce some strangeness but this pull request doesn't seem to help (the error in server.log was different). Am I missing something? Thanks!

@jo-pol
Copy link
Contributor Author

jo-pol commented Mar 25, 2025

@pdurbin
Did you retry after the commit using zero as default search argument?

@coveralls
Copy link

coveralls commented Mar 25, 2025

Coverage Status

coverage: 23.006% (+0.3%) from 22.734%
when pulling 34cef44 on DANS-KNAW-jp:blocked-deposit-page
into efbbd18 on IQSS:develop.

@pdurbin pdurbin changed the title blocked deposit page blocked deposit page, hide host field when only one collection (e.g. root) Mar 25, 2025
@pdurbin
Copy link
Member

pdurbin commented Mar 25, 2025

@jo-pol I just tried and no, I was testing an earlier commit last time. This time I'm on the latest (95860a6) and I couldn't reproduce the bug! 🎉 Perfect! 🚀

I noticed that you added a hasDataversesToChoose boolean. I took the liberty of updating the title of this pull request to reflect this.

Under "Does this PR introduce a user interface change?" can you please upload "before" and "after" screenshots or at least describe the change?

Do you want this hasDataversesToChoose behavior to continue in the new React UI? If so, please open an issue at https://github.com/IQSS/dataverse-frontend

Finally, could you please also add a release note snippet to this PR? You could call it doc/release-notes/11301blocked-deposit-page.md and write a sentence or two about what this pull request does.

p.s. I noticed API tests are failing but it was a problem with Jenkins/AWS so I started another build. Since this is a frontend change, it shouldn't affect API tests.

@cmbz cmbz added the FY25 Sprint 20 FY25 Sprint 20 (2025-03-26 - 2025-04-09) label Mar 30, 2025
Copy link
Member

@pdurbin pdurbin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jo-pol thanks for adding a release note! I'm sending this to "ready for QA".

@github-project-automation github-project-automation bot moved this from In Review 🔎 to Ready for QA ⏩ in IQSS Dataverse Project Apr 7, 2025
@ofahimIQSS ofahimIQSS self-assigned this Apr 9, 2025
@ofahimIQSS ofahimIQSS moved this from Ready for QA ⏩ to QA ✅ in IQSS Dataverse Project Apr 9, 2025
@cmbz cmbz added the FY25 Sprint 21 FY25 Sprint 21 (2025-04-09 - 2025-04-23) label Apr 9, 2025
@ofahimIQSS
Copy link
Contributor

I'm getting a 500 error page when I push this to internal:
image

@pdurbin
Copy link
Member

pdurbin commented Apr 11, 2025

@ofahimIQSS what do you see in server.log?

@@ -26,7 +26,9 @@ public class DataverseConverter implements Converter {

@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
return dataverseService.find(new Long(submittedValue));
var pk = (submittedValue == null || submittedValue.isEmpty() || submittedValue.matches(".*[^0-9].*"))
? 0 : Long.valueOf(submittedValue);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW - the root dataverse does not always have id=0

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FWIW: There is a findRoot call that could be used instead.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jo-pol can you please switch this to dataverseService.findRootDataverse() instead? Thanks.

@pdurbin pdurbin moved this from QA ✅ to In Review 🔎 in IQSS Dataverse Project Apr 14, 2025
@pdurbin pdurbin assigned pdurbin and qqmyers and unassigned ofahimIQSS and pdurbin Apr 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FY25 Sprint 18 FY25 Sprint 18 (2025-02-26 - 2025-03-12) FY25 Sprint 19 FY25 Sprint 19 (2025-03-12 - 2025-03-26) FY25 Sprint 20 FY25 Sprint 20 (2025-03-26 - 2025-04-09) FY25 Sprint 21 FY25 Sprint 21 (2025-04-09 - 2025-04-23) Size: 3 A percentage of a sprint. 2.1 hours.
Projects
Status: In Review 🔎
Development

Successfully merging this pull request may close these issues.

6 participants