Incident #425
closedSpecies Discovery Portlet loop infinitely when an error occurs in the service
100%
Description
Species Discovery Portlet loop infinitely when an error occurs in the service
Updated by Massimiliano Assante almost 10 years ago
- Priority changed from High to Urgent
this issue must be resolved asap
Updated by Francesco Mangiacrapa almost 10 years ago
- Status changed from New to In Progress
- % Done changed from 0 to 100
The problem is due to Result Set disposed. The exception is generated by ResultsetStream in case of reading timeout on (Datasource) data.
java.lang.RuntimeException: ResultSet disposed
at org.gcube.data.streams.adapters.ResultsetStream.delegateHasNext(ResultsetStream.java:126)
at org.gcube.data.streams.LookAheadStream.lookAhead(LookAheadStream.java:71)
at org.gcube.data.streams.LookAheadStream.hasNext(LookAheadStream.java:60)
at org.gcube.data.streams.delegates.PipedStream.delegateHasNext(PipedStream.java:41)
at org.gcube.data.streams.LookAheadStream.lookAhead(LookAheadStream.java:71)
at org.gcube.data.streams.LookAheadStream.hasNext(LookAheadStream.java:60)
at org.gcube.data.streams.delegates.PipedStream.delegateHasNext(PipedStream.java:41)
at org.gcube.data.streams.LookAheadStream.lookAhead(LookAheadStream.java:71)
at org.gcube.data.streams.LookAheadStream.hasNext(LookAheadStream.java:60)
at org.gcube.portlets.user.speciesdiscovery.server.service.StreamIterator.hasNext(StreamIterator.java:29)
at org.gcube.portlets.user.speciesdiscovery.server.stream.ConversionIterator.hasNext(ConversionIterator.java:32)
at org.gcube.portlets.user.speciesdiscovery.server.stream.ConversionIterator.hasNext(ConversionIterator.java:32)
at org.gcube.portlets.user.speciesdiscovery.server.stream.AggregatorIterator.hasNext(AggregatorIterator.java:42)
at org.gcube.portlets.user.speciesdiscovery.server.session.Fetcher.run(Fetcher.java:70)
at java.lang.Thread.run(Thread.java:745)
2015-07-24 10:49:38,728 ERROR stream.ConversionIterator [Thread-114,next:54] %java.lang.RuntimeException: ResultSet disposed
at org.gcube.data.streams.adapters.ResultsetStream.delegateHasNext(ResultsetStream.java:126)
at org.gcube.data.streams.LookAheadStream.lookAhead(LookAheadStream.java:71)
at org.gcube.data.streams.LookAheadStream.hasNext(LookAheadStream.java:60)
at org.gcube.data.streams.delegates.PipedStream.delegateHasNext(PipedStream.java:41)
at org.gcube.data.streams.LookAheadStream.lookAhead(LookAheadStream.java:71)
at org.gcube.data.streams.LookAheadStream.hasNext(LookAheadStream.java:60)
at org.gcube.data.streams.delegates.PipedStream.delegateHasNext(PipedStream.java:41)
at org.gcube.data.streams.LookAheadStream.lookAhead(LookAheadStream.java:71)
at org.gcube.data.streams.LookAheadStream.hasNext(LookAheadStream.java:60)
at org.gcube.portlets.user.speciesdiscovery.server.service.StreamIterator.hasNext(StreamIterator.java:29)
at org.gcube.portlets.user.speciesdiscovery.server.stream.ConversionIterator.hasNext(ConversionIterator.java:32)
at org.gcube.portlets.user.speciesdiscovery.server.stream.ConversionIterator.hasNext(ConversionIterator.java:32)
at org.gcube.portlets.user.speciesdiscovery.server.stream.AggregatorIterator.hasNext(AggregatorIterator.java:42)
at org.gcube.portlets.user.speciesdiscovery.server.session.Fetcher.run(Fetcher.java:70)
at java.lang.Thread.run(Thread.java:745)
Sometimes the exception does not close the iterator properly generating all source.next as null and the portlet goes in loop because continues to read result set.
Therefore, I've added a policy of "tolerance" that: if two consecutive row fetched are null the stream is closed by the portlet (to avoid a loop)
Updated by Massimiliano Assante almost 10 years ago
- Status changed from In Progress to Feedback
the patched portlet was hot deployed on production on bot i-marine and services portals, please test it and if everything's ok close the ticket
Updated by Francesco Mangiacrapa almost 10 years ago
- Status changed from Feedback to Closed
The patched portlet seems work fine on i-marine and services.d4science