Hi
We are using fluentd for shipping logs from EKS to splunk and using fluent-plugin-detect-exceptions for detecting exception and combine them to single log.
Normal exceptions are getting detected and shipped as single event but sql based java exception gets divided and sent to splunk as individual lines.
Normal Exception (working):
javax.ws.rs.NotFoundException: Unable to find Opportunity
at com.tactile.kingslayer.metadata.TableManager.retrieve(TableManager.java:109)
at com.tactile.kingslayer.objects.ObjectInstanceManager.getObjectRecord(ObjectInstanceManager.java:324)
at com.tactile.kingslayer.api.InstanceApi.getObjectInstance(InstanceApi.java:86)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:243)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:377)
at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:224)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
at java.base/java.lang.Thread.run(Thread.java:834)
SQL java exception (NOT working):
2019-10-08 17:36:44 ERROR c.t.k.e.ExceptionMappers ID=36e69553-7c85-4711-9a2e-ef004953c565 Uncaught exception, returning as 400 DATA_ERROR
org.jooq.exception.DataAccessException: SQL [insert into "data_divisions_4" (timezones, divisions, parentids, name, locales, shortnames, "id", "createdbys", "lastmodifiedbys", isdeleteds, createddates, lastmodifieddates, systemlastmodifieddate__s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, cast(current_timestamp as timestamp with time zone), cast(current_timestamp as timestamp with time zone), cast(current_timestamp as timestamp with time zone)) returning divisions, createdbys, createddates, lastmodifiedbys, name, lastmodifieddates, id, systemlastmodifieddates, isdeleteds]; ERROR: duplicate key value violates unique constraint "UNIQUE_INDEX_data_divisions_4_shortnames"
Detail: Key (shortname__s)=(IBM) already exists.
at org.jooq_3.11.9.POSTGRES_10.debug(Unknown Source)
at org.jooq.impl.Tools.translate(Tools.java:2429)
at org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:832)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:364)
at org.jooq.impl.InsertImpl.fetchOne(InsertImpl.java:1061)
at com.tactile.kingslayer.objects.ObjectInstanceManager.createObject(ObjectInstanceManager.java:219)
at com.tactile.kingslayer.objects.ObjectInstanceManager.createObject(ObjectInstanceManager.java:97)
at com.tactile.kingslayer.api.DivisionApi.lambda$createDivision$1(DivisionApi.java:99)
at org.jooq.impl.DefaultDSLContext.lambda$transactionResult0$0(DefaultDSLContext.java:521)
at org.jooq.impl.Tools$10$1.block(Tools.java:4422)
at java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3128)
at org.jooq.impl.Tools$10.get(Tools.java:4419)
at org.jooq.impl.DefaultDSLContext.transactionResult0(DefaultDSLContext.java:564)
at org.jooq.impl.DefaultDSLContext.transactionResult(DefaultDSLContext.java:491)
at com.tactile.kingslayer.api.DivisionApi.createDivision(DivisionApi.java:95)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:243)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104)
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268)
at org.glassfish.jersey.internal.Errors.process(Errors.java:316)
at org.glassfish.jersey.internal.Errors.process(Errors.java:298)
at org.glassfish.jersey.internal.Errors.process(Errors.java:268)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703)
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:377)
at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:224)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "UNIQUE_INDEX_data_divisions_4_shortnames"
Detail: Key (shortname__s)=(IBM) already exists.
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:143)
at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:106)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java)
at org.jooq.tools.jdbc.DefaultPreparedStatement.executeQuery(DefaultPreparedStatement.java:94)
at org.jooq.impl.AbstractDMLQuery.execute(AbstractDMLQuery.java:738)
at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:350)
... 37 common frames omitted
This fails due to the line which comes in between (Detail: Key (shortname__s)=(IBM) already exists.)
Can you please suggest if there as workaround to detect this as well and ship as single log
Hi We are using fluentd for shipping logs from EKS to splunk and using fluent-plugin-detect-exceptions for detecting exception and combine them to single log.
Normal exceptions are getting detected and shipped as single event but sql based java exception gets divided and sent to splunk as individual lines.
Normal Exception (working): javax.ws.rs.NotFoundException: Unable to find Opportunity at com.tactile.kingslayer.metadata.TableManager.retrieve(TableManager.java:109) at com.tactile.kingslayer.objects.ObjectInstanceManager.getObjectRecord(ObjectInstanceManager.java:324) at com.tactile.kingslayer.api.InstanceApi.getObjectInstance(InstanceApi.java:86) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:243) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104) at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) at org.glassfish.jersey.internal.Errors.process(Errors.java:316) at org.glassfish.jersey.internal.Errors.process(Errors.java:298) at org.glassfish.jersey.internal.Errors.process(Errors.java:268) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703) at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:377) at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:224) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573) at java.base/java.lang.Thread.run(Thread.java:834)
SQL java exception (NOT working):
2019-10-08 17:36:44 ERROR c.t.k.e.ExceptionMappers ID=36e69553-7c85-4711-9a2e-ef004953c565 Uncaught exception, returning as 400 DATA_ERROR org.jooq.exception.DataAccessException: SQL [insert into "data_divisions_4" (timezones, divisions, parentids, name, locales, shortnames, "id", "createdbys", "lastmodifiedbys", isdeleteds, createddates, lastmodifieddates, systemlastmodifieddate__s) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, cast(current_timestamp as timestamp with time zone), cast(current_timestamp as timestamp with time zone), cast(current_timestamp as timestamp with time zone)) returning divisions, createdbys, createddates, lastmodifiedbys, name, lastmodifieddates, id, systemlastmodifieddates, isdeleteds]; ERROR: duplicate key value violates unique constraint "UNIQUE_INDEX_data_divisions_4_shortnames" Detail: Key (shortname__s)=(IBM) already exists. at org.jooq_3.11.9.POSTGRES_10.debug(Unknown Source) at org.jooq.impl.Tools.translate(Tools.java:2429) at org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:832) at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:364) at org.jooq.impl.InsertImpl.fetchOne(InsertImpl.java:1061) at com.tactile.kingslayer.objects.ObjectInstanceManager.createObject(ObjectInstanceManager.java:219) at com.tactile.kingslayer.objects.ObjectInstanceManager.createObject(ObjectInstanceManager.java:97) at com.tactile.kingslayer.api.DivisionApi.lambda$createDivision$1(DivisionApi.java:99) at org.jooq.impl.DefaultDSLContext.lambda$transactionResult0$0(DefaultDSLContext.java:521) at org.jooq.impl.Tools$10$1.block(Tools.java:4422) at java.base/java.util.concurrent.ForkJoinPool.managedBlock(ForkJoinPool.java:3128) at org.jooq.impl.Tools$10.get(Tools.java:4419) at org.jooq.impl.DefaultDSLContext.transactionResult0(DefaultDSLContext.java:564) at org.jooq.impl.DefaultDSLContext.transactionResult(DefaultDSLContext.java:491) at com.tactile.kingslayer.api.DivisionApi.createDivision(DivisionApi.java:95) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191) at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:243) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104) at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) at org.glassfish.jersey.internal.Errors.process(Errors.java:316) at org.glassfish.jersey.internal.Errors.process(Errors.java:298) at org.glassfish.jersey.internal.Errors.process(Errors.java:268) at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289) at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256) at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703) at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:377) at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:224) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573) at java.base/java.lang.Thread.run(Thread.java:834) Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "UNIQUE_INDEX_data_divisions_4_shortnames" Detail: Key (shortname__s)=(IBM) already exists. at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308) at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441) at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365) at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:143) at org.postgresql.jdbc.PgPreparedStatement.executeQuery(PgPreparedStatement.java:106) at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) at org.jooq.tools.jdbc.DefaultPreparedStatement.executeQuery(DefaultPreparedStatement.java:94) at org.jooq.impl.AbstractDMLQuery.execute(AbstractDMLQuery.java:738) at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:350) ... 37 common frames omitted
This fails due to the line which comes in between (Detail: Key (shortname__s)=(IBM) already exists.)
Can you please suggest if there as workaround to detect this as well and ship as single log