Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

`InMemoryAdapter` loses the assigned ID between push and consume

Ouverte
#342 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
54/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
php
Domaine
backend, testing

Piste de recherche

Read stubs/InMemoryAdapter.php, especially the push() implementation around lines 44–46, and trace how Worker::process() consumes messages. Check the logging middleware described in performance-tuning.md and the related behavior in issue #341. Confirm the adapter retains the assigned ID through consumption, and that the handler’s envelope behavior matches the intended interaction.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

InMemoryAdapter::push() stores the original message and returns the IdEnvelope only to the caller:

$id = count($this->messages) + $this->current;
$this->messages[] = $message;          // stubs/InMemoryAdapter.php:44

return new IdEnvelope($message, $id);  // stubs/InMemoryAdapter.php:46

So the id exists for whoever called push(), and nowhere else:

push() returned:   IdEnvelope id=0
stored in adapter: GenericMessage meta=[]

INFO: Pushed message with message type "probe" to the queue. Assigned ID #0.
INFO: Processing message without ID.

Anything reading the id at consume time gets null for every message that went through this adapter — Worker::process() itself, and the logging middleware the guide suggests in performance-tuning.md. Meanwhile status($id) does answer for that id, so the two halves of the adapter disagree about whether the message has one.

Storing the envelope instead ($this->messages[] = new IdEnvelope($message, $id)) would make them agree, and would make the stub behave like an adapter that persists what it returns.

Note this interacts with #341: once the envelope is what gets stored, the handler starts receiving an IdEnvelope on the in-memory path too, which is the behaviour that issue is about.

Langage dominant
PHP
Étoiles
61
Forks
31
Métriques de merge des PR
Aucune PR mergée en 30 j

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de yiisoft/queue

Toutes les issues de yiisoft/queue

Issues similaires

Plus d'issues PHP

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.