INSPIRE-MIF / helpdesk-validator

Community discussion forum for INSPIRE validation issues
42 stars 23 forks source link

Direct WFS - An error has occurred - Internal domain used? #960

Open joachimnielandt opened 1 year ago

joachimnielandt commented 1 year ago

Description

I have set up 2023.1 in a kubernetes environment with modified files (config.js and etf-config.properties) such that the domain is properly configured. I did this by deploying the base docker image and mounting the modified files in the relevant locations.

Most of the tests now function correctly, except for the Download Service > WFS > Direct WFS option, which results in 'An error has occurred' message.

Reproduction

The deployment can be found here: https://metadata.dev-vlaanderen.be/inspirevalidator/ Using the service url https://geo.api.vlaanderen.be/hy-p/wfs?service=WFS&request=getcapabilities in the Direct WFS option results in the error message.

Possible issue

I can see in the console some output, which references an internal domain name (in this case the url http://dev.pre.aks-ingress.mdv/validator/v2/TestRuns is shown).

/validator is not a valid reference here (accessing the internal domain should go through /inspirevalidator), so I suspect I still miss a configuration property somewhere?

manuelaromero-guadaltel commented 1 year ago

Dear @joachimnielandt ,

We have investigated this issue, taking into account your conclusions, but as we checked the requested URL it seemed to be /inspirevalidator. This issue is related to the not recognition of three test suites related with team engine which have not been uploaded in your deployment. You could check the number of ETSs loaded by accessing https://metadata.dev-vlaanderen.be/inspirevalidator/v2/ExecutableTestSuites As we tested, there were just 213 Executable Test Suites(ETS) while the Production instance shows 216 ETSs.

As we see it, it seems that this can be caused due to a temporary unavailability of the Team Engine endpoint while the Validator is started and the ETSs are created in the Validator's instance. Has this issue been there for a while? Since when? When did you deploy last time? With a clean redeployment, this issue should dissapear provided that the Team Engine is operational.

If you have tried to redeploy and it still doesn't work, can you check if you has modified the TeamEngine credentials in the config.js?

Hope these two advices are of help, if they don't help to solve the issue, please contact us again.

Thanks for your attention

jenriquesoriano commented 1 year ago

Dear @joachimnielandt ,

did you have the chance to test the proposed solution? Please let us know if you found additional issues.

Thanks!

joachimnielandt commented 1 year ago

Dear @jenriquesoriano , sorry for the delay, the holiday period cropped up I'm afraid.

We have investigated this issue, taking into account your conclusions, but as we checked the requested URL it seemed to be /inspirevalidator.

Indeed, I do not see the references to /validator anymore. Perhaps this was unrelated then. I have retried the scenario as I described above and I still get the "An error has occurred" message though.

This issue is related to the not recognition of three test suites related with team engine which have not been uploaded in your deployment. You could check the number of ETSs loaded by accessing https://metadata.dev-vlaanderen.be/inspirevalidator/v2/ExecutableTestSuites As we tested, there were just 213 Executable Test Suites(ETS) while the Production instance shows 216 ETSs.

Indeed, 213, I did not know this aspect of the validator yet.

As we see it, it seems that this can be caused due to a temporary unavailability of the Team Engine endpoint while the Validator is started and the ETSs are created in the Validator's instance. Has this issue been there for a while? Since when? When did you deploy last time?

There hasn't been a deployment in the mean while, although the service has been restarted daily. The pods don't have persistent storage so it's really the following that is running:

With a clean redeployment, this issue should dissapear provided that the Team Engine is operational. If you have tried to redeploy and it still doesn't work, can you check if you has modified the TeamEngine credentials in the config.js?

I have now tried to redeploy with the teamengine credentials filled in (etf-config.properties). Upon running the 'direct wfs test' again...

... I get the following 404 with responseText (notice the 'url' being the internal hostname, not the external/correct one):

'{"error":"The Object or dependent Objects could not be found and may have already been deleted: ExecutableTestSuiteDao: An object with the id \\u0022ed2d3501-d700-4ff9-b9bf-070dece8ddbd\\u0022 could not be found!","timestamp":"1692783044602","url":"http://dev.pre.aks-ingress.mdv/validator/v2/TestRuns","id":"l.object.with.eid.not.found","stacktrace":["de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \\u0022ed2d3501-d700-4ff9-b9bf-070dece8ddbd\\u0022 could not be found!","\\tat de.interactive_instruments.etf.dal.dao.basex.AbstractBsxDao.getById(AbstractBsxDao.java:209)","\\tat de.interactive_instruments.etf.webapp.controller.TestDriverController.getById(TestDriverController.java:163)","\\tat de.interactive_instruments.etf.dal.dao.PreparedDtoResolver.getById(PreparedDtoResolver.java:49)","\\tat de.interactive_instruments.etf.webapp.dto.StartTestRunRequest.toTestRun(StartTestRunRequest.java:119)","\\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:474)"," [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \\u0022ed2d3501-d700-4ff9-b9bf-070dece8ddbd\\u0022 could not be found!","\\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:517)","\\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)","\\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)","\\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","\\tat java.lang.reflect.Method.invoke(Method.java:497)","\\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)","\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)","\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)","\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)","\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)","\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)","\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)"," [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \\u0022ed2d3501-d700-4ff9-b9bf-070dece8ddbd\\u0022 could not be found!","\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)","\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)","\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)","\\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)","\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)","\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)","\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)","\\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821)","\\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685)","\\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)","\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)","\\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)","\\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)","\\tat org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)","\\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)","\\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)","\\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)","\\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)","\\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)","\\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)","\\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)","\\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)","\\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)","\\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)","\\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109)","\\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)","\\tat org.eclipse.jetty.server.Server.handle(Server.java:517)","\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308)","\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)","\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)","\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)","\\tat org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)","\\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)","\\tat org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)","\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)","\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)","\\tat java.lang.Thread.run(Thread.java:745)"]}'
joachimnielandt commented 1 year ago

Tried the same setup with 2023.2 but this resulted in the same erroneous behaviour (currently deployed on https://metadata.dev-vlaanderen.be/inspirevalidator)

joachimnielandt commented 1 year ago

Using an older account seems to be helping in returning the desired 216 ETSs. However, the direct WFS test still fails, now with the following in console:

XHRPOST
https://metadata.dev-vlaanderen.be/inspirevalidator/v2/TestRuns
[HTTP/2 502 Bad Gateway 147ms]
responseText: "<html>\r\n<head><title>502 Bad Gateway</title></head>\r\n<body>\r\n<center><h1>502 Bad Gateway</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n"
co​ntroller.js:6749:14

Hopefully this gives a further clue on what is going wrong?

joachimnielandt commented 11 months ago

Update when running 2023.3, I am seeing the same behaviour. Currently the ETF credentials are not set, which lead to the original error where the internal domain is used (I am thinking this is the actual issue at hand for me). To reiterate:

Test setup:

image

Network behaviour:

{"label":"Test run on 09:48 - 11.10.2023 with test suite Conformance Class Direct WFS","executableTestSuiteIds":["EIDed2d3501-d700-4ff9-b9bf-070dece8ddbd","EID174edf55-699b-446c-968c-1892a4d8d5bd"],"arguments":{},"testObject":{"username":"","password":"","resources":{"serviceEndpoint":"https://geo.api.vlaanderen.be/hy-p/wfs?service=WFS&request=getcapabilities"}}} controller.js:6729:12

XHRPOST
https://metadata.dev-vlaanderen.be/inspirevalidator/v2/TestRuns
[HTTP/2 404  142ms]

{
  "readyState": 4,
  "responseText": "{\"error\":\"The Object or dependent Objects could not be found and may have already been deleted: ExecutableTestSuiteDao: An object with the id \\u0022ed2d3501-d700-4ff9-b9bf-070dece8ddbd\\u0022 could not be found!\",\"timestamp\":\"1697013067486\",\"url\":\"http://dev.pre.aks-ingress.mdv/validator/v2/TestRuns\",\"id\":\"l.object.with.eid.not.found\",\"stacktrace\":[\"de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \\u0022ed2d3501-d700-4ff9-b9bf-070dece8ddbd\\u0022 could not be found!\",\"\\tat de.interactive_instruments.etf.dal.dao.basex.AbstractBsxDao.getById(AbstractBsxDao.java:209)\",\"\\tat de.interactive_instruments.etf.webapp.controller.TestDriverController.getById(TestDriverController.java:163)\",\"\\tat de.interactive_instruments.etf.dal.dao.PreparedDtoResolver.getById(PreparedDtoResolver.java:49)\",\"\\tat de.interactive_instruments.etf.webapp.dto.StartTestRunRequest.toTestRun(StartTestRunRequest.java:119)\",\"\\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:474)\",\" [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \\u0022ed2d3501-d700-4ff9-b9bf-070dece8ddbd\\u0022 could not be found!\",\"\\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:517)\",\"\\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\",\"\\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)\",\"\\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)\",\"\\tat java.base/java.lang.reflect.Method.invoke(Unknown Source)\",\"\\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)\",\"\\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)\",\"\\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)\",\"\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)\",\"\\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)\",\"\\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)\",\"\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)\",\" [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \\u0022ed2d3501-d700-4ff9-b9bf-070dece8ddbd\\u0022 could not be found!\",\"\\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)\",\"\\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)\",\"\\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)\",\"\\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)\",\"\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)\",\"\\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)\",\"\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\",\"\\tat org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1459)\",\"\\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)\",\"\\tat org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)\",\"\\tat org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:292)\",\"\\tat org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)\",\"\\tat org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)\",\"\\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)\",\"\\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)\",\"\\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)\",\"\\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)\",\"\\tat org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201)\",\"\\tat org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)\",\"\\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)\",\"\\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\",\"\\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)\",\"\\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\",\"\\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)\",\"\\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)\",\"\\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\",\"\\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)\",\"\\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\",\"\\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)\",\"\\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)\",\"\\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\",\"\\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)\",\"\\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\",\"\\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)\",\"\\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)\",\"\\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\",\"\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\",\"\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\",\"\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\",\"\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\",\"\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\",\"\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\",\"\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\",\"\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\",\"\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\",\"\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\",\"\\tat java.base/java.lang.Thread.run(Unknown Source)\"]}",
  "responseJSON": {
    "error": "The Object or dependent Objects could not be found and may have already been deleted: ExecutableTestSuiteDao: An object with the id \"ed2d3501-d700-4ff9-b9bf-070dece8ddbd\" could not be found!",
    "timestamp": "1697013067486",
    "url": "http://dev.pre.aks-ingress.mdv/validator/v2/TestRuns",
    "id": "l.object.with.eid.not.found",
    "stacktrace": [
      "de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \"ed2d3501-d700-4ff9-b9bf-070dece8ddbd\" could not be found!",
      "\tat de.interactive_instruments.etf.dal.dao.basex.AbstractBsxDao.getById(AbstractBsxDao.java:209)",
      "\tat de.interactive_instruments.etf.webapp.controller.TestDriverController.getById(TestDriverController.java:163)",
      "\tat de.interactive_instruments.etf.dal.dao.PreparedDtoResolver.getById(PreparedDtoResolver.java:49)",
      "\tat de.interactive_instruments.etf.webapp.dto.StartTestRunRequest.toTestRun(StartTestRunRequest.java:119)",
      "\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:474)",
      " [wrapped] de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \"ed2d3501-d700-4ff9-b9bf-070dece8ddbd\" could not be found!",
      "\tat de.interactive_instruments.etf.webapp.controller.TestRunController.start(TestRunController.java:517)",
      "\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)",
      "\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)",
      "\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)",
      "\tat java.base/java.lang.reflect.Method.invoke(Unknown Source)",
      "\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)",
      "\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)",
      "\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)",
      "\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)",
      "\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)",
      "\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)",
      "\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)",
      " [wrapped] org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is de.interactive_instruments.etf.webapp.controller.LocalizableApiError: de.interactive_instruments.exceptions.ObjectWithIdNotFoundException: ExecutableTestSuiteDao: An object with the id \"ed2d3501-d700-4ff9-b9bf-070dece8ddbd\" could not be found!",
      "\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:982)",
      "\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)",
      "\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)",
      "\tat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)",
      "\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:707)",
      "\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)",
      "\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:790)",
      "\tat org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1459)",
      "\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)",
      "\tat org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)",
      "\tat org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:292)",
      "\tat org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)",
      "\tat org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)",
      "\tat de.interactive_instruments.etf.webapp.filter.ApiFilter.doFilterInternal(ApiFilter.java:89)",
      "\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)",
      "\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)",
      "\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)",
      "\tat org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201)",
      "\tat org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)",
      "\tat org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)",
      "\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)",
      "\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)",
      "\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
      "\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)",
      "\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)",
      "\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)",
      "\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)",
      "\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)",
      "\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)",
      "\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)",
      "\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)",
      "\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)",
      "\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)",
      "\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:191)",
      "\tat org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)",
      "\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)",
      "\tat org.eclipse.jetty.server.Server.handle(Server.java:516)",
      "\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)",
      "\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)",
      "\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)",
      "\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)",
      "\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)",
      "\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)",
      "\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)",
      "\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)",
      "\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)",
      "\tat java.base/java.lang.Thread.run(Unknown Source)"
    ]
  },
  "status": 404,
  "statusText": "error"
}

At some point, the validator tries to retrieve the following url (http://dev.pre.aks-ingress.mdv/validator/v2/TestRuns) and fails, which is to be expected. dev.pre.aks-ingress.mdv is an internal hostname, it should actually be metadata.dev-vlaanderen.be (as defined in the config files). The path should be /inspirevalidator, instead of /validator.