Remoção de datasources e datapoints

Olá pessoal.

Estou com problemas na remoção de datasources e datapoints. Mesmo depois de desabilitar tudo, quando mando apagar um datapoint o ícone vermelho fica piscando indefinidamente. Daí clico em salvar e depois de mais algum tempo aparece o seguinte erro num popup:

PreparedStatementCallback; SQL [select dp.id, dp.xid, dp.dataSourceId, dp.data, ds.name, ds.xid, ds.dataSourceType from dataPoints dp join dataSources ds on ds.id = dp.dataSourceId where dp.id=?]; A lock could not be obtained within the time requested; nested exception is java.sql.SQLTransactionRollbackException: A lock could not be obtained within the time requested.

Daí quando clico em datasources, aparece esse outro erro:

System exception!

The server has experienced an exception processing your last request. The exception has been logged, and system administrators will be notified of this problem. You may continue to use the site. We apologize for the inconvenience.

Em uma das tentativas que fiz eu reloguei após esse erro e o datapoint tinha sido apagado. Em outras tentativas, não consigui entrar nos datasources, nem parando e reiniciando o Tomcat. Foi necessário bootar o micro para o ScadaBR voltar a funcionar normalmente, mas neste caso o datapoint não tinha sido apagado. E no último teste que acabo de fazer, depois de bootar o micro o ScadaBR demorou muitos minutos para iniciar (o browser ficou aguardando a resposta) e o datapoint também não tinha sido apagado.

Alguma sugestão de porque isso ocorre e como corrigir?

Depois de mais algumas tentativas, consegui apagar alguns datapoints. Mas em todos eles demorou muito até o sistema responder. Isso na minha instalação do Ubuntu Server. Na minha instalação de testes, no Windows 7, nada disso ocorre.

oi Rodrigo,

vc tem muitos datapoints ou datasources?
é só no linux né?

vc consegue fazer esse bug aparecer novamente, ou seja, vc consegue descrever exatamente quais passos seguir para esse bug aparecer no meu computador aqui?

essa é a parte mais difícil dos bugs, entender ele e saber reproduzir. se eu não conseguir ver o bug aqui infelizmente é quase impossível saber o que causa :frowning:

obrigado

outra forma de ajudar é procurar no catalina.out se teve alguma mensagem de erro mais detalhada no momento que vc foi apagar os datasources. alguma mensagem como erro do java, indicando a classe que ocorreu, os últimos comandos (stack trace) ou em que linha do código aconteceu.

abç

Oi scadabr, o problema até agora só ocorreu no Linux. Não tenho muitos datasources ou datapoints. Nestes testes eu tinha apenas 2 datasources:

  • um datasource modbus tcp, sem nenhum datapoint;
  • um datasource virtual, com 2 datapoints, 1 multi-estados e um binário.

Tentei novamente apagar estes 2 datapoints, mas desta vez o primeiro datapoint foi apagado quase que instantaneamente, enquanto o segundo demorou apenas alguns segundos. Não consegui replicar o erro…

Talvez fosse algum problema temporário no meu servidor, se o erro ocorrer novamente eu posto aqui mais informações.

Tentei dar uma olhada, mas o arquivo é muito grande, e o problema ocorreu alguns dias atrás, não direito o que procurar…

Seria isso?

ERROR 2011-05-03 00:36:19,268 (org.apache.taglibs.log.LoggerTag.doStartTag:97) - org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.ConcurrencyFailureException: PreparedStatementCallback; SQL [select dp.id, dp.xid, dp.dataSourceId, dp.data, ds.name, ds.xid, ds.dataSourceType from dataPoints dp join dataSources ds on ds.id = dp.dataSourceId where dp.dataSourceId=?]; A lock could not be obtained within the time requested; nested exception is java.sql.SQLTransactionRollbackException: A lock could not be obtained within the time requested
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:535)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:453)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.serotonin.mango.web.filter.WebContextFilter.doFilter(WebContextFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.serotonin.mango.web.filter.LoggedInFilter.doFilter(LoggedInFilter.java:63)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.serotonin.web.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:37)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)

Estou com o mesmo problema, não consigo nem entrar na tela do datasource está apresentando um erro. Preciso saber como reseto o ScadaBR, para a aplicação começar do zero novamente.

Mauri,

Um motivo pelo qual isso pode ocorrer é falha na tabela do banco de dados. Um jeito de resolver é dando um repair nas tabelas do ScadaBR.

Se você não souber como fazer isso ou estiver usando Derby como DB, mudar a DB pode resolver seu problema. Basta alterar o arquivo env.properties da pasta WEB-INF/classes.

Trocando o endereço "db.url=" para uma nova database resolve =]

Qualquer dúvida, posta ai versão do Java e que DB estás utilizando.

Abs