Details
Description
In some occasions SICS may throw large amount of messages with same contents (eg multiple motor updates with same reading). The flooding of messages can slow the performance of Gumtree and causes unexpected behaviors.
With the non blocking channel implementation, we can filter out duplicated messages in the internal buffer (message drop) to improve the performance of the SICS proxy.
Potential problem:
Step 1:
{"s1 finished"}s1 status: started
cache:
incoming: "s1 started"
Step 2:
{"s1 finished", "s1 started"}s1 status: started
cache:
incoming: "s1 finished"
[Note: s1 has finished its second move, but the finish message hasn't been processed for some reason]
Step 3:
s1 status: started
cache: {"s1 finished", "s1 started"}
incoming:
[Note: the second finish message is dropped because the first one hasn't been processed]
Step 4:
{"s1 started"}s1 status: finished
cache:
incoming:
[Note: processed first finish message]
Step 5:
s1 status: started
cache: {}
incoming:
[Note: processed second start message]
Now, the problem is s1 will have the wrong status!!