[ 
https://issues.apache.org/jira/browse/AURORA-1596?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15120547#comment-15120547
 ] 

Zameer Manji commented on AURORA-1596:
--------------------------------------

I have enabled more logging on a cluster that is experiencing this issue and 
this is what I have seen. 

PooledConnection errors are correlated with exceptions from H2. After piping H2 
tracing to SLF4J I see exceptions like:
{noformat}
E0128 00:14:50.680 [qtp1317442128-5964, TraceWriterAdapter:69] jdbc[18] 
exception org.h2.jdbc.JdbcSQLException: Timeout trying to lock table 
"JOB_INSTANCE_UPDATE_EVENTS"; SQL statement:
SELECT
       
      u.id AS u_id,
      u.update_id AS jusm_update_id,
      u.user AS jusm_user,
      max_status.status AS jusm_just_status,
      min_ts.timestamp_ms AS jusm_just_created_timestamp_ms,
      max_ts.timestamp_ms AS jusm_just_last_modified_timestamp_ms,
      j.id AS jusm_jk_id,
      j.role AS jusm_jk_role,
      j.environment AS jusm_jk_environment,
      j.name AS jusm_jk_name,
      u.id AS jui_juse_id,
      u.update_group_size AS jui_juse_update_group_size,
      u.max_per_instance_failures AS jui_juse_max_per_instance_failures,
      u.max_failed_instances AS jui_juse_max_failed_instances,
      u.min_wait_in_instance_running_ms AS 
jui_juse_min_wait_in_instance_running_ms,
      u.rollback_on_failure AS jui_juse_rollback_on_failure,
      u.wait_for_batch_completion AS jui_juse_wait_for_batch_completion,
      u.block_if_no_pulses_after_ms AS jui_juse_block_if_no_pulses_after_ms,
      u.id AS jui_id,
      cn.id AS jui_ditc_id,
      cn.task_config_row_id AS jui_ditc_task_config_row_id,
      di.id AS jui_ditc_r_id,
      di.first AS jui_ditc_r_first,
      di.last AS jui_ditc_r_last,
      co.id AS jui_iitc_id,
      co.task_config_row_id AS jui_iitc_task_config_row_id,
      ci.id AS jui_iitc_r_id,
      ci.first AS jui_iitc_r_first,
      ci.last AS jui_iitc_r_last,
      io.id AS jui_juse_r_id,
      io.first AS jui_juse_r_first,
      io.last AS jui_juse_r_last
   ,
      l.lock_token AS lock_token
    FROM job_updates AS u
     
    INNER JOIN job_keys AS j ON j.id = u.job_key_id
   
     
     
    INNER JOIN
    (
      SELECT
        e_s.update_row_id,
        e_s.status
      FROM job_update_events AS e_s
      INNER JOIN
      (
        SELECT
          update_row_id,
          MAX(timestamp_ms) AS timestamp_ms
        FROM job_update_events
        GROUP BY update_row_id
      ) AS e_t ON e_t.update_row_id = e_s.update_row_id AND e_t.timestamp_ms = 
e_s.timestamp_ms
    ) AS max_status ON max_status.update_row_id = u.id
   
     
    INNER JOIN
    (
      SELECT
        update_row_id,
        MIN(timestamp_ms) AS timestamp_ms
      FROM job_update_events
      GROUP BY update_row_id
    ) AS min_ts ON min_ts.update_row_id = u.id
   
     
    INNER JOIN
    (
      SELECT
        update_row_id,
        MAX(timestamp_ms) AS timestamp_ms
      FROM
      (
        SELECT
          update_row_id,
          timestamp_ms
        FROM job_update_events
        UNION ALL
        SELECT
          update_row_id,
          timestamp_ms
        FROM job_instance_update_events
      )
      GROUP BY update_row_id
    ) AS max_ts ON max_ts.update_row_id = u.id
   
   
     
    LEFT OUTER JOIN job_update_configs AS cn ON cn.update_row_id = u.id AND 
cn.is_new = TRUE
    LEFT OUTER JOIN job_update_configs AS co ON co.update_row_id = u.id AND 
co.is_new = FALSE
    LEFT OUTER JOIN job_update_configs_to_instances AS ci ON ci.config_id = 
co.id
    LEFT OUTER JOIN job_updates_to_desired_instances AS di ON di.update_row_id 
= u.id
    LEFT OUTER JOIN job_updates_to_instance_overrides AS io ON io.update_row_id 
