(Catching up on a backlog of emails, hence my belated reply) I just checked the spark-prs app engine logs and it appears that our JIRA API calls are failing due to a CAPTCHA check (same issue as before). Based on https://jira.atlassian.com/browse/JRASERVER-40362, it sounds like this is a fairly common problem.
I manually logged into the 'apachespark' JIRA account and completed the CPATCHA, so *hopefully* things should be temporarily unbroken. To permanently fix this issue, we might need to use OAuth tokens for connecting to JIRA (instead of basic username + password auth). It looks like the Python JIRA library supports this ( https://jira.readthedocs.io/en/master/examples.html#oauth) and I found some promising-looking instructions on how to generate the OAuth tokens: https://www.redradishtech.com/display/KB/How+to+write+a+Python+script+authenticating+with+Jira+via+OAuth . However, it looks like you need to be a JIRA administrator in order to configure the applink so I can't fix this by myself. It would be great if the native GitHub <-> JIRA integration could meet our needs; this probably either didn't exist or wasn't configurable by us when we first wrote our own integration / sync script. On Wed, Apr 29, 2020 at 6:21 PM Hyukjin Kwon <gurwls...@gmail.com> wrote: > Let actually me just take a look by myself and bring some updates soon. > > 2020년 4월 30일 (목) 오전 9:13, Hyukjin Kwon <gurwls...@gmail.com>님이 작성: > >> WDYT @Josh Rosen <joshro...@databricks.com>? >> Seems >> https://github.com/databricks/spark-pr-dashboard/blob/1e799c9e510fa8cdc9a6c084a777436bebeabe10/sparkprs/controllers/tasks.py#L131-L142 >> this >> isn't working anymore. >> Does it make sense to move it to native Jira-GitHub integration >> <https://confluence.atlassian.com/adminjiracloud/connect-jira-cloud-to-github-814188429.html> >> ? >> It won't change JIRA status as we used to do but it might be better from >> a cursory look. However, maybe I missed some context. >> >> >> 2020년 4월 30일 (목) 오전 2:46, Nicholas Chammas <nicholas.cham...@gmail.com>님이 >> 작성: >> >>> Not sure what you mean. The native integration will auto-link from a >>> Jira ticket to the PRs that mention that ticket. I don't think it will >>> update the ticket's status, though. >>> >>> Would you like me to file a ticket with Infra and see what they say? >>> >>> On Tue, Apr 28, 2020 at 12:21 AM Hyukjin Kwon <gurwls...@gmail.com> >>> wrote: >>> >>>> Maybe it's time to switch. Do you know if we can still link the JIRA >>>> against Github? >>>> The script used to change the status of JIRA too but it stopped working >>>> for a long time - I suspect this isn't a big deal. >>>> >>>> 2020년 4월 25일 (토) 오전 10:31, Nicholas Chammas <nicholas.cham...@gmail.com>님이 >>>> 작성: >>>> >>>>> Have we asked Infra recently about enabling the native Jira-GitHub >>>>> integration >>>>> <https://confluence.atlassian.com/adminjiracloud/connect-jira-cloud-to-github-814188429.html>? >>>>> Maybe we can deprecate the part of this script that updates Jira tickets >>>>> with links to the PR and rely on the native integration instead. We use it >>>>> at my day job, for example. >>>>> >>>>> On Fri, Apr 24, 2020 at 12:39 AM Hyukjin Kwon <gurwls...@gmail.com> >>>>> wrote: >>>>> >>>>>> Hi all, >>>>>> >>>>>> Seems like this github_jira_sync.py >>>>>> <https://github.com/apache/spark/blob/master/dev/github_jira_sync.py> >>>>>> script >>>>>> seems stopped working completely now. >>>>>> >>>>>> https://issues.apache.org/jira/browse/SPARK-31532 <> >>>>>> https://github.com/apache/spark/pull/28316 >>>>>> https://issues.apache.org/jira/browse/SPARK-31529 <> >>>>>> https://github.com/apache/spark/pull/28315 >>>>>> https://issues.apache.org/jira/browse/SPARK-31528 <> >>>>>> https://github.com/apache/spark/pull/28313 >>>>>> >>>>>> Josh, would you mind taking a look please when you find some time? >>>>>> There is a bunch of JIRAs now, and it is very confusing which JIRA is >>>>>> in progress with a PR or not. >>>>>> >>>>>> >>>>>> 2019년 7월 26일 (금) 오후 1:20, Hyukjin Kwon <gurwls...@gmail.com>님이 작성: >>>>>> >>>>>>> Just FYI, I had to come up with a better JQL to filter out the JIRAs >>>>>>> that already have linked PRs. >>>>>>> In case it helps someone, I use this JQL now to look through the >>>>>>> open JIRAs: >>>>>>> >>>>>>> project = SPARK AND >>>>>>> status = Open AND >>>>>>> NOT issueFunction in linkedIssuesOfRemote("Github Pull Request *") >>>>>>> ORDER BY created DESC, priority DESC, updated DESC >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2019년 7월 19일 (금) 오후 4:54, Hyukjin Kwon <gurwls...@gmail.com>님이 작성: >>>>>>> >>>>>>>> That's a great explanation. Thanks I didn't know that. >>>>>>>> >>>>>>>> Josh, do you know who I should ping on this? >>>>>>>> >>>>>>>> On Fri, 19 Jul 2019, 16:52 Dongjoon Hyun, <dongjoon.h...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi, Hyukjin. >>>>>>>>> >>>>>>>>> In short, there are two bots. And, the current situation happens >>>>>>>>> when only one bot with `dev/github_jira_sync.py` works. >>>>>>>>> >>>>>>>>> And, `dev/github_jira_sync.py` is irrelevant to the JIRA status >>>>>>>>> change because it only use `add_remote_link` and `add_comment` API. >>>>>>>>> I know only this bot (in Apache Spark repository repo) >>>>>>>>> >>>>>>>>> AFAIK, `deb/github_jira_sync.py`'s activity is done under JIRA ID >>>>>>>>> `githubbot` (Name: `ASF GitHub Bot`). >>>>>>>>> And, the other bot's activity is done under JIRA ID `apachespark` >>>>>>>>> (Name: `Apache Spark`). >>>>>>>>> The other bot is the one which Josh mentioned before. (in >>>>>>>>> `databricks/spark-pr-dashboard` repo). >>>>>>>>> >>>>>>>>> The root cause will be the same. The API key used by the bot is >>>>>>>>> rejected by Apache JIRA and forwarded to CAPCHAR. >>>>>>>>> >>>>>>>>> Bests, >>>>>>>>> Dongjoon. >>>>>>>>> >>>>>>>>> On Thu, Jul 18, 2019 at 8:24 PM Hyukjin Kwon <gurwls...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hi all, >>>>>>>>>> >>>>>>>>>> Seems this issue is re-happening again. Seems the PR link is >>>>>>>>>> properly created in the corresponding JIRA but it doesn't change the >>>>>>>>>> JIRA's >>>>>>>>>> status from OPEN to IN-PROGRESS. >>>>>>>>>> >>>>>>>>>> See, for instance, >>>>>>>>>> >>>>>>>>>> https://issues.apache.org/jira/browse/SPARK-28443 >>>>>>>>>> https://issues.apache.org/jira/browse/SPARK-28440 >>>>>>>>>> https://issues.apache.org/jira/browse/SPARK-28436 >>>>>>>>>> https://issues.apache.org/jira/browse/SPARK-28434 >>>>>>>>>> https://issues.apache.org/jira/browse/SPARK-28433 >>>>>>>>>> https://issues.apache.org/jira/browse/SPARK-28431 >>>>>>>>>> >>>>>>>>>> Josh and Dongjoon, do you guys maybe have any idea? >>>>>>>>>> >>>>>>>>>> 2019년 4월 25일 (목) 오후 3:09, Hyukjin Kwon <gurwls...@gmail.com>님이 >>>>>>>>>> 작성: >>>>>>>>>> >>>>>>>>>>> Thank you so much Josh .. !! >>>>>>>>>>> >>>>>>>>>>> 2019년 4월 25일 (목) 오후 3:04, Josh Rosen <rosenvi...@gmail.com>님이 >>>>>>>>>>> 작성: >>>>>>>>>>> >>>>>>>>>>>> The code for this runs in http://spark-prs.appspot.com (see >>>>>>>>>>>> https://github.com/databricks/spark-pr-dashboard/blob/1e799c9e510fa8cdc9a6c084a777436bebeabe10/sparkprs/controllers/tasks.py#L137 >>>>>>>>>>>> ) >>>>>>>>>>>> >>>>>>>>>>>> I checked the AppEngine logs and it looks like we're getting >>>>>>>>>>>> error responses, possibly due to a credentials issue: >>>>>>>>>>>> >>>>>>>>>>>> Exception when starting progress on JIRA issue SPARK-27355 ( >>>>>>>>>>>>> /base/data/home/apps/s~spark-prs/live.412416057856832734/sparkprs/controllers/tasks.py:142 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Fsparkprs%2Fcontrollers%2Ftasks.py&line=142&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>) >>>>>>>>>>>>> Traceback (most recent call last): File >>>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/sparkprs/controllers/tasks.py", >>>>>>>>>>>>> line 138 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Fsparkprs%2Fcontrollers%2Ftasks.py&line=138&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in update_pr start_issue_progress("%s-%s" % >>>>>>>>>>>>> (app.config['JIRA_PROJECT'], >>>>>>>>>>>>> issue_number)) File >>>>>>>>>>>>> start_issue_progress("%s-%s" % (app.config['JIRA_PROJECT'], >>>>>>>>>>>>> issue_number)) >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/sparkprs/jira_api.py", >>>>>>>>>>>>> line 27 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Fsparkprs%2Fjira_api.py&line=27&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in start_issue_progress jira_client = get_jira_client() File >>>>>>>>>>>>> jira_client = get_jira_client() >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/sparkprs/jira_api.py", >>>>>>>>>>>>> line 18 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Fsparkprs%2Fjira_api.py&line=18&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in get_jira_client app.config['JIRA_PASSWORD'])) File >>>>>>>>>>>>> app.config['JIRA_PASSWORD'])) >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/lib/jira/client.py", >>>>>>>>>>>>> line 472 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Flib%2Fjira%2Fclient.py&line=472&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in __init__ si = self.server_info() File >>>>>>>>>>>>> si = self.server_info() >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/lib/jira/client.py", >>>>>>>>>>>>> line 2133 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Flib%2Fjira%2Fclient.py&line=2133&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in server_info j = self._get_json('serverInfo') File >>>>>>>>>>>>> j = self._get_json('serverInfo') >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/lib/jira/client.py", >>>>>>>>>>>>> line 2549 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Flib%2Fjira%2Fclient.py&line=2549&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in _get_json r = self._session.get(url, params=params) File >>>>>>>>>>>>> r = self._session.get(url, params=params) >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/lib/jira/resilientsession.py", >>>>>>>>>>>>> line 151 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Flib%2Fjira%2Fresilientsession.py&line=151&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in get return self.__verb('GET', url, **kwargs) File >>>>>>>>>>>>> return self.__verb('GET', url, **kwargs) >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/lib/jira/resilientsession.py", >>>>>>>>>>>>> line 147 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Flib%2Fjira%2Fresilientsession.py&line=147&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in __verb raise_on_error(response, verb=verb, **kwargs) File >>>>>>>>>>>>> raise_on_error(response, verb=verb, **kwargs) >>>>>>>>>>>>> File >>>>>>>>>>>>> "/base/data/home/apps/s~spark-prs/live.412416057856832734/lib/jira/resilientsession.py", >>>>>>>>>>>>> line 57 >>>>>>>>>>>>> <https://console.cloud.google.com/debug/fromlog?appModule=default&appVersion=live&file=%2Fbase%2Fdata%2Fhome%2Fapps%2Fs~spark-prs%2Flive.412416057856832734%2Flib%2Fjira%2Fresilientsession.py&line=57&logInsertId=5cc1483600029309a7af76d5&logNanos=1556170805012269000&nestedLogIndex=3&project=spark-prs&src=ac>, >>>>>>>>>>>>> in raise_on_error r.status_code, error, r.url, request=request, >>>>>>>>>>>>> response=r, >>>>>>>>>>>>> **kwargs) JIRAError: JiraError HTTP 403 url: >>>>>>>>>>>>> https://issues.apache.org/jira/rest/api/2/serverInfo text: >>>>>>>>>>>>> CAPTCHA_CHALLENGE; login-url= >>>>>>>>>>>>> https://issues.apache.org/jira/login.jsp r.status_code, >>>>>>>>>>>>> error, r.url, request=request, response=r, **kwargs) >>>>>>>>>>>>> JIRAError: JiraError HTTP 403 url: >>>>>>>>>>>>> https://issues.apache.org/jira/rest/api/2/serverInfo >>>>>>>>>>>>> text: CAPTCHA_CHALLENGE; login-url= >>>>>>>>>>>>> https://issues.apache.org/jira/login.jsp >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> It looks like ASF JIRA was throwing a captcha challenge at us, >>>>>>>>>>>> so I used the credentials to manually log in and complete the >>>>>>>>>>>> challenge. >>>>>>>>>>>> >>>>>>>>>>>> Hopefully that's enough to fix things, but to prevent >>>>>>>>>>>> re-occurrence we might need to change the login credential type >>>>>>>>>>>> from >>>>>>>>>>>> username + password to instead use OAuth tokens. >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Apr 24, 2019 at 10:42 PM Hyukjin Kwon < >>>>>>>>>>>> gurwls...@gmail.com> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Can anyone take a look for this one? OPEN status JIRAs are >>>>>>>>>>>>> being rapidly increased (from around 2400 to 2600) >>>>>>>>>>>>> >>>>>>>>>>>>> 2019년 4월 19일 (금) 오후 8:05, Hyukjin Kwon <gurwls...@gmail.com>님이 >>>>>>>>>>>>> 작성: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Looks 'spark/dev/github_jira_sync.py' is not running >>>>>>>>>>>>>> correctly somewhere. >>>>>>>>>>>>>> Usually the JIRA's status should be updated to "IN PROGRESS" >>>>>>>>>>>>>> when >>>>>>>>>>>>>> somebody opens a PR against a JIRA. >>>>>>>>>>>>>> Looks now it only leaves a link and does not change JIRA's >>>>>>>>>>>>>> status. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Can someone else who knows where it's running can check this? >>>>>>>>>>>>>> >>>>>>>>>>>>>> FWIW, I check every PR and JIRA almost every day but ever >>>>>>>>>>>>>> since this happened, this makes (at least to me) duplicately >>>>>>>>>>>>>> check the >>>>>>>>>>>>>> JIRAs. >>>>>>>>>>>>>> Previously, if I check all the PRs and JIRAs, they were not >>>>>>>>>>>>>> duplicated because JIRAs having PRs have different status, "IN >>>>>>>>>>>>>> PROGRESS" >>>>>>>>>>>>>> but now all JIRAs have "OPEN" status. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks. >>>>>>>>>>>>>> >>>>>>>>>>>>>