MongoDbInboundChAdapterIntTests race condition

Since we can have a result message in the `replyChannel` before the TX commit, a subsequent adapter `stop()` causes the current task interruption,
 therefore TX rallback.
That's why we see `semaphore.acquire()` interruption and don't see message in the  `afterCommitChannel`

**Cherry-pick to 4.3.x**
This commit is contained in:
Artem Bilan
2016-12-29 11:58:20 -05:00
parent 56929cdae7
commit bdab0aa1d3

View File

@@ -25,6 +25,7 @@ import java.util.List;
import org.bson.Document;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
@@ -218,11 +219,10 @@ public class MongoDbInboundChannelAdapterIntegrationTests extends MongoDbAvailab
assertNotNull(replyChannel.receive(10000));
assertNull(replyChannel.receive(100));
this.inboundAdapterWithOnSuccessDisposition.stop();
assertNotNull(this.afterCommitChannel.receive(10000));
assertNull(this.mongoTemplate.findOne(new Query(Criteria.where("name").is("Bob")), Person.class, "data"));
this.inboundAdapterWithOnSuccessDisposition.stop();
this.replyChannel.purge(null);
}