Régler une minuterie dans le passé ne semble pas fonctionner, mais ça marche

J’utilise souvent l’action POST /t/:topic_id/timer pour modifier les catégories des sujets (de privé à public).

Cela fonctionne correctement si le paramètre time est dans le futur, mais si j’utilise l’heure actuelle (ou une heure passée par erreur), je reçois une réponse valide, mais le changement de catégorie ne se produit pas instantanément.

Cela prend généralement 5 à 10 minutes, ce qui peut prêter à confusion (je suppose que cela est dû à la fréquence d’une boucle de sondage interne).

Voici un exemple de requête (heure passée) et de réponse :

# Requête
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"
}

# Réponse
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"
}

Mise à jour : Je pensais que ce problème était exclusif à l’API, mais il peut également survenir dans l’interface utilisateur, car même si vous ne pouvez pas sélectionner une date passée, vous pouvez sélectionner une heure passée.

Le comportement est le même : aucune indication qu’un minuteur a été défini, mais il se déclenche tout de même entre 5 et 10 minutes après sa création.

2 « J'aime »

C’est un peu un cas limite, mais je pense que le serveur devrait renvoyer un message d’erreur si vous soumettez un minuteur de sujet avec la date d’aujourd’hui et une heure dans le passé.

3 « J'aime »

Il y a en fait un :bug: dans le code qui empêche le report de dates. La PR est ouverte :

3 « J'aime »