[ 
https://issues.apache.org/jira/browse/SOLR-13408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16820592#comment-16820592
 ] 

ASF subversion and git services commented on SOLR-13408:
--------------------------------------------------------

Commit ac38f23db2133fcd16e2c81c44ca1695de2718b3 in lucene-solr's branch 
refs/heads/branch_7_7 from erick
[ https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=ac38f23 ]

SOLR-13408: Cannot start/stop DaemonStream repeatedly, other API improvements


> Cannot start/stop DaemonStream repeatedly, other API improvements
> -----------------------------------------------------------------
>
>                 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, 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

Reply via email to