= u.id
   
     
    LEFT OUTER JOIN job_update_locks AS l on l.update_row_id = u.id
   
   
    WHERE  
    u.update_id = ?
    AND j.role = ?
    AND j.environment = ?
    AND j.name = ? [50200-190]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.message.DbException.get(DbException.java:179) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.message.DbException.get(DbException.java:155) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.table.RegularTable.doLock1(RegularTable.java:509) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.table.RegularTable.lock(RegularTable.java:472) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.table.TableFilter.lock(TableFilter.java:146) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Select.queryWithoutCache(Select.java:629) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Query.query(Query.java:322) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Query.query(Query.java:290) 
~[h2-1.4.190.jar:1.4.190]
        at 
org.h2.command.dml.SelectUnion.queryWithoutCache(SelectUnion.java:194) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.SelectUnion.query(SelectUnion.java:425) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Query.query(Query.java:290) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.index.ViewIndex.find(ViewIndex.java:272) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.index.ViewIndex.find(ViewIndex.java:177) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.index.BaseIndex.find(BaseIndex.java:127) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.index.IndexCursor.find(IndexCursor.java:159) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.table.TableFilter.next(TableFilter.java:329) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Select.queryGroup(Select.java:325) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Select.queryWithoutCache(Select.java:638) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Query.query(Query.java:322) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Query.query(Query.java:290) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.index.ViewIndex.find(ViewIndex.java:272) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.index.ViewIndex.find(ViewIndex.java:177) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.index.BaseIndex.find(BaseIndex.java:127) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.index.IndexCursor.find(IndexCursor.java:159) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.table.TableFilter.next(TableFilter.java:329) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.table.TableFilter.next(TableFilter.java:399) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.table.TableFilter.next(TableFilter.java:399) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Select.queryFlat(Select.java:531) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Select.queryWithoutCache(Select.java:643) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Query.query(Query.java:322) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Query.query(Query.java:290) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.dml.Query.query(Query.java:36) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.CommandContainer.query(CommandContainer.java:90) 
~[h2-1.4.190.jar:1.4.190]
        at org.h2.command.Command.executeQuery(Command.java:196) 
~[h2-1.4.190.jar:1.4.190]
        at 
org.h2.jdbc.JdbcPreparedStatement.execute(JdbcPreparedStatement.java:192) 
~[h2-1.4.190.jar:1.4.190]
        at 
org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:62)
 [mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:78)
 [mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62) 
[mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:303)
 [mybatis-3.3.0.jar:3.3.0]
        at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:154) 
[mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:102) 
[mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:82) 
[mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:120)
 [mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:113)
 [mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:73)
 [mybatis-3.3.0.jar:3.3.0]
        at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source) ~[na:na]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_66-Tw8r9b2]
        at java.lang.reflect.Method.invoke(Method.java:497) 
~[na:1.8.0_66-Tw8r9b2]
        at 
org.apache.ibatis.session.SqlSessionManager$SqlSessionInterceptor.invoke(SqlSessionManager.java:334)
 [mybatis-3.3.0.jar:3.3.0]
        at com.sun.proxy.$Proxy63.selectOne(Unknown Source) [na:na]
        at 
org.apache.ibatis.session.SqlSessionManager.selectOne(SqlSessionManager.java:165)
 [mybatis-3.3.0.jar:3.3.0]
        at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:69) 
[mybatis-3.3.0.jar:3.3.0]
        at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53) 
[mybatis-3.3.0.jar:3.3.0]
        at 
org.apache.aurora.scheduler.storage.db.$Proxy73.selectDetails(Unknown Source) 
[na:na]
        at 
