The attached test reproduces this issue. It has a readme that describes how to run it.
It starts 3 distributed systems named ln, ny and tk.
ny and tk each have a gateway receiver and a region defined.
Use gfsh in ln to:
1. Create sender to ny
2. Create region with sender to ny
3. Start doing puts from a client (verify updates are happening in ny)
4. Create sender to tk
5. Alter region add sender to tk (verify updates are happening in tk)
6. Stop sender to ny
7. Alter region remove sender to ny
8. Destroy sender to ny
Updates should stop to ny but not tk, but updates to both stop.
The ln log contains no exceptions. The stats show events being received and queued by the sender to tk. The eventQueueSize is 0, though.
If step 8 is not done, updates continue flowing to tk.
If the ln server is restarted, updates start flowing to tk again.