[ https://issues.apache.org/jira/browse/SOLR-13408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16820326#comment-16820326 ]
Erick Erickson commented on SOLR-13408: --------------------------------------- New patch. I haven't run precommit or the full test suite, I want to beast the tests I modified first. This patch isn't nearly as much of a code change as its size would indicate, much of it is tests. I did rearrange some code in StreamHandler.... [~joel.bernstein] [~krisden] [~dpgove] any comments you'd care to make welcome of course. I'll commit this in a day or two assuming all goes well. > Cannot start/stop DaemonStream repeatedly > ----------------------------------------- > > Key: SOLR-13408 > URL: https://issues.apache.org/jira/browse/SOLR-13408 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: streaming expressions > Affects Versions: 7.7, 8.0, master (9.0) > Reporter: Erick Erickson > Assignee: Erick Erickson > Priority: Major > Attachments: SOLR-13408.patch, SOLR-13408.patch > > > If I create a DaemonStream then use the API commands to stop it then start it > repeatedly, after the first time it's stopped/started, it cannot be stopped > again. > DaemonStream.close() checks whether a local variable "closed" is true, and if > so does nothing. Otherwise it closes the stream then sets "closed" to true. > However, when the stream is started again, "closed" is not set to false, > therefore the next time you try to stop the deamon, nothing happens and it > continues to run. One other consequence of this is that you can have orphan > threads running in the background. Say I > {code:java} > stop the daemon > start it again > create another one with the same ID > {code} > When the new one is created, this code is executed over in > StreamHandler.handleRequestBody: > {code:java} > daemons.remove(daemonStream.getId()).close(); > {code} > which will not terminate the stream thread as above. Then the open() method > executes this: > {code:java} > this.streamRunner = new StreamRunner(runInterval, id); > {code} > leaving the thread running. > Finally, there's an NPE if I try to start a non-existent daemon. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org