[Glass] Help understanding a RcReadSet commit conflict

Dale Henrichs via Glass glass at lists.gemtalksystems.com
Fri Jun 24 10:37:14 PDT 2016



On 6/23/16 12:20 PM, Mariano Martinez Peck wrote:
>
>
> On Wed, Jun 22, 2016 at 5:21 PM, Dale Henrichs 
> <dale.henrichs at gemtalksystems.com 
> <mailto: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
>>     <mailto: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!
>
For 3.4 we are working on a fast reference scan based on quickly finding 
the parents of a particular set ofobjects in a single scan and this scan 
can be done relatively quickly ... the result of this scan will also 
yield a single single reference path ... if I'm not mistaken this is 
equivalent to "getting the first reference and killing the gem" ...the 
obex gui is really targeted at supporting this model as well as other 
schemes for analyzing objects in your repo ...  while working on this I 
am creating visualizations for all of the existing repo analysis methods 
as well ...

Dale
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20160624/a19cd662/attachment-0001.html>


More information about the Glass mailing list