Impostare un timer nel passato sembra non funzionare, ma funziona

Spesso uso l’azione POST /t/:topic_id/timer per cambiare la categoria di un argomento (da privata a pubblica).

Questo funziona correttamente se il parametro time è nel futuro, ma se uso l’orario corrente (o per errore un orario passato), ricevo una risposta valida ma il cambio di categoria non avviene immediatamente.

Di solito ci vogliono 5-10 minuti, il che può creare confusione (ipotizzo che ciò sia dovuto alla frequenza di un ciclo di polling interno).

Ecco un esempio di richiesta (orario passato) e risposta:

# Richiesta
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"
}

# Risposta
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"
}

Aggiornamento: Pensavo che questo problema fosse esclusivo dell’API, ma può verificarsi anche nell’interfaccia utente: anche se non è possibile selezionare una data passata, è possibile selezionare un orario passato.

Il comportamento è lo stesso: nessuna indicazione che un timer sia stato impostato, ma si attiva comunque dopo 5-10 minuti dalla creazione.

2 Mi Piace

È un caso limite, ma penso che il server dovrebbe restituire un messaggio di errore se si invia un timer per un argomento con la data di oggi e un orario passato.

3 Mi Piace

C’è effettivamente un :bug: nel codice che blocca la datazione passata. La PR è aperta:

3 Mi Piace