[ https://issues.apache.org/jira/browse/SOLR-13422?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Carsten Agger updated SOLR-13422: --------------------------------- Description: I'm working with a script where I want to send a command to delete all elements in an index; notably, /opt/solr/bin/post -c <my collection> -d "<delete><query>*:*</query></delete>" When run interactively, this works fine. However, when run automatically as a cron job, it gives this interesting output: {{ }}Unrecognized argument: "<delete><query>*:*</query></delete>" {{ If this was intended to be a data file, it does not exist relative to /root}} The culprit seems to be these lines, 143-148: {{ }} if [[ ! -t 0 ]]; then MODE="stdin" else # when no stdin exists and -d specified, the rest of the arguments # are assumed to be strings to post as-is MODE="args" This code seems to be doing the opposite of what the comment says - it sets MODE="stdin" if stdin is NOT a terminal, but if it IS (i.e., there IS an stdin) it assumes the rest of the args can be posted as-is. On the other hand, if the condition is reversed, my command will fail interactively but not when run as a cron job. Both options are, of course, unsatisfactory. It _will_ actually work in both cases, if instead the command to delete the contents of the index is written as: {{echo "<delete><query>*:*</query></delete>" | /opt/solr/bin/post -c departments -d}} I've confirmed this bug in SOLR v. 7.7.1 and 7.5 - it is presumably present in more versions. I've raised the issue on the solr-user mailing list, where I was asked to file a Jira report. was: I'm working with a script where I want to send a command to delete all elements in an index; notably, {{/opt/solr/bin/post -c <my collection> -d "<delete><query>*:*</query></delete>" }} When run interactively, this works fine. However, when run automatically as a cron job, it gives this interesting output: {{ }}{{Unrecognized argument: "<delete><query>*:*</query></delete>" }} {{ If this was intended to be a data file, it does not exist relative to /root}} The culprit seems to be these lines, 143-148: {{ if [[ ! -t 0 ]]; then MODE="stdin" else # when no stdin exists and -d specified, the rest of the arguments # are assumed to be strings to post as-is MODE="args"}} This code seems to be doing the opposite of what the comment says - it sets MODE="stdin" if stdin is NOT a terminal, but if it IS (i.e., there IS an stdin) it assumes the rest of the args can be posted as-is. On the other hand, if the condition is reversed, my command will fail interactively but not when run as a cron job. Both options are, of course, unsatisfactory. It _will_ actually work in both cases, if instead the command to delete the contents of the index is written as: {{echo "<delete><query>*:*</query></delete>" | /opt/solr/bin/post -c departments -d}} I've confirmed this bug in SOLR v. 7.7.1 and 7.5 - it is presumably present in more versions. I've raised the issue on the solr-user mailing list, where I was asked to file a Jira report. > bin/post command not working when run from crontab > -------------------------------------------------- > > Key: SOLR-13422 > URL: https://issues.apache.org/jira/browse/SOLR-13422 > Project: Solr > Issue Type: Bug > Security Level: Public(Default Security Level. Issues are Public) > Components: scripts and tools > Affects Versions: 7.5, 7.7.1 > Reporter: Carsten Agger > Priority: Major > Labels: features > > I'm working with a script where I want to send a command to delete all > elements in an index; notably, > > /opt/solr/bin/post -c <my collection> -d > "<delete><query>*:*</query></delete>" > > When run interactively, this works fine. > However, when run automatically as a cron job, it gives this interesting > output: > {{ }}Unrecognized argument: "<delete><query>*:*</query></delete>" > {{ If this was intended to be a data file, it does not exist relative to > /root}} > The culprit seems to be these lines, 143-148: > {{ }} > if [[ ! -t 0 ]]; then > MODE="stdin" > else > # when no stdin exists and -d specified, the rest of the arguments > # are assumed to be strings to post as-is > MODE="args" > > This code seems to be doing the opposite of what the comment says - it sets > MODE="stdin" if stdin is NOT a terminal, but if it IS (i.e., there IS an > stdin) it assumes the rest of the args can be posted as-is. > On the other hand, if the condition is reversed, my command will fail > interactively but not when run as a cron job. Both options are, of course, > unsatisfactory. > It _will_ actually work in both cases, if instead the command to delete the > contents of the index is written as: > {{echo "<delete><query>*:*</query></delete>" | /opt/solr/bin/post -c > departments -d}} > I've confirmed this bug in SOLR v. 7.7.1 and 7.5 - it is presumably present > in more versions. > I've raised the issue on the solr-user mailing list, where I was asked to > file a Jira report. -- 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