Dear Geomesa support,
we currently run Geomesa in a Filesystem (FS) environment on a S3 bucket store using
·
Geomesa 2.2.0
·
Geomesa FS 2.11 data store (parquet storage)
On request, geo-referenced data is written to the data store. The corresponding GeoMesaFeatureWriter is instantiated using getFeatureWriteAppend.
After a while – especially in case when the number of requests increase - it happens that we receive an ArrayIndexOutOfBoundsException, in detail
Apr 24, 2019 7:10:03 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ArrayIndexOutOfBoundsException:
Index 2 out of bounds for length 2] with root cause
java.lang.ArrayIndexOutOfBoundsException: Index 2 out of bounds for length 2
at org.apache.parquet.io.MessageColumnIO$MessageColumnIORecordConsumer.addLong(MessageColumnIO.java:443)
at org.locationtech.geomesa.parquet.AttributeWriter$LongWriter.write(AttributeWriter.scala:113)
at org.locationtech.geomesa.parquet.AttributeWriter$AbstractAttributeWriter.apply(AttributeWriter.scala:67)
at org.locationtech.geomesa.parquet.jobs.SimpleFeatureWriteSupport.writeFields(SimpleFeatureWriteSupport.scala:58)
at org.locationtech.geomesa.parquet.jobs.SimpleFeatureWriteSupport.write(SimpleFeatureWriteSupport.scala:43)
at org.locationtech.geomesa.parquet.jobs.SimpleFeatureWriteSupport.write(SimpleFeatureWriteSupport.scala:21)
at org.apache.parquet.hadoop.InternalParquetRecordWriter.write(InternalParquetRecordWriter.java:123)
at org.apache.parquet.hadoop.ParquetWriter.write(ParquetWriter.java:292)
at org.locationtech.geomesa.parquet.ParquetFileSystemStorage$ParquetFileSystemWriter.write(ParquetFileSystemStorage.scala:86)
at org.locationtech.geomesa.parquet.ParquetFileSystemStorage$$anon$1.org$locationtech$geomesa$fs$storage$common$MetadataObservingFileSystemWriter$$super$write(ParquetFileSystemStorage.scala:39)
at org.locationtech.geomesa.fs.storage.common.MetadataObservingFileSystemWriter$class.write(MetadataObservingFileSystemWriter.scala:24)
at org.locationtech.geomesa.parquet.ParquetFileSystemStorage$$anon$1.write(ParquetFileSystemStorage.scala:39)
at org.locationtech.geomesa.fs.FileSystemFeatureStore$$anon$1.write(FileSystemFeatureStore.scala:75)
at org.geotools.data.store.EventContentFeatureWriter.write(EventContentFeatureWriter.java:122)
at org.geotools.data.InProcessLockingManager$1.write(InProcessLockingManager.java:304)
at com.athena.vcc.geomesaservice.geomesa.datastore.GeoMesaFeatureWriter.write(GeoMesaFeatureWriter.java:81)
at com.athena.vcc.geomesaservice.geomesa.datastore.GeoMesaFileSystemDataStore.insert(GeoMesaFileSystemDataStore.java:130)
at com.athena.vcc.geomesaservice.geomesa.GeoMesaFacade.saveNetworkPerformanceEvents(GeoMesaFacade.java:72)
at com.athena.vcc.geomesaservice.rest.StorageController.saveNetworkPerformanceEvents(StorageController.java:80)
at jdk.internal.reflect.GeneratedMethodAccessor102.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
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.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.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
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:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
From this point every call to the storage wirte fails according the exception above. However from time to time the behaviour recovers itself until the next period of above
exception.
Did you already see this issue before or do you have any ideas how isolate the issue? Any suggestions are welcome.
Thank you and best regards
Siegmar Züfle
Daimler AG
RD/AFC
Onboard Crowd Functions for Automated Driving
HPC: 059-G006
Gebäude 738, Zimmer 3.132
Hanns-Klemm-Str.
45
D-71034 Böblingen
email: siegmar.zuefle@xxxxxxxxxxx