In summary following sequence of events happened

1. Trigger gets created on C1. It also gets cached here with rev r1
2. r2to2c updates the trigger on C2. As its not in cache it is read at rev r1 
and updated to rev r2 (not seen in logs)
3. Then r2to2d tries to update the trigger on C1. Here it finds the entry in 
cache and hence tries to update using rev r1 and end up in conflict
4. So due to conflict the trigger gets linked to only one action. Here the test 
case should have failed for conflict but it moved on ...
5. When this trigger gets evaluated then as only one action is configured it 
leads to test failure.

As our regular test on travis only run with 1 Controller and 1 Invoker this 
failure is not seen.

### Testcase not failing on conflict

It probably happens because `WskRestOperations` uses the `SwaggerValidator` to 
validate expected response for each HTTP call made. This validation checks 
against expected response code from swagger defn which in this case do list 409 
as expected response. And hence test flow misses to detect that it should have 
failed at that point.

Probably here test should check if all prior operation result in 202 or 200

### Why intermittent failure

May be in success case the cache entry gets invalidated before second trigger 
update happens or request land on same node

Is above understanding correct? 

[ Full content available at: 
https://github.com/apache/incubator-openwhisk/issues/4024 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to