We're updating the issue view to help you get more done. 

Stream management concurrency

Description

Occasionally the Smack integration tests follow, logging an error like this: "You acknowledged stanzas that we didn't send. Your Ack h: X, our last stanza: Y" where X and Y are the same value. When X and Y are equal, then that's expected behavior and an error should not be logged.

When adding a synchronized block around the detection of the problem and the logging of the problem (which each retrieve the latest value of Y), the logging is correct: X and Y are different.

This leads me to believe that there's a concurrency related issue in the processing of Acks of Stream Management.

Not only should the synchronization described above be applied, but a similar synchronization should be applied when writing data out to the client, and updating the counter of unack'ed stanzas. Without such synchronization, the write could, theoretically, result in an ack, even before the unack'ed stanza was registered. Timing wise, this would be very unlikely given that one flow involves networking, but given that the Smack integration tests run in a virtual environment, where networking is all localhost, who knows...

Environment

None

Acceptance Test - Entry

None

Assignee

Guus der Kinderen

Reporter

Guus der Kinderen

Labels

None

Expected Effort

None

Ignite Forum URL

None

Fix versions

Priority

Major
Configure