RFR: 1532: CSRBot is too inefficient [v2]
Erik Joelsson
erikj at openjdk.org
Mon Aug 15 17:23:34 UTC 2022
On Mon, 15 Aug 2022 17:00:53 GMT, Erik Joelsson <erikj at openjdk.org> wrote:
>> bots/csr/src/main/java/org/openjdk/skara/bots/csr/CSRIssueBot.java line 73:
>>
>>> 71: if (issue.updatedAt().isAfter(lastUpdatedAt)) {
>>> 72: lastUpdatedAt = issue.updatedAt();
>>> 73: }
>>
>> A race condition may let the bot ignore some updated issues. Considering the following situation:
>>
>> step 1: the method `issueProject.csrIssues` get the issue-1 and issue-2 at time 00:00:001
>> step 2: the issue-3 is updated at 00:00:002 and the issue-2 is updated at 00:00:003
>> step 3: at time 00:00:004, the statement `lastUpdatedAt = issue.updatedAt();` is run and updates the lastUpdatedAt to 00:00:003, then in the next round, the issue-3 will be ignored.
>
> Your scenario should not be possible. If Issue-2 is updated at 00:00:003, then that update will not be included in the call in step 1, so issue-2.updatedAt() will not return 00:00:003, it will return an older value, as it was recorded at 00:00:001. This is why I only use the issue.updatedAt() values for `lastUpdatedAt`, so that I can be sure that the timestamps originate from the remote service (Jira) and can never be newer/later than when the data was gathered.
In case you missed it, `JiraIssue.updatedAt()` does not call out to the remote service, it just reads the cached json.
-------------
PR: https://git.openjdk.org/skara/pull/1357
More information about the skara-dev
mailing list