[ 
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

Reply via email to