SSHOC / sshoc-marketplace-backend

Code for the backend
Apache License 2.0
2 stars 0 forks source link

Export of vocabulary sshoc-keyword is not working #396

Closed KlausIllmayer closed 11 months ago

KlausIllmayer commented 1 year ago

Currently, I'm not able to export the vocabulary sshoc-keyword. I will get an 500 Internal Server Error and I see this error message in the logs:

Details

10-05-2023 16:04:40.660 [http-nio-8080-exec-10] ERROR e.s.m.c.MarketplaceExceptionHandler.handleServerError - Runtime exception
java.lang.NullPointerException: null
        at eu.sshopencloud.marketplace.services.vocabularies.rdf.RDFModelPrinter.addConceptToModel(RDFModelPrinter.java:151)
        at eu.sshopencloud.marketplace.services.vocabularies.rdf.RDFModelPrinter$$FastClassBySpringCGLIB$$e7842fe1.invoke()
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:136)
        at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
        at eu.sshopencloud.marketplace.services.vocabularies.rdf.RDFModelPrinter$$EnhancerBySpringCGLIB$$b0fe5877.addConceptToModel()
        at eu.sshopencloud.marketplace.services.vocabularies.VocabularyService.lambda$exportVocabulary$4(VocabularyService.java:239)
        at java.base/java.util.ArrayList.forEach(Unknown Source)
        at eu.sshopencloud.marketplace.services.vocabularies.VocabularyService.exportVocabulary(VocabularyService.java:238)
        at eu.sshopencloud.marketplace.services.vocabularies.VocabularyService$$FastClassBySpringCGLIB$$920dce85.invoke()
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
        at eu.sshopencloud.marketplace.services.vocabularies.VocabularyService$$EnhancerBySpringCGLIB$$39f29da9.exportVocabulary()
        at eu.sshopencloud.marketplace.controllers.vocabularies.VocabularyController.lambda$exportVocabulary$0(VocabularyController.java:88)
        at org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBodyReturnValueHandler$StreamingResponseBodyTask.call(StreamingResponseBodyReturnValueHandler.java:111)
        at org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBodyReturnValueHandler$StreamingResponseBodyTask.call(StreamingResponseBodyReturnValueHandler.java:98)
        at org.springframework.web.context.request.async.WebAsyncManager.lambda$startCallableProcessing$4(WebAsyncManager.java:328)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)

I'm not sure, how to interpret this error message. It will not occur on other vocabularies, thus I guess it is based on some concepts in the vocabulary, that were created either by ingest pipeline or by users, which cause problems. Not sure how to debug this. At least I find strange URIs for concepts that do have a space in the label, see e.g. https://marketplace.sshopencloud.eu/tool-or-service/1U5uMh and the keyword "word processing" (which could also have a line break inside, looking at the weird representation in the frontend) whose url is "https://vocabs.dariah.eu/sshoc-keyword/word%20processing". But such concepts are not able to be resolved due to the space. This was the reason, that when you add as a user a new concept which has in the label a space, the url will be camelCased. I'm not sure, why this is not the case for "word processing" - looking at the information contributors it is most probably a problem coming from the ingest pipeline. I will try to find out, how such a URI could have been created. @tparkola Maybe you can have a look in the code, if such wrong URLs could be the reason for this error message?

KlausIllmayer commented 1 year ago

I send a database dump

KlausIllmayer commented 11 months ago

The export of the vocabulary is now working, thanks for solving it.

Still the open question is how it came to the strange concept codes, like for "word processing" it is "word%20processing" but should be "wordProcessing". This is also an issue for the vocabulary server, as it does not resolve the "word processing" in a good way. Will need to investigate this further, but the backend issue is solved.

KlausIllmayer commented 11 months ago

Tested it also on production, export works. Created a dedicated issue about the further investigation of the wrong concept codes: https://github.com/SSHOC/vocabularies/issues/32