It appears from our test that if i go and shutdown the agent which uses memory channel, there is no clean way of throttling incoming requests to source, draining events from memory channel and do clean graceful shutdown of an agent. We don't have a visibility of how much data(events) in memory channel are getting dropped when shutdown happens.
It would be good if we add a method to throttle incoming requests to source, drain events from memory channel and then shutdown sink/channel/source. (We can certainly add counters/metrics as part of channel monitoring). I think file-channel covers by adding it to WAL.
HBase RegionServer shutdown handler does the some drain process (it syncs the edits in Write-Ahead-Log and notifies the master for regions move/assignment)