I've thought about it a bit more, and I have a hypothesis for CTM, if
they are reading this.  I suspect that the code called by the GUI thread
is checking something in an object that encapsulates the POP state
through an interface that specifies as its contract simply that it
returns the current state of some variable.  The implementation, however,
asks for this information from the POP server, rather than returning the
most recently cached value.  This is the sort of subtle difference in
interpretation of the contract that is often the source of bugs in
object-oriented software, as it can be introduced by making an object
stateless, for example, without violating the contract as documented.

I suspect that it is hitting the network because that means the delay
won't occur unless there is significant latency to the server, which may
not be the case in CTM's test setup, and for everyone else will depend on
the network latency to get to the server as well as the server load.
Hence not everyone sees it, those who do report it as intermittent, and
CTM may have some trouble reproducing it in the lab.

This is, of course, merely speculation based on my experience as a
software engineer and is offered exclusively in the hope of helping CTM
improve the product, not as criticism of anyone's coding.

--
Raúl Vera
Director
Orbit 3 Pty Ltd
8 Coneill Place
NSW 2037
Australia


Reply via email to