Thanks Antonio. Yes I noticed partialUpdateStream_? too, but as you said I'm not overriding it so discounted it.
I remembered this comet actor is instantiated by a snippet which renders the the correct data-lift incantation which is then evaluated and the actor created as a result. Also, an eager_eval=true is passed... for what reason I cannot remember, but it makes me wonder if this control over the ordering might be having an effect.
I looked at my pages, and got the problem to reproduce (as I said, it's not deterministic). On a case it reproduces, we get:
_lastRenderTime is instantiated (I can't check the value of this because if I spend too long in the debugger something returns me to the home page of the app)
Then a performReRender occurs and the value of _lastRenderTime is set to 234617271589
The page is delivered, and the values are as so:
<div data-lift-comet-version="234617271585" id="F234617271584ABKI0Y_outer" [...]
ift.registerComets({"F234617271584ABKI0Y": 234617271585}
Then when the Listen gets triggered, the when is 234617271585
But _lastRenderTime is 234617271589 (this is the value after performReRender), so the identical nodeseq is sent all over again.
_lastRenderTime is only updated when
- BaseCometActor is instantiated
- BaseCometActor is re-rendered
- A Listen message is received which has a when after the _lastRenderTime (and any deltas are sent)
Should performReRender be called as part of initial page load? If so, and assuming the value of the rendering is used, why isn't the updated _lastRenderTime used on the initial page load and message exchange? i.e. I would expect the following to be delivered:
<div data-lift-comet-version="234617271589" id="F234617271584ABKI0Y_outer" [...]
ift.registerComets({"F234617271584ABKI0Y": 234617271589}
Dan