post command not working on non-file arguments when run from crontab

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

post command not working on non-file arguments when run from crontab

Carsten Agger-2
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

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
           # when no stdin exists and -d specified, the rest of the arguments
           # are assumed to be strings to post as-is

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,

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 seen this bug in SOLR 7.5.0 and 7.7.1. Should I report it as a bug or
is there an easy explanation?


Carsten Agger

Carsten Agger

Chief Technologist
Magenta ApS
Skt. Johannes Allé 2
8000 Århus C

Tlf  +45 5060 1476http://[hidden email]