Sharkbook - speed of use

Since the new look and feel of Sharkbook the tool has been exceptionally slow and is impacting the ability to do work. I am on a strict timeline to review thousands of sharks and have taken time off work to do this, but the system is running so slow that it is taking about 5mins per save when I identify a shark.

Is there something that can be done to revert and allow the system to do its thing quickly again otherwise I am not going to hit the government deadlines.

An estimated date for when it will be back up and running as normal would be appreciated - otherwise I really hoped you could revert to the old sharkbook until the bugs are fixed?

Example time out errors received when trying to assign individual identities:

Execution of method “add” on field “encounters” caused an error : Add request failed : INSERT INTO “MARKEDINDIVIDUAL_ENCOUNTERS” (“INDIVIDUALID_OID”,“CATALOGNUMBER_EID”,“IDX”) VALUES (?,?,?) Add request failed : INSERT INTO “MARKEDINDIVIDUAL_ENCOUNTERS” (“INDIVIDUALID_OID”,“CATALOGNUMBER_EID”,“IDX”) VALUES (?,?,?) org.datanucleus.exceptions.NucleusDataStoreException: Add request failed : INSERT INTO “MARKEDINDIVIDUAL_ENCOUNTERS” (“INDIVIDUALID_OID”,“CATALOGNUMBER_EID”,“IDX”) VALUES (?,?,?) at org.datanucleus.store.rdbms.scostore.JoinListStore.internalAdd(JoinListStore.java:317) at org.datanucleus.store.rdbms.scostore.AbstractListStore.add(AbstractListStore.java:114) at org.datanucleus.store.types.wrappers.backed.Vector.add(Vector.java:779) at org.datanucleus.state.RelationshipManagerImpl.processManyToOneBidirectionalRelation(RelationshipManagerImpl.java:880) at org.datanucleus.state.RelationshipManagerImpl.process(RelationshipManagerImpl.java:404) at org.datanucleus.ExecutionContextImpl.performManagedRelationships(ExecutionContextImpl.java:3934) at org.datanucleus.ExecutionContextImpl.flush(ExecutionContextImpl.java:3997) at org.datanucleus.ExecutionContextThreadedImpl.flush(ExecutionContextThreadedImpl.java:436) at org.datanucleus.ExecutionContextImpl.preCommit(ExecutionContextImpl.java:4165) at org.datanucleus.ExecutionContextImpl.transactionPreCommit(ExecutionContextImpl.java:770) at org.datanucleus.TransactionImpl.internalPreCommit(TransactionImpl.java:385) at org.datanucleus.TransactionImpl.commit(TransactionImpl.java:275) at org.datanucleus.api.jdo.JDOTransaction.commit(JDOTransaction.java:107) at org.ecocean.Shepherd.commitDBTransaction(Shepherd.java:3890) at org.ecocean.Shepherd.updateDBTransaction(Shepherd.java:3938) at org.ecocean.servlet.IndividualAddEncounter.doPost(IndividualAddEncounter.java:109) at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:458) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:373) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:370) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.ecocean.servlet.StrutsUTF8Filter.doFilter(StrutsUTF8Filter.java:13) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:750) Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint “SHARK_ENCOUNTERS_pkey” Detail: Key (“INDIVIDUALID_OID”, “IDX”)=(65914b2e-8a8f-4db7-9f67-62457a5d8a15, 70) already exists. at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2725) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2412) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:371) at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:502) at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:419) at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194) at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:155) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) at org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeUpdate(ParamLoggingPreparedStatement.java:393) at org.datanucleus.store.rdbms.SQLController.executeStatementUpdate(SQLController.java:431) at org.datanucleus.store.rdbms.scostore.JoinListStore.internalAdd(JoinListStore.java:298) … 64 more Nested Throwables StackTrace: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint “SHARK_ENCOUNTERS_pkey” Detail: Key (“INDIVIDUALID_OID”, “IDX”)=(65914b2e-8a8f-4db7-9f67-62457a5d8a15, 70) already exists. at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2725) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2412) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:371) at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:502) at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:419) at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:194) at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:155) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:136) at org.datanucleus.store.rdbms.ParamLoggingPreparedStatement.executeUpdate(ParamLoggingPreparedStatement.java:393) at org.datanucleus.store.rdbms.SQLController.executeStatementUpdate(SQLController.java:431) at org.datanucleus.store.rdbms.scostore.JoinListStore.internalAdd(JoinListStore.java:298) at org.datanucleus.store.rdbms.scostore.AbstractListStore.add(AbstractListStore.java:114) at org.datanucleus.store.types.wrappers.backed.Vector.add(Vector.java:779) at org.datanucleus.state.RelationshipManagerImpl.processManyToOneBidirectionalRelation(RelationshipManagerImpl.java:880) at org.datanucleus.state.RelationshipManagerImpl.process(RelationshipManagerImpl.java:404) at org.datanucleus.ExecutionContextImpl.performManagedRelationships(ExecutionContextImpl.java:3934) at org.datanucleus.ExecutionContextImpl.flush(ExecutionContextImpl.java:3997) at org.datanucleus.ExecutionContextThreadedImpl.flush(ExecutionContextThreadedImpl.java:436) at org.datanucleus.ExecutionContextImpl.preCommit(ExecutionContextImpl.java:4165) at org.datanucleus.ExecutionContextImpl.transactionPreCommit(ExecutionContextImpl.java:770) at org.datanucleus.TransactionImpl.internalPreCommit(TransactionImpl.java:385) at org.datanucleus.TransactionImpl.commit(TransactionImpl.java:275) at org.datanucleus.api.jdo.JDOTransaction.commit(JDOTransaction.java:107) at org.ecocean.Shepherd.commitDBTransaction(Shepherd.java:3890) at org.ecocean.Shepherd.updateDBTransaction(Shepherd.java:3938) at org.ecocean.servlet.IndividualAddEncounter.doPost(IndividualAddEncounter.java:109) at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:458) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:373) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:370) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.ecocean.servlet.StrutsUTF8Filter.doFilter(StrutsUTF8Filter.java:13) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:750)

Thanks!

Hi @Sarah_Aus_SpotaShark

I don’t have any news yet, but I’ve shared your feedback with the team and will let you know when I have an update.

Responsiveness in things like assigning IDs and deleting encounters should be back to normal.

Yes it appears to be much better thank you. Is there a separate bug where its logging users out faster than normal? Myself and Sam Blandy have been finding that we have to re-log in multiple times per session (almost every hour) which is annoying?

Not that I’m aware of, but I’ll flag it for the team and let you know what I hear.

The current default is 30 minutes before the session times out, which does feel short. I’ll make sure they extend it today.

Sessions timeouts have been extended to 1 hour.