Skip to content

jira reindex foreground and reindex_status functions fail #1610

@tdjong

Description

@tdjong

Hi,

I'm using Jira Data Center Software 10.3.3 hosted in our data center.
I have two problems with the current implementation of the jira.py functions related to reindexing:

  • reindex_with_type(indexing_type), ignore indexing_type
  • reindex_status() fails when a reindex is running

Start reindex foreground is working when using jira.post(f'/rest/api/2/reindex?type={indexing_type}') instead of jira.reindex_with_type(indexing_type).

reindex_status() fails on requests.exceptions.TooManyRedirects.
This is caused by the 303 status code on /rest/api/2/reindex when a reindex is running.
The status code 303 triggers a redirect, which should not be followed.

Workaround for reindex_with_type

Replace Start reindex foreground command
jira.reindex_with_type("FOREGROUND")
with
using jira.post('/rest/api/2/reindex?type="FOREGROUND"')

Fix for reindex foreground

Add parameter type to the URL as well.

Workaround for reindex_status

            logging.info("Wait until reindex completed")
            url = self._jira.url_joiner(self._jira.url,self._jira.resource_url("reindex"))
            progress = self._jira._session.get(url,allow_redirects=False)
            while 303 == progress.status_code :
                print("Still reindexing...")
                sleep(30)
                progress = self._jira._session.get(url,allow_redirects=False)
                print(progress.content)

Necessary fix for reindex_status

rest_client.py: def request() needs option to not follow redirects. The requests module supports the option to allow_redirects=False, but this can't be configured. I assume this is not wanted or needed for other GET requests, but is essential to the choosen 303 implementation of Jira 10+.

Call chain:
jira:reindex_status() -> rest_client:get() -> rest_client:requests() -> requests.get()

Console output

DEBUG:atlassian.rest_client:curl --silent -X GET -H 'Content-Type: application/json' -H 'Accept: application/json'  'https://jira-lab.ontwikkel.local/rest/api/2/reindex'
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): jira-lab.ontwikkel.local:443
DEBUG:urllib3.connectionpool:https://jira-lab.ontwikkel.local:443 "GET /rest/api/2/reindex HTTP/1.1" 303 269
...
DEBUG:urllib3.connectionpool:https://jira-lab.ontwikkel.local:443 "GET /rest/api/2/reindex/ HTTP/1.1" 303 269
Traceback (most recent call last):
  File "/Users/../Workspace/automation/./jira-app.py", line 305, in <module>
    main()
  File "/Users/../Workspace/automation/./jira-app.py", line 61, in main
    execute(option, proj_file, environment)
  File "/Users/../Workspace/automation/./jira-app.py", line 128, in execute
    reindex(connection_parameters)
  File "/Users/../Workspace/automation/./jira-app.py", line 282, in reindex
    jira.reindex(blocking)
  File "/Users/../Workspace/automation/jiraclient_pythonapi.py", line 632, in reindex
    print (self._jira.reindex_status()) # broken on redirect 303
  File "/Users/../Workspace/automation/.venv/lib/python3.9/site-packages/atlassian/jira.py", line 4475, in reindex_status
    return self.get(url)
  File "/Users/../Workspace/automation/.venv/lib/python3.9/site-packages/atlassian/rest_client.py", line 562, in get
    response = self.request(
  File "/Users/../Workspace/automation/.venv/lib/python3.9/site-packages/atlassian/rest_client.py", line 425, in request
    response = self._session.request(
  File "/Users/../Workspace/automation/.venv/lib/python3.9/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/../Workspace/automation/.venv/lib/python3.9/site-packages/requests/sessions.py", line 724, in send
    history = [resp for resp in gen]
  File "/Users/../Workspace/automation/.venv/lib/python3.9/site-packages/requests/sessions.py", line 724, in <listcomp>
    history = [resp for resp in gen]
  File "/Users/../Workspace/automation/.venv/lib/python3.9/site-packages/requests/sessions.py", line 191, in resolve_redirects
    raise TooManyRedirects(
requests.exceptions.TooManyRedirects: Exceeded 30 redirects.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions