openoereb / pyramid_oereb_mfp

Implementation of a static extract (PDF export) for the pyramid_oereb server with MapFish-Print
1 stars 3 forks source link

java error with latest version (1.7.6) #71

Closed voisardf closed 3 years ago

voisardf commented 4 years ago

hi, trying to get the pdf with pyramid_oereb_mfp version 1.7.6 and print-servlet 3.23.0,

I get following error:

24-Sep-2020 15:17:59.264 GRAVE [http-nio-8080-exec-1] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [mapfish-print] in context with path [/print-oereb] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: Error occurred while reading configuration file 'file:/C:/Applications/ApacheTomcat9/webapps/print-oereb/print-apps/oereb/config.yaml'] with root cause
 org.yaml.snakeyaml.error.YAMLException: Number of aliases for non-scalar nodes exceeds the specified max=50

Any idea what the source could be and how to solve it?

I am in a non-docker environnement with Apache Tomcat 9.0.7 and jre1.8.0_181 the json looks fine to me. CH799979561228.json.txt

thanks for your suggestions

jwkaltz commented 4 years ago

@voisardf Indeed there was a new "feature" introduced in the newest version of the snakeyaml library, which limits the number to 50. If I remember correctly, a work-around was implemented for mapfish-print 3.24. Please try that version. If that does not work, I will research some more.

voisardf commented 4 years ago

@jwkaltz thanks. Sorry, I didn't realize the issue has already been brought up (and solved) with issue https://github.com/openoereb/pyramid_oereb_mfp/issues/68

I'm missing the war packages for 3.23.1 and 3.24.0 though on https://github.com/orgs/mapfish/packages Could you put the link on the github page? Thanks

Because I tried to fork the repo and build the .war locally, but that didn't work out (yet)...

jwkaltz commented 4 years ago

I'm missing the war packages for 3.23.1 and 3.24.0 though on https://github.com/orgs/mapfish/packages Could you put the link on the github page? Thanks

@danduk82 do you know why the war are missing in https://github.com/orgs/mapfish/packages?

voisardf commented 3 years ago

@danduk82 @jwkaltz will version 3.25.0 work too as there is still no 3.24.0 available?

jwkaltz commented 3 years ago

@voisardf I think the oereb print config.yaml will need to be adapted for this new version, see https://github.com/mapfish/mapfish-print/blob/master/BREAKING-CHANGES.md regarding "allowTransparency"

lopo977 commented 3 years ago

docker camptocamp/mapfish_print:3.24 and 3.25 images with snakeyaml greater than 1.25 still present

oereb-print_1  | 14:45:55.844 [http-nio-8080-exec-1] ERROR o.a.c.c.C.[.[.[/].[mapfish-print] - Servlet.service() for servlet [mapfish-print] in context with path [] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: Error occurred while reading configuration file 'file:/usr/local/tomcat/webapps/ROOT/print-apps/oereb/config.yaml'] with root cause
oereb-print_1  | org.yaml.snakeyaml.error.YAMLException: Number of aliases for non-scalar nodes exceeds the specified max=50

docker camptocamp/mapfish_print:3.23 image is working well.

jwkaltz commented 3 years ago

@lopo977 3.23 was a work-around version precisely because of this YAML problem (the workaround was that an old version of snakeyaml library was forced). Starting 3.24, the new version of snakeyaml is used, which by default has a limit of 50. To change the number of aliases allowed in the YAML, there is now a variable. I have added an example just now in our standard configuration: https://github.com/openoereb/pyramid_oereb_mfp/commit/da855ffd2e69c9695f15b796ffbbe297d1b86165

voisardf commented 3 years ago

I'd like to try 3.24 as I get other issues with 3.25. Could you make the 3.24 available on the package site (print-servlet)? Or did I overlook it?

jwkaltz commented 3 years ago

I'd like to try 3.24 as I get other issues with 3.25. Could you make the 3.24 available on the package site (print-servlet)? Or did I overlook it?

I don't have access to that site, but I am looking for someone who does. In any case, could you report on what issues you had with 3.25? So far, I am only aware of the pdf/a conformance parameter name which must be changed.

jwkaltz commented 3 years ago

@voisardf I just updated the repository to be able to use MapFish Print 3.25: https://github.com/openoereb/pyramid_oereb_mfp/commit/17a1cf168d727065cc3939eaa8b9da8b70f2fb74 In local testing, it works, but this is just dummy data - can you check if it works for you?

lopo977 commented 3 years ago

Thank you @jwkaltz with the config variable PRINT_YAML_MAX_ALIASES MapFish Print 3.24 and MapFish Print 3.25 work well. I will test also pdf/a conformance in 3.25 with the offices.

voisardf commented 3 years ago

Tomcat does not even deploy the oereb print throwing following error:

20-Oct-2020 11:14:13.496 AVERTISSEMENT [main] org.apache.catalina.webresources.DirResourceSet.initInternal Failed to read manifest from [C:\Applications\ApacheTomcat9\webapps\print-oereb\META-INF\MANIFEST.MF]
 java.io.IOException: invalid manifest format
    at java.util.jar.Manifest.read(Unknown Source)
    at java.util.jar.Manifest.<init>(Unknown Source)
    at org.apache.catalina.webresources.DirResourceSet.initInternal(DirResourceSet.java:272)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:173)
    at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:714)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4717)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4852)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:742)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:718)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:966)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:943)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)

