Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PreparedStatement nunca atingirá o tempo limite, mesmo se definido explicitamente


Chame Connection.setNetworkTimeout() em uma tentativa final .
private final static Executor immediateExecutor = Runnable::run;

try ( Connection connection = pool.getConnection() ) {
   int timeout = connection.getNetworkTimeout();
   connection.setNetworkTimeout(immediateExecutor, TimeUnit.SECONDS.toMillis(5));
   ...
   try (PreparedStatement...) {
      ...
   }
   finally {
      connection.setNetworkTimeout(timeout);
   }
}
finally {
   ...
}

Você está sofrendo de tráfego TCP não reconhecido, que pode travar uma conexão se um tempo limite de rede não for definido.