dubbo-admin Events
Purpose
Use this skill to modify or explain the shared EventBus contract used by discovery, engine, informers, and subscribers.
When to use
Use for EventBus interfaces, resource-kind dispatching, subscriber registration uniqueness, synchronous processing, and event dispatch error behavior.
Do not use for business logic inside a single subscriber unless EventBus semantics change.
Inputs
Required:
- EventBus behavior, interface, or dispatch problem.
- Event producer or subscriber involved.
Optional:
- Event type.
- Old and new resource objects.
- Subscriber names for the same resource kind.
If missing, inspect pkg/core/events/eventbus.go and pkg/core/events/component.go first.
Workflow
- Read
pkg/core/events/eventbus.gofor Event, Emitter, Subscriber, SubscriptionManager, and EventBus interfaces. - Read
pkg/core/events/component.gofor the concrete EventBus implementation. - Trace producers that call
events.NewResourceChangedEventandEmitter.Send. - Trace consumers implementing
ResourceKind,Name, andProcessEvent. - Read
references/eventbus-dispatch.mdbefore changing dispatch semantics.
Output format
Return event source, resource kind, subscribers called, error behavior, changed files, and validation evidence.
Validation
- Confirm
SendusesNewObj()first andOldObj()for delete-like events. - Confirm subscriber names are unique per resource kind.
- Confirm subscriber errors are logged and do not stop later subscribers.
- Run tests or targeted reasoning for discovery and engine consumers when dispatch changes.
Edge cases
- Events with both old and new nil cannot be routed.
- Dispatch is synchronous; long subscriber work blocks the caller.
- EventBus should stay domain-neutral; put business logic in subscribers.
References
- Read
references/eventbus-dispatch.mdfor concrete dispatch rules and failure behavior.