Monitoramento dos impasses

A propriedade derby.stream.error.logSeverityLevel determina o nível de erro informado.

Por padrão, a propriedade derby.stream.error.logSeverityLevel é definida com o valor 40000. Se a propriedade derby.stream.error.logSeverityLevel for definida para mostrar os erros no nível de transação (ou seja, se for definida com um valor inferior a 40000), os erros de impasse serão registrados no arquivo derby.log. Se for definida com um valor igual a 40000, ou maior, os erros de impasse não serão registrados no arquivo derby.log.

A propriedade derby.locks.monitor garante que os erros de impasse serão registrados, independentemente do valor de derby.stream.error.logSeverityLevel. Quando derby.locks.monitor está definida como verdade, todos os bloqueios envolvidos nos impasses são escritos no arquivo derby.log, junto com um número único que identifica o bloqueio.

Para ver o acompanhamento da pilha de thread quando o bloqueio é requisitado, a propriedade derby.locks.deadlockTrace deverá ser definida como verdade. Esta propriedade é ignorada quando derby.locks.monitor está definida como falso.

Nota: A propriedade derby.locks.deadlockTrace deve ser utilizada com cuidado. Definir esta propriedade pode alterar o tempo do aplicativo, afetar severamente o desempenho, e produzir um arquivo derby.log muito grande.

Para obter informações sobre como definir estas propriedades, e informações sobre as propriedades específicas mencionadas neste tópico, deve ser consultado Ajuste do Derby.

Abaixo está um exemplo de uma mensagem de erro quando o Derby interrompe uma transação por causa de um impasse:

--SQLException Caught--

SQLState: 40001 =
Error Code: 30000
Message: A lock could not be obtained due to a deadlock,
cycle of locks and waiters is: Lock : ROW, DEPARTMENT, (1,14)
Waiting XID : {752, X} , APP, update department set location='Boise'
        where deptno='E21'
Granted XID : {758, X} Lock : ROW, EMPLOYEE, (2,8)
Waiting XID : {758, U} , APP, update employee set bonus=150 where salary=23840
Granted XID : {752, X} The selected victim is XID : 752
Nota: Podem ser utilizadas as propriedades derby.locks.waitTimeout e derby.locks.deadlockTimeout para configurar quanto tempo o Derby vai aguardar o bloqueio ser liberado, ou quando iniciar a verificação do impasse. Para obter mais informações sobre estas propriedades, deve ser consultada a seção que discute o controle do comportamento de aplicativos do Derby no Guia do Desenvolvedor do Derby.