20-Oct-2020 11:14:13.699 GRAVE [main] org.apache.catalina.core.StandardContext.startInternal Error while attempting to validate required application extensions
 java.io.IOException: invalid manifest format
    at java.util.jar.Manifest.read(Unknown Source)
    at java.util.jar.Manifest.<init>(Unknown Source)
    at org.apache.catalina.util.ExtensionValidator.validateApplication(ExtensionValidator.java:137)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4873)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:742)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:718)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986)
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
    at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:772)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:426)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1585)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:308)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:424)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:367)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:966)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:839)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1427)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1417)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:943)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:258)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:770)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:682)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)

20-Oct-2020 11:14:13.699 GRAVE [main] org.apache.catalina.core.StandardContext.startInternal One or more components marked the context as not correctly configured
20-Oct-2020 11:14:13.700 GRAVE [main] org.apache.catalina.core.StandardContext.startInternal Erreur de démarrage du contexte [/print-oereb] suite aux erreurs précédentes
20-Oct-2020 11:14:13.701 INFOS [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [C:\Applications\ApacheTomcat9\webapps\print-oereb.war] has finished in [210] ms
20-Oct-2020 11:14:13.702 INFOS [main] org.apache.catalina.startup.HostConfig.deployDirectory Déploiement du répertoire [C:\Applications\ApacheTomcat9\webapps\docs] de l'application web
20-Oct-2020 11:14:13.718 INFOS [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\ApacheTomcat9\webapps\docs] has finished in [16] ms
20-Oct-2020 11:14:13.718 INFOS [main] org.apache.catalina.startup.HostConfig.deployDirectory Déploiement du répertoire [C:\Applications\ApacheTomcat9\webapps\manager] de l'application web
20-Oct-2020 11:14:13.765 INFOS [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\ApacheTomcat9\webapps\manager] has finished in [47] ms
20-Oct-2020 11:14:13.766 INFOS [main] org.apache.catalina.startup.HostConfig.deployDirectory Déploiement du répertoire [C:\Applications\ApacheTomcat9\webapps\ROOT] de l'application web
20-Oct-2020 11:14:13.782 INFOS [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Applications\ApacheTomcat9\webapps\ROOT] has finished in [17] ms
20-Oct-2020 11:14:13.784 INFOS [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
20-Oct-2020 11:14:13.792 INFOS [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
20-Oct-2020 11:14:13.796 INFOS [main] org.apache.catalina.startup.Catalina.start Server startup in 28158 ms
20-Oct-2020 11:14:13.871 AVERTISSEMENT [http-nio-8080-exec-1] org.apache.catalina.webresources.DirResourceSet.initInternal Failed to read manifest from [C:\Applications\ApacheTomcat9\webapps\print-oereb\META-INF\MANIFEST.MF]
 java.io.IOException: invalid manifest format
    at java.util.jar.Manifest.read(Unknown Source)
    at java.util.jar.Manifest.<init>(Unknown Source)
    at org.apache.catalina.webresources.DirResourceSet.initInternal(DirResourceSet.java:272)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:173)
    at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:714)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4717)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4852)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1395)
    at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:698)
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:223)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:611)
    at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348)
    at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:52)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:407)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

20-Oct-2020 11:14:14.041 GRAVE [http-nio-8080-exec-1] org.apache.catalina.core.StandardContext.startInternal Error while attempting to validate required application extensions
 java.io.IOException: invalid manifest format
    at java.util.jar.Manifest.read(Unknown Source)
    at java.util.jar.Manifest.<init>(Unknown Source)
    at org.apache.catalina.util.ExtensionValidator.validateApplication(ExtensionValidator.java:137)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4873)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1395)
    at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:698)
    at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:223)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:136)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:611)
    at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348)
    at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:52)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:651)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:407)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:754)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1376)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

20-Oct-2020 11:14:14.042 GRAVE [http-nio-8080-exec-1] org.apache.catalina.core.StandardContext.startInternal One or more components marked the context as not correctly configured
20-Oct-2020 11:14:14.042 GRAVE [http-nio-8080-exec-1] org.apache.catalina.core.StandardContext.startInternal Erreur de démarrage du contexte [/print-oereb] suite aux erreurs précédentes
20-Oct-2020 11:14:14.045 INFOS [http-nio-8080-exec-1] org.apache.catalina.util.LifecycleBase.stop The stop() method was called on component [WebappLoader[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/print-oereb]]] after stop() had already been called. The second call will be ignored.

My dev configuration is: Apache Tomcat/9.0.7 | 1.8.0_181-b13 | Oracle Corporation | Windows 10 | 10.0 - 1909 | amd64

jwkaltz commented 3 years ago

Closing this issue: Regarding the Manifest file error reading in non-docker Tomcat, François noticed that there is an empty line in the Manifest file between Git-Revision and Build-By, that Tomcat does not like. Once this line removed, the error disappears.