5.7.181. Bugzilla::Extension::Push¶
5.7.181.1. Name¶
Bugzilla::Extension::Push - Message Bus support for Bugzilla
5.7.181.2. Version¶
Version 1
5.7.181.3. Description¶
This module will allow you to configure your Bugzilla server to send message on several message buses.
The messages will only contain data an unprivileged user can see.
5.7.181.4. Configuration and Environment¶
This extension supports multiple connectors, only one of each connector type can be active at a time.
Each connector has it’s own configuration requirements.
5.7.181.5. Messages¶
Each message can contain 2 items, and event and the change set, the change set index will be the name of the object changed. e.g. “bug” if a bug is created or it’s attributes changed, or “comment” if a comment is added or edited.
Event Format¶
The event object contains the basic information about the change.
The fields are:
- routing_key
Takes the form $object_type + ‘.’ + $action where the object type can be bug, comment, or attachment, and the action can be create, modify, or update.
- target
The object_type targeted by the event: bug, comment, or attachment.
- bug_id
The ID of the bug affected.
- change_set
The unique ID of the change.
- time
The time of the change, without time zone.
- action
The action of the event: crete, modify, or update.
- user
The user who made the change.
Example for a comment creation event¶
{
"event" : {
"routing_key" : "comment.create",
"target" : "comment",
"bug_id" : 1386104,
"change_set" : "3624.1480914009.90748",
"time" : "2016-12-04T19:00:38",
"action" : "create",
"user" : {
"real_name" : "Jeff Fearn",
"login" : "jfearn@redhat.com",
"id" : 193645
}
}
}
Public Messages¶
Public messages contain an “event” key and object key.
Example for a comment creation event¶
{
"event" : {
"routing_key" : "comment.create",
"target" : "comment",
"bug_id" : 1386104,
"action" : "create",
"time" : "2016-12-04T18:49:51",
"user" : {
"real_name" : "Jeff Fearn",
"id" : 193645,
"login" : "jfearn@redhat.com"
},
"change_set" : "3550.1480913363.34313"
},
"comment" : {
"id" : 1386104,
"body" : "testing a public comment",
"creation_time" : "2016-12-04T18:50:38",
"number" : 2,
"is_private" : false,
"bug" : {
"product" : {
"id" : 35,
"name" : "Bugzilla"
},
"alias" : [],
"severity" : "medium",
"reporter" : {
"login" : "qgong@redhat.com",
"id" : 331384,
"real_name" : "Rony Gong"
},
"url" : "",
"component" : {
"id" : 1169,
"name" : "Bugzilla General"
},
"operating_system" : "Unspecified",
"is_private" : false,
"version" : {
"name" : "5.0",
"id" : 3956
},
"flags" : [
],
"summary" : "The quick search function in the documentation page doesn't work",
"last_change_time" : "2016-10-18T20:51:16",
"assigned_to" : {
"id" : 193645,
"login" : "jfearn@redhat.com",
"real_name" : "Jeff Fearn"
},
"id" : 1386104,
"keywords" : [],
"status" : {
"id" : 8,
"name" : "MODIFIED"
},
"whiteboard" : "",
"target_milestone" : null,
"platform" : "Unspecified",
"priority" : "unspecified",
"resolution" : "",
"qa_contact" : {
"real_name" : "tools-bugs",
"id" : 309088,
"login" : "tools-bugs@redhat.com"
},
"classification" : "Community",
"creation_time" : "2016-10-17T21:40:06"
}
}
}
Private Messages¶
Private messages only contain the event.
Example for a private comment creation event¶
{
"event" : {
"routing_key" : "comment.create",
"target" : "comment",
"bug_id" : 1386104,
"change_set" : "3624.1480914009.90748",
"time" : "2016-12-04T19:00:38",
"action" : "create",
"user" : {
"real_name" : "Jeff Fearn",
"login" : "jfearn@redhat.com",
"id" : 193645
}
}
}
5.7.181.6. Multi-Connector Message Processing¶
The Push extension supports multiple connectors running simultaneously. Understanding the message processing flow is crucial for debugging delivery issues.
Message Processing Behavior¶
When a message is queued and multiple connectors are enabled (e.g., both Kafka and STOMP), each connector processes the message independently:
- Main Queue Processing
Each message is processed against ALL enabled connectors sequentially.
- Independent Results
Each connector can succeed or fail independently - one connector’s failure does not affect others.
- Backlog Management
Failed deliveries are added to the individual connector’s backlog queue, not a shared queue.
- Message Removal
The original message is removed from the main queue after ALL connectors have been attempted, regardless of individual results.
Example Scenario¶
Bug update creates a message in the main queue:
- Kafka Connector
Delivers successfully to topic - no backlog entry created.
- STOMP Connector
Network timeout occurs - message added to STOMP backlog queue.
- Result
Kafka users see notification immediately. STOMP users will see notification when backlog is processed in the next poll cycle.
Key Design Benefits¶
- Resilient
One failing connector does not block others from delivering messages.
- No Duplicates
Successful deliveries are not repeated when other connectors fail.
- Independent Retry
Each connector maintains its own backlog and retry policy.
- Non-blocking
Main queue processing continues even when individual connectors fail.
5.7.181.7. Author¶
Red Hat patches by Jeff Fearn <jfearn@redhat.com>
This documentation undoubtedly has bugs; if you find some, please file them here.