[SOLVED]- Derby - queryTimeOut

Ola pessoal, alguém ja passou por isto com banco derby? se sim podem me ajudar a resolver, ? agradeço desde ja.

tentei setar um time no tempo de execução da query tipo:

        stmtLista = conexao.createStatement();
        stmtLista.setQueryTimeout(120);
java.sql.SQLException: A instrução foi cancelada ou expirou.
	at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
	at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
	at org.apache.derby.client.am.Statement.executeQuery(Unknown Source)
	at com.empresa.email.ControleNotasPendentes.NotasPendentesEnvio(ControleNotasPendentes.java:124)
	at threadsNfe.ThreadEnvioEmail.run(ThreadEnvioEmail.java:52)
Caused by: org.apache.derby.client.am.SqlException: A instrução foi cancelada ou expirou.
	at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source)
	at org.apache.derby.client.am.Statement.completeOpenQuery(Unknown Source)
	at org.apache.derby.client.net.NetStatementReply.parseOpenQueryFailure(Unknown Source)
	at org.apache.derby.client.net.NetStatementReply.parseOPNQRYreply(Unknown Source)
	at org.apache.derby.client.net.NetStatementReply.readOpenQuery(Unknown Source)
	at org.apache.derby.client.net.StatementReply.readOpenQuery(Unknown Source)
	at org.apache.derby.client.net.NetStatement.readOpenQuery_(Unknown Source)
	at org.apache.derby.client.am.Statement.readOpenQuery(Unknown Source)
	at org.apache.derby.client.am.Statement.flowExecute(Unknown Source)
	at org.apache.derby.client.am.Statement.executeQueryX(Unknown Source)

ninguem ?

ninguem nunca passou algo semelhante ?

Eu nunca usei derby, mas pra voce nao ficar falando sozinho vou tentar lhe ajudar, hehehehe.

Uma pergunta, porque voce seta um timeout ?

stmtLista.setQueryTimeout(120);

[quote=rof20004]Eu nunca usei derby, mas pra voce nao ficar falando sozinho vou tentar lhe ajudar, hehehehe.
Uma pergunta, porque voce seta um timeout ?

stmtLista.setQueryTimeout(120);

[/quote]

setei o timeOut como tentativa de resolver visto que o erro é “A instrução foi cancelada ou expirou” rodei o select direto na base do cliente, possui + ou - 8 mil registros numas 60 tabelas, no squirresql leva 20 segundos para trazer 3 registros, vou postar a query.

SELECT /*+ FIRST_ROWS */ TNFE_HEADER.CODNFE,
                TNFE_HEADER.IDE_FINNFE AS FINALIDADE_EMISSAO,
                TNFE_HEADER.NFE_REG_CODIGO,
                TNFE_HEADER.NFE_CHAVE,
                TNFE_HEADER.NFE_LOTE AS LOTE,
                TNFE_HEADER.NFE_DATA_ENVIO AS DATA_ENVIO,
                TNFE_HEADER.NFE_DATA_INSERTHEADER AS NFE_DATA_INSERTHEADER,
                TNFE_HEADER.IDE_TPEMIS,
                TNFE_HEADER.IDE_NNF AS NOTA,
                TNFE_HEADER.EMIT_CNPJ AS CNPJ ,
                TNFE_HEADER.EMIT_IE ,
                TNFE_HEADER.IDE_SERIE AS SERIE,
                TNFE_HEADER.DEST_CNPJ,
                TNFE_HEADER.IDE_DEMI,
                TNFE_HEADER.NFE_PROTOCOLO,
                NFE_FILIAL.FIL_SIGLA AS SIGLA,
                NFE_FILIAL.FIL_DESCRICAO,
                NFE_FILIAL.FIL_EMAIL_SMTP AS SMTP,
                FIL_EMAIL_SMTP_TLS,
                NFE_FILIAL.FIL_EMAIL_SMTP_SENHA AS SENHA,
                NFE_FILIAL.FIL_EMAIL_SMTP_USER AS USUARIO,
                NFE_FILIAL.FIL_EMAIL_SMTP_AUTH AS AUTENTICADO,
                NFE_FILIAL.FIL_EMAIL,
                NFE_FILIAL.FIL_TP_LIBERADANFE,
                NFE_FILIAL.FIL_ENV_EMAIL_CLIENTE,
                TNFE_TOTAIS.ICMSTOT_VNF,
                NFE_FILIAL.MAT_CODIGO,
                NFE_MATRIZ.MAT_RAZAO,
                NC.CONF_XML_NOTAS,
                NFE_LOTE.LOT_DHRECBTO AS DATA_RETORNO,
                NFE_LOTE.LOT_DT_ENVIO
FROM TNFE_HEADER,
                NFE_LOTE,
                NFE_FILIAL,
                NFE_MATRIZ,
                TNFE_TOTAIS,
                NFE_CONFIGURACAO NC
WHERE TNFE_HEADER.EMAIL_XML IS NULL OR TNFE_HEADER.EMAIL_XML = 0)
        AND (TNFE_HEADER.NFE_REG_CODIGO = '100' OR TNFE_HEADER.NFE_REG_CODIGO = '204')
        AND CAST(NFE_LOTE.LOT_CODIGO AS CHAR(20)) = TNFE_HEADER.NFE_LOTE
        AND NFE_FILIAL.FIL_CNPJ = TNFE_HEADER.EMIT_CNPJ
        AND NFE_FILIAL.FIL_IE = TNFE_HEADER.EMIT_IE
        AND NFE_FILIAL.FIL_CODIGO = NC.FIL_CODIGO
        AND TNFE_HEADER.CODNFE = TNFE_TOTAIS.CODNFE
        AND NFE_MATRIZ.MAT_CODIGO = NFE_FILIAL.MAT_CODIGO
ORDER BY TNFE_HEADER.CODNFE ASC

Entao faça um teste retirando este timeout

voce pode usar o getQueryTimeOut(), acho que é assim que se escreve, e verificar quanto tempo ele esta levando.

ok, vou fazer agora, só vou levar um po pois é web start, levo um tempo atualizando um ambiente de testes, ja posto aqui.

sem problema =D

Resolvi da seguinte forma:

vi que mesmo eu alterando o código (configurando o timeout para um valor maior) no momento de rodar a aplicação o resultado era como se o setQueryTimeOut não tivesse sido configurado então coloquei para printar o valor e o mesmo estava 0, fui ver na documentação e dizia que este suporte era apartir da versão 10.2.1.6 http://db.apache.org/derby/releases/release-10.2.1.6.html Master JIRA New Feature DERBY-31 Statement.setQueryTimeout() support, então a solução que funcionou foi basicamente configurar o valor para um tempo maior visto que o banco estava gigante e alterei os drivers de conexão para a ultima versão do derby e funcionou tudo de boa, era isso vlw.