[Glass] Help understanding a RcReadSet commit conflict

Mariano Martinez Peck via Glass glass at lists.gemtalksystems.com
Thu Jun 23 12:20:44 PDT 2016


On Wed, Jun 22, 2016 at 5:21 PM, Dale Henrichs <
dale.henrichs at gemtalksystems.com> wrote:

>
>
> On 06/22/2016 12:20 PM, Mariano Martinez Peck wrote:
>
>
>
> On Wed, Jun 22, 2016 at 2:52 PM, Dale Henrichs via Glass <
> <glass at lists.gemtalksystems.com>glass at lists.gemtalksystems.com> wrote:
>
>>
>>
>> On 06/16/2016 07:54 AM, Mariano Martinez Peck via Glass wrote:
>>
>>>
>>>
>>> Inspect aFaBackgroundProcess/aSymbolDictionary(
>>> #'WriteWrite_minusRcReadSet'->anArray( aDictionary( )),
>>> #'commitResult'->#'failure', #'RcReadSet'->anArray( aRcCollisionBucket(
>>> aRcKeyValueDictionary( ,........)
>>> --------------------
>>> .                -> aSymbolDictionary(
>>> #'WriteWrite_minusRcReadSet'->anArray( aDictionary( )),
>>> #'commitResult'->#'failure', #'RcReadSet'->anArray( aRcCollisionB...
>>> ..               -> aFaBackgroundProcess
>>> (class)@         -> SymbolDictionary
>>> (oop)@           -> 15059544321
>>> (committed)@     -> true
>>> (notTranlogged)@ -> nil
>>> 1@               -> #'commitResult'->#'failure'
>>> 2@               -> #'RcReadSet'->anArray( aRcCollisionBucket(
>>> aRcKeyValueDictionary( 'siteDB-debris-gemstone'->aFaGemStoneDataStore)),
>>> aRcCollisionBucket( aRcK...
>>> 3@               -> #'Write-Write'->anArray( aDictionary( ))
>>> 4@               -> #'WriteWrite_minusRcReadSet'->anArray( aDictionary(
>>> ))
>>>
>>> Mariano,
>>
>> I guess we are both blind:) ... While describing the "problem" to a
>> co-worker I noticed that the the Write-Write set is NOT EMPTY :):
>>
>>   3@               -> #'Write-Write'->anArray( aDictionary( ))
>>
>> The conflict that you are getting is on the empty dictionary
>> (aDictionary( )) ... presumably you are creating an empty Dictionary
>> somewhere in shared state and two sessions are trying to update the
>> dictionary...
>>
>>
>
> Uff  wtf!!!! Crap, we were both blind. Sorry to bother. Ok...the hunting
> (findAllReferencePathsTo... )  has become... will see if I can track down
> this guilty empty dict.
>
> Thanks!
>
> haha ... happy hunting ...
>
>
OK, it was quite easy. Thanks for the extra pair of eyes.


> BTW, if you find traipsing through the output of
> findAllReferencePathsTo... to be frustrating, you might want to try Obex[1]
> for visualizing the referencespath structure... Obex is still under
> development and it might require a bit of tweaking, but one of it's
> features is to allow you to build a visual network of the objects in the
> findAllReferencePathsTo... result set ...
> '
>

Yes, I am aware of it... but:

1) I still cannot use latest tODE and won't be able until we have all the
none-DataCurator thingy
2) findAllReferencePathsTo takes a lifetime for my repo. I am talking of an
hour or so... so I cannot imagine a UI with that performance.

What I end up doing is to fire the findAllReferencePathsTo in a gem (like
in tODE) and then do a "tail -f " of the gem log. Most of the times, the
most important reference paths is the first one or so... then I see
first..analyze code, then get the OOP which may be pointing to it. Then
kill gem and start again the findAllReferencePathsTo with the new OOP ...
and like that until I find the guilty one.

Thanks!


>
>
Dale
>
> [1] https://github.com/dalehenrich/obex#object-explorer-for-gemstones-64
>



-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20160623/4b6bd749/attachment.html>


More information about the Glass mailing list