Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
7.5, 7.7.1
-
None
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.
Attachments
Issue Links
- duplicates
-
SOLR-11515 bin/post uses "-t" to check for stdin, easily breaks when run from cron (which has no terminal)
- Resolved
- relates to
-
SOLR-16757 Umbrella Ticket for Revamping Solr CLI's for the Future
- Open