Likers shown on a post have no stable order when they liked at the same time
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 90/100
Direzione di ricerca
Inizia leggendo extensions/likes/src/Api/PostResourceFields.php, in particolare la relazione likes e PostResourceFields::$maxLikes, e riproduci il pareggio quando più utenti mettono like a un post nello stesso secondo. Il issue indica la modifica prevista dell’ordine dopo created_at; verifica che richieste ripetute e driver di database supportati restituiscano un insieme deterministico di utenti che hanno messo like. Aggiungi o aggiorna un test mirato per valori created_at uguali se la struttura di test esistente del repository lo prevede, quindi esegui quel test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Current Behavior
The likes relationship orders a post's likers with the actor first, then by created_at, and nothing breaks ties. Likes are stored to the second, so likers who liked in the same second come back in whatever order the database returns them. Which four likers a post shows (PostResourceFields::$maxLikes), and so the response itself, can differ from one request to the next or between database servers. On discuss.flarum.org, about 155,000 likes share about 64,000 distinct timestamps.
Steps to Reproduce
- Have more than four users like a post in the same second (or give their
post_likesrows the samecreated_at). - Request the post with its
likesincluded, repeatedly or on different database drivers. - Nothing in the query fixes which likers are listed, or in what order.
Expected Behavior
A stable order for likers who liked at the same time, for example by user id.
Environment
- Flarum version: 2.0.1
- flarum/likes; any database.
Possible Solution
Add ->orderBy('user_id') after ->orderBy('created_at') in extensions/likes/src/Api/PostResourceFields.php.
Additional Context
Found while comparing responses between versions on a copy of discuss.flarum.org's database.
- Lingua principale
- PHP
- Stelle
- 6.8k
- Fork
- 889
- Merge medio
- 12h 36m
- PR unite (30g)
- 135
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di flarum/framework
-
[2.x] extension-manager: translation keys that changed meaning keep their old namesForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertatype/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
[2.x] extension-manager: update checks fail for composer repositories with credentials in the URLForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertatype/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Admin search throws for permissions added through Admin.generalIndexItems('permissions', ...)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Admin search ignores a settings or permissions item's own linkForse già presa @GBra-4-669 l’ha presa 4 giorni fa. Apertatype/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
type/extensibility
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di flarum/framework
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
Automattic/blocks-engine#3369 ·
I maintainer di solito rispondono entro 1 giorno
-
0. Needs triage 35-feedback bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
product / auth product / databases product / functions product / messaging product / storage product / vcs
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
good first issue ux
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 89/100
alleyinteractive/wp-curate#498 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno