On Aug 30, 2013, at 4:49 PM, Sven Van Caekenberghe <s...@beta9.be> wrote:
> > On 30 Aug 2013, at 16:35, Esteban Lorenzano <esteba...@gmail.com> wrote: > >> >> On Aug 29, 2013, at 5:08 PM, Sven Van Caekenberghe <s...@stfx.eu> wrote: >> >>> >>> On 29 Aug 2013, at 16:51, Esteban Lorenzano <esteba...@gmail.com> wrote: >>> >>>> hi >>>> >>>> well... I've never been happy on using the UUID generator for my keys, but >>>> is the fastest option I found. >>>> There are, of course, alternatives: >>>> >>>> 1) Using your own number generator (sequential, or whatever). Problem with >>>> that is that is image based, then you need a persistence strategy... then >>>> you are slow. >>>> 2) then you can use your own procedure in mongo... with same problem than >>>> (1) >>>> 3) you could use timestamp. but TimeStamps are slow :( >>>> >>>> anyway... I open to ideas :) >>>> >>>> in the mean time, you can check if your UUID generator is using the >>>> primitive or not. In you are not, you have more possibilities of having a >>>> collision. >>> >>> Yes, the Smalltalk code (type 4 UUID) is just a random number that is >>> computed in a complex way. >>> >>> What does the primitive actually do ? Is it different ? >> >> the primitive uses the clock ticks to produce an UUID... you shouldn't have >> repeated numbers that way... but well, it depends on the platform >> implementation also. > > I don't like plugins because it is some much harder for everyone to look at > the implementation, while everybody thinks some magic happens there, and > often the truth is quite disappointing. > > Maybe the resolution of #primUTCMicrosecondsClock is not high enough ? I tried... not enough :( > >>>> Esteban >>>> >>>> On Aug 29, 2013, at 11:27 AM, Sabine Knöfel <sabine.knoe...@gmail.com> >>>> wrote: >>>> >>>>> Hi Esteban, All, >>>>> >>>>> I was proceeding to seach for the reason of the problem I described >>>>> yesterday. >>>>> >>>>> I added some debugging code into VOMongoSerializer>>ensurePersisted: and >>>>> the >>>>> problem I described, did NOT occur. >>>>> >>>>> That made the whole process slower...and I had an idea.... >>>>> >>>>> I was looking into >>UUIDGenerator default makeSeed. >>>>> Then I tried the following code: >>>>> >>>>> |theOld theNew| >>>>> >>>>> 100000000 timesRepeat: [ >>>>> theNew := UUIDGenerator default makeSeed. >>>>> theNew = theOld ifTrue: [self halt]. >>>>> theOld := theNew] >>>>> >>>>> The debugger came up! Doesn't that mean that, if the code is run very >>>>> fast, >>>>> there are double OIDs generated?! >>>>> >>>>> In my case, the objects for country and currency are very lightweight and >>>>> so, they are created very fast. Also, the error occured much more often >>>>> within my fast production EC2 instance as at my (old and slow) development >>>>> pc. >>>>> >>>>> Important: I work with windows and so >>makeUnixSeed returns nil... :-) >>>>> >>>>> What is your opinion about that? >>>>> >>>>> Sabine >>>>> >>>>> >>>>> >>>>> -- >>>>> View this message in context: >>>>> http://forum.world.st/voyage-mongo-randomly-wrong-OIDs-tp4705396p4705603.html >>>>> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com. >>>>> >>>> >>>> >>> >>> >> >> > >