[Glass] Help understanding a RcReadSet commit conflict
Dale Henrichs via Glass
glass at lists.gemtalksystems.com
Fri Jun 17 13:10:57 PDT 2016
On 6/17/16 12:56 PM, Mariano Martinez Peck wrote:
> Hi Dale,
>
> On Fri, Jun 17, 2016 at 4:20 PM, Dale Henrichs
> <dale.henrichs at gemtalksystems.com
> <mailto:dale.henrichs at gemtalksystems.com>> wrote:
>
> Okay ... I'm interested in the TransactionError that is not a
> TransactionError ... that is a bit surprising to me and I'd be
> interested in addtional details ... don't think that it's related
> to the current problem, but who knows :)
>
>
> Yes, but I don't know how to give more information. More below.
Well, right now you are resuming a TransactionError and I would want to
see the stack and the description of the actual error ... it might be
related to the current problem ... if you are "ignoring a meaningful" it
may have an impact of future commits.
>
>
> What does the #commitConflicts: method do?
>
>
> It's a simple setter. The method #runInForeground I published is in
> FaBackgroundProcess (persistent domain object). And so this
> #commitConflicts simply stores the commit conflicts into an instVar of
> it for further analysis.
>
> So far I don't see anything suspicious ...
>
> Is this problem reproducable?
>
>
> No, unfortunately, it's not :(
>
> It may be time to record a stack in the log
>
>
> I already record into the stack, maybe not exactly what you suggest
> next, but at least, please see attached file.
>
> As you can see in the stack, it looks like the normal / domain logic
> finished (in #runProcessBlock) and so the line 10 of #runInForeground
> does the #commit. So it simply looks like a commit conflict when the
> job finished.
>
> Does this stack helps somehow? Note that it shows some OOP etc and I
> can still get this OOP if you need them.
>
> and perhaps take a look at System
> class>>_commitPrintingDiagnostics for logging the commit conflicts
> to the log as well ... The code in System
> class>>_commitPrintingDiagnostics implies that not all fields are
> in the transactionConflicts dictionary are set, so that may be a
> red herring.
>
> Thanks for pointing out to #_commitPrintingDiagnostics. In fact it
> looks pretty similar to what I do, right? And yeah, those #ifAbsent:[]
> may suggest we may not be able to get all fields. But then...how do we
> get them???
>
well, the transactionConflicts report shows no conflicts, so we are
getting a commit conflict where there are not actual conflicts ... this
could be a bug, but I would like to know for sure that the "ignored"
TransactionError is not involved ... so perhaps some additional logging
for the "resumed TransactionError" is called for ..
The stack isn't useful - as you claim - so right now I can only be
suspicious of the "resumed Transaction errors" ...
I'm not in the office today --- not feeling well --- so on Monday I will
talk to some folks about additional measures we can take --- it's also
time to ask about the version of GemStone that you are using:)
Dale
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20160617/fce002f5/attachment.html>
More information about the Glass
mailing list