85.1.15. pepsi-stage-discard

discard a message (a sink stage for staging)

Section du manuel:

1

85.1.15.1.1. Nom

pepsi-stage-discard - l’étape de rejet (puits) du pipeline Pepsi.

85.1.15.1.2. Synopsis

pepsi-stage-discard [GLOBAL-OPTIONS] worker

85.1.15.1.3. Description

Cette étape a FUSION = yes par défaut : lorsque la fusion d’étapes est activée ([pepsi] ALLOW_FUSION, la valeur par défaut) et que cette étape est pliée dans le binaire pepsi unifié, un prédécesseur peut l’exécuter dans son propre processus worker plutôt que de la dispatcher séparément. Voir pepsi-dispatch(1) et pepsi.conf(5).

pepsi-stage-discard est un programme d’étape exécuté par pepsi-dispatch(1) comme un worker persistant lisant les identifiants de message sur l’entrée standard. Il charge cette ligne pepsi.workqueue (refusant d’agir sauf si son status est running), lit sa section [stage-<stage>], puis rejette le message : la ligne est supprimée et rapportée au dispatcher comme un succès. Rien n’est relayé où que ce soit. Ceci est destiné aux déploiements de staging et de test — par exemple un pipeline qui exerce l’ingress, l’authentification et les étapes sans mettre de courrier sur le réseau.

Le rejet est délibérément terminal : il ignore NEXT_STAGE. Deux options façonnent ce que — le cas échéant — le rejet rapporte à l’expéditeur.

DISPOSITION choisit l’issue simulée : success (la valeur par défaut) traite le message comme remis, failure le traite comme un échec de remise permanent.

BOUNCE (par défaut no) choisit si le rejet est seulement autorisé à émettre une notification d’état de remise (DSN). Lorsqu’il l’est, les préférences DSN de l’expéditeur sont toujours respectées, et elles le sont par destinataire : NOTIFY est donné un RCPT à la fois, il y est donc répondu un destinataire à la fois. Dans les deux cas, la ligne elle-même est toujours supprimée ; un rapport est un message frère engendré aux côtés de cette suppression, un par destinataire rapportable, dans le même appel unique à la base de données (son jeton est celui de l’original suffixé de -discard<N>, de sorte que l’engendrement a lieu au plus une fois) :

  • failure + BOUNCE = yes : un frère par destinataire dont le NOTIFY demande FAILURE (la valeur par défaut en son absence) est acheminé vers le BOUNCE_STAGE de l’étape, qui génère le rebond d’échec ; NOTIFY=NEVER abandonne silencieusement.

  • success + BOUNCE = yes : un rapport positif (Action: delivered) est engendré de la même façon, mais seulement lorsque l’option globale [pepsi] ORIGINATE_SUCCESS_DSN est activée et que le NOTIFY de ce destinataire demande SUCCESS (le succès n’a pas de valeur par défaut implicite).

  • Un message qui est déjà un rebond (l’expéditeur nul) ne rebondit jamais une seconde fois, et n’attire pas non plus de rapport de succès.

Dans tous les cas où aucun DSN n’est justifié — BOUNCE = no, NOTIFY ne demandant pas le rapport pertinent, un message à expéditeur nul, ou aucun BOUNCE_STAGE câblé — la ligne est simplement supprimée sans rien engendrer.

85.1.15.1.4. Configuration

Les options résident dans la propre section [stage-<name>] de l’étape (PROGRAM = pepsi-stage-discard) : DISPOSITION (success/failure), BOUNCE (yes/no) et le BOUNCE_STAGE vers lequel sont acheminés les rapports frères d’un rejet rapportable. Les deux options d’étape sont facultatives — un rejet sans BOUNCE_STAGE se contente de supprimer la ligne. NEXT_STAGE est ignoré (un rejet est terminal) et le chemin de succès consulte l’indicateur partagé [pepsi] ORIGINATE_SUCCESS_DSN. Tous sont documentés dans pepsi.conf(5).

85.1.15.1.5. État

Entrées : state.dsn — les notify/orcpt de chaque destinataire et les envid/ret au niveau du message, utilisés pour décider s’il faut notifier l’expéditeur (et comment), destinataire par destinataire.

Sorties : aucune sur le message lui-même, qui est toujours supprimé. Sur un rejet rapportable, chaque destinataire rapportable reçoit un message frère à BOUNCE_STAGE portant un objet state.bounce (kind = permanent pour un échec, ou success pour un rapport positif, plus diagnostic et le failed_recipient sur lequel il porte) à l’intention de pepsi-stage-bounce(1). La disposition de l’état est décrite dans pepsi.state(7).

Transitions (pilotées par DISPOSITION, BOUNCE, le NOTIFY de chaque destinataire et [pepsi] ORIGINATE_SUCCESS_DSN) :

  • une issue rapportable — un échec (DISPOSITION = failure, BOUNCE = yes, NOTIFY voulant l’échec) ou un rapport positif (DISPOSITION = success, BOUNCE = yes, avec ORIGINATE_SUCCESS_DSN et NOTIFY=SUCCESS) — termine la ligne et engendre un frère par destinataire de ce genre à BOUNCE_STAGE ;

  • sinon → terminer (la ligne est supprimée, rien n’est engendré).

NEXT_STAGE est ignoré (un rejet est toujours terminal) ; un rebond à expéditeur nul ne rebondit jamais à nouveau. L’étape n’avance jamais, ne met jamais en pause et n’échoue jamais.

85.1.15.1.6. Commandes

worker

Exécuté comme un worker persistant de pepsi-dispatch(1), lisant les identifiants de message sur l’entrée standard.

85.1.15.1.7. Options globales

-c FILE, –config FILE

Lit la configuration depuis FILE au lieu de parcourir les emplacements par défaut.

-L LOGLEVEL, –log LOGLEVEL

Règle la verbosité de journalisation (par défaut info).

-v, –verbose

Affiche les messages de journal de toutes les sources.

-h, –help ; -V, –version

Affiche un résumé d’utilisation / la version et quitte.

85.1.15.1.8. Code de sortie

Le résultat de chaque message est rapporté à pepsi-dispatch(1) sur la ligne de statut du worker, et non par le code de sortie.

0

Le worker s’est exécuté jusqu’à la fermeture de son entrée standard.

1

Une erreur fatale s’est produite (configuration illisible, base de données impossible à ouvrir, ou échec de l’entrée/sortie standard). La raison est écrite dans le journal.

85.1.15.1.9. Exemples

Rejeter le message 42 au moyen d’un worker ponctuel (il doit être running)

echo 42 | pepsi-stage-discard -c /etc/pepsi/pepsi.conf worker

Une section [stage-*] de staging qui abandonne discrètement tout comme remis

[stage-sink]
PROGRAM = pepsi-stage-discard
DISPOSITION = success

Une section qui simule un échec permanent et fait rebondir (en honorant NOTIFY)

[stage-sink]
PROGRAM = pepsi-stage-discard
DISPOSITION = failure
BOUNCE = yes
BOUNCE_STAGE = bounce

85.1.15.1.10. Voir aussi

pepsi-config(1), pepsi-stage-bounce(1), pepsi-stage-relay-to-internet(1), pepsi-stage-relay-to-smarthost(1), pepsi-dispatch(1), pepsi.conf(5), pepsi.state(7), pepsi-setup(1)

85.1.15.1.11. Bogues

Signalez les bogues au gestionnaire de tickets de Pepsi.