org.apache.aurora.scheduler.storage.db.DbJobUpdateStore.fetchJobUpdateDetails(DbJobUpdateStore.java:206)
 [aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.storage.db.DbJobUpdateStore$$EnhancerByGuice$$c8de01a4.CGLIB$fetchJobUpdateDetails$5(<generated>)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.storage.db.DbJobUpdateStore$$EnhancerByGuice$$c8de01a4$$FastClassByGuice$$31747421.invoke(<generated>)
 [guice-3.0.jar:na]
        at 
com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
 [guice-3.0.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.common.inject.TimedInterceptor.invoke(TimedInterceptor.java:83)
 [commons-119.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.storage.db.DbJobUpdateStore$$EnhancerByGuice$$c8de01a4.fetchJobUpdateDetails(<generated>)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.thrift.ReadOnlySchedulerImpl.lambda$getJobUpdateDetails$34(ReadOnlySchedulerImpl.java:317)
 [aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.storage.db.DbStorage.read(DbStorage.java:138) 
~[aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.storage.db.DbStorage$$EnhancerByGuice$$5befb341.CGLIB$read$5(<generated>)
 ~[guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.storage.db.DbStorage$$EnhancerByGuice$$5befb341$$FastClassByGuice$$bd486db3.invoke(<generated>)
 ~[guice-3.0.jar:na]
        at 
com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
 [guice-3.0.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
org.mybatis.guice.transactional.TransactionalMethodInterceptor.invoke(TransactionalMethodInterceptor.java:101)
 ~[mybatis-guice-3.7.jar:3.7]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.common.inject.TimedInterceptor.invoke(TimedInterceptor.java:83)
 [commons-119.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.storage.db.DbStorage$$EnhancerByGuice$$5befb341.read(<generated>)
 ~[guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.storage.log.LogStorage.read(LogStorage.java:570) 
~[aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.storage.CallOrderEnforcingStorage.read(CallOrderEnforcingStorage.java:113)
 ~[aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.thrift.ReadOnlySchedulerImpl.getJobUpdateDetails(ReadOnlySchedulerImpl.java:317)
 [aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.thrift.SchedulerThriftInterface.getJobUpdateDetails(SchedulerThriftInterface.java:1099)
 ~[aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.thrift.SchedulerThriftInterface$$EnhancerByGuice$$cfdabfa.CGLIB$getJobUpdateDetails$17(<generated>)
 ~[guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.thrift.SchedulerThriftInterface$$EnhancerByGuice$$cfdabfa$$FastClassByGuice$$6ed696ca.invoke(<generated>)
 ~[guice-3.0.jar:na]
        at 
com.google.inject.internal.cglib.proxy.$MethodProxy.invokeSuper(MethodProxy.java:228)
 [guice-3.0.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.thrift.aop.ThriftStatsExporterInterceptor.invoke(ThriftStatsExporterInterceptor.java:47)
 ~[aurora-119.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.thrift.aop.LoggingInterceptor.invoke(LoggingInterceptor.java:70)
 ~[aurora-119.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.thrift.aop.ServerInfoInterceptor.invoke(ServerInfoInterceptor.java:30)
 ~[aurora-119.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:72)
 [guice-3.0.jar:na]
        at 
com.google.inject.internal.InterceptorStackCallback.intercept(InterceptorStackCallback.java:52)
 [guice-3.0.jar:na]
        at 
org.apache.aurora.scheduler.thrift.SchedulerThriftInterface$$EnhancerByGuice$$cfdabfa.getJobUpdateDetails(<generated>)
 ~[guice-3.0.jar:na]
        at 
org.apache.aurora.gen.ReadOnlyScheduler$Processor$getJobUpdateDetails.getResult(ReadOnlyScheduler.java:1171)
 ~[aurora-api-119.jar:na]
        at 
org.apache.aurora.gen.ReadOnlyScheduler$Processor$getJobUpdateDetails.getResult(ReadOnlyScheduler.java:1156)
 ~[aurora-api-119.jar:na]
        at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) 
~[libthrift-0.9.1.jar:0.9.1]
        at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) 
~[libthrift-0.9.1.jar:0.9.1]
        at org.apache.thrift.server.TServlet.doPost(TServlet.java:83) 
~[libthrift-0.9.1.jar:0.9.1]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
~[javax.servlet-api-3.1.0.jar:3.1.0]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
~[javax.servlet-api-3.1.0.jar:3.1.0]
        at 
com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 ~[guice-servlet-3.0.jar:na]
        at 
org.apache.aurora.scheduler.http.LeaderRedirectFilter.doFilter(LeaderRedirectFilter.java:64)
 ~[aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.http.AbstractFilter.doFilter(AbstractFilter.java:44)
 ~[aurora-119.jar:na]
        at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 ~[guice-servlet-3.0.jar:na]
        at 
org.apache.aurora.scheduler.http.HttpStatsFilter.doFilter(HttpStatsFilter.java:71)
 ~[aurora-119.jar:na]
        at 
org.apache.aurora.scheduler.http.AbstractFilter.doFilter(AbstractFilter.java:44)
 ~[aurora-119.jar:na]
        at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) 
~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
 ~[guice-servlet-3.0.jar:na]
        at 
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
 ~[guice-servlet-3.0.jar:na]
        at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) 
~[guice-servlet-3.0.jar:na]
        at 
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668)
 ~[jetty-servlet-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) 
~[jetty-servlet-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158)
 ~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) 
~[jetty-servlet-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090)
 ~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) 
~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) 
~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:318)
 ~[jetty-rewrite-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:437) 
~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) 
~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at org.eclipse.jetty.server.Server.handle(Server.java:517) 
~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:308) 
~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) 
~[jetty-server-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261)
 ~[jetty-io-9.3.6.v20151106.jar:9.3.6.v20151106]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) 
~[jetty-io-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) 
~[jetty-io-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
 ~[jetty-util-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)
 ~[jetty-util-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
 ~[jetty-util-9.3.6.v20151106.jar:9.3.6.v20151106]
        at 
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) 
~[jetty-util-9.3.6.v20151106.jar:9.3.6.v20151106]
        at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_66-Tw8r9b2]
{noformat}

To me it seems that triggering a lock timeout causes the MyBatis 
PooledConnection to be invalided.

I think this indicates a bug in the MyBatis connection pool and I think we 
should switch to the C3P0 connection pool (which we already depend on): 
http://www.mchange.com/projects/c3p0/

> Invalid connection error from TaskHistoryPruner when using DBTaskStore
> ----------------------------------------------------------------------
>
>                 Key: AURORA-1596
>                 URL: https://issues.apache.org/jira/browse/AURORA-1596
>             Project: Aurora
>          Issue Type: Bug
>          Components: Scheduler
>            Reporter: Joshua Cohen
>            Assignee: Zameer Manji
>
> In a scheduler with the db task store enabled we're seeing this error causing 
> frequent shutdowns:
> {noformat}
> Jan 26, 2016 3:30:00 PM 
> com.google.common.util.concurrent.ServiceManager$ServiceListener failed
> SEVERE: Service TaskHistoryPruner [FAILED] has failed in the RUNNING state.
> org.apache.ibatis.exceptions.PersistenceException:
> ### Error rolling back transaction.  Cause: java.sql.SQLException: Error 
> accessing PooledConnection. Connection is invalid.
> ### Cause: java.sql.SQLException: Error accessing PooledConnection. 
> Connection is invalid.
>         at 
> org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
>         at 
> org.apache.ibatis.session.defaults.DefaultSqlSession.rollback(DefaultSqlSession.java:216)
>         at 
> org.apache.ibatis.session.SqlSessionManager.rollback(SqlSessionManager.java:299)
>         at 
> org.mybatis.guice.transactional.TransactionalMethodInterceptor.invoke(TransactionalMethodInterceptor.java:116)
>         at 
> org.apache.aurora.common.inject.TimedInterceptor.invoke(TimedInterceptor.java:83)
>         at 
> org.apache.aurora.scheduler.storage.log.LogStorage.read(LogStorage.java:570)
>         at 
> org.apache.aurora.scheduler.storage.CallOrderEnforcingStorage.read(CallOrderEnforcingStorage.java:113)
>         at 
> org.apache.aurora.scheduler.storage.Storage$Util.fetchTasks(Storage.java:297)
>         at 
> org.apache.aurora.scheduler.pruning.TaskHistoryPruner.lambda$registerInactiveTask$103(TaskHistoryPruner.java:167)
>         at 
> org.apache.aurora.scheduler.pruning.TaskHistoryPruner.lambda$failureNotifyingRunnable$101(TaskHistoryPruner.java:144)
>         at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>         at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
>         at 
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: java.sql.SQLException: Error accessing PooledConnection. 
> Connection is invalid.
>         at 
> org.apache.ibatis.datasource.pooled.PooledConnection.checkConnection(PooledConnection.java:254)
>         at 
> org.apache.ibatis.datasource.pooled.PooledConnection.invoke(PooledConnection.java:243)
>         at com.sun.proxy.$Proxy131.getAutoCommit(Unknown Source)
>         at 
> org.apache.ibatis.transaction.jdbc.JdbcTransaction.rollback(JdbcTransaction.java:79)
>         at 
> org.apache.ibatis.executor.BaseExecutor.rollback(BaseExecutor.java:249)
>         at 
> org.apache.ibatis.executor.CachingExecutor.rollback(CachingExecutor.java:119)
>         at 
> org.apache.ibatis.session.defaults.DefaultSqlSession.rollback(DefaultSqlSession.java:213)
>         ... 15 more
> E0126 15:30:00.202 [AsyncProcessor-4, 
> GuavaUtils$LifecycleShutdownListener:54] Service: TaskHistoryPruner [FAILED] 
> failed unexpectedly. Triggering shutdown.
> I0126 15:30:00.202 [AsyncProcessor-4, Lifecycle:84] Shutting down application
> I0126 15:30:00.202 [AsyncProcessor-4, 
> ShutdownRegistry$ShutdownRegistryImpl:77] Executing 2 shutdown commands.
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to