Einen Timer in der Vergangenheit zu stellen scheint nicht zu funktionieren, aber es tut es

Ich verwende häufig die Aktion POST /t/:topic_id/timer, um Themenkategorien zu ändern (von privat zu öffentlich).

Dies funktioniert einwandfrei, wenn der Parameter time in der Zukunft liegt. Verwende ich jedoch die aktuelle Zeit (oder versehentlich eine Zeit in der Vergangenheit), erhalte ich zwar eine gültige Antwort, aber die Kategorienänderung erfolgt nicht sofort.

In der Regel dauert es 5–10 Minuten, was verwirrend sein kann (ich gehe davon aus, dass dies auf die Frequenz einer internen Abfrageschleife zurückzuführen ist).

Hier ist ein Beispiel für eine Anfrage (Zeit in der Vergangenheit) und die entsprechende Antwort:

# Anfrage
POST /t/4378/timer HTTP/1.1
Accept: application/json, */*;q=0.5
Accept-Encoding: gzip, deflate
Api-Key: REDACTED
Api-Username: REDACTED
Connection: keep-alive
Content-Length: 96
Content-Type: application/json
Host: REDACTED
User-Agent: HTTPie/2.2.0

{
    "category_id": "54",
    "status_type": "publish_to_category",
    "time": "2020-10-26 08:09:45+01:00"
}

# Antwort
HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Connection: keep-alive
Content-Encoding: gzip
Content-Type: application/json; charset=utf-8
Date: Mon, 26 Oct 2020 07:09:46 GMT
Referrer-Policy: strict-origin-when-cross-origin
Server: nginx/1.18.0 (Ubuntu)
Strict-Transport-Security: max-age=63072000;
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Discourse-Route: topics/timer
X-Discourse-Username: REDACTED
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-Request-Id: REDACTED
X-Runtime: 0.055819
X-XSS-Protection: 1; mode=block

{
    "based_on_last_post": false,
    "category_id": 54,
    "closed": false,
    "duration": null,
    "execute_at": "2020-10-26T07:09:45.000Z",
    "success": "OK"
}

Update: Ich dachte, dies sei ein Problem, das nur die API betrifft, aber es kann auch in der Benutzeroberfläche auftreten. Zwar kann man dort kein Datum in der Vergangenheit auswählen, aber sehr wohl eine Uhrzeit in der Vergangenheit.

Das Verhalten ist identisch: Es gibt keinen Hinweis darauf, dass ein Timer gesetzt wurde, aber er löst dennoch irgendwo zwischen 5 und 10 Minuten nach der Erstellung aus.

2 „Gefällt mir“

Das ist zwar ein eher spezieller Fall, aber meiner Meinung nach sollte der Server eine Fehlermeldung zurückgeben, wenn man einen Topic-Timer mit dem heutigen Datum und einer Zeit in der Vergangenheit einreicht.

3 „Gefällt mir“

Es gibt tatsächlich einen :bug: im Code, der das Datieren in die Vergangenheit blockiert. Der PR ist eröffnet:

3 „Gefällt mir“