[Zope] Trying to trap ConflictError
Jonathan
dev101 at magma.ca
Wed Jul 5 15:58:59 EDT 2006
----- Original Message -----
From: "David H" <bluepaul at earthlink.net>
To: "Jonathan" <dev101 at magma.ca>
Cc: <zope at zope.org>
Sent: Wednesday, July 05, 2006 3:22 PM
Subject: Re: [Zope] Trying to trap ConflictError
> Jonathan wrote:
>
>>
>> ----- Original Message ----- From: "David H" <bluepaul at earthlink.net>
>> To: "Jonathan" <dev101 at magma.ca>
>> Cc: <dieter at handshake.de>; <zope at zope.org>
>> Sent: Wednesday, July 05, 2006 3:00 PM
>> Subject: Re: [Zope] Trying to trap ConflictError
>>
>>
>>> Jonathan wrote:
>>>
>>>>
>>>> ----- Original Message ----- From: <dieter at handshake.de>
>>>> To: "Jonathan" <dev101 at magma.ca>
>>>> Cc: "Dennis Allison" <allison at shasta.stanford.edu>; <zope at zope.org>
>>>> Sent: Wednesday, July 05, 2006 2:28 PM
>>>> Subject: Re: [Zope] Trying to trap ConflictError
>>>>
>>>>
>>>>> Jonathan wrote at 2006-7-4 13:46 -0400:
>>>>>
>>>>>> ...
>>>>>> The image objects stored in
>>>>>> TemporaryStorage are never overwritten, edited etc (which is causing
>>>>>> me some
>>>>>> confusion as to why the conflict errors are occurring)
>>>>>
>>>>>
>>>>>
>>>>> The error message tells your that the conflict is not caused by
>>>>> the modification of the image but the container holding your image.
>>>>>
>>>>> "BTreeFolder" already do conflict resolution -- and reduce the
>>>>> conflict probability by about a factor of 30 to 100 (depending on
>>>>> type).
>>>>>
>>>>> However, if several threads should try to add elements with the same
>>>>> id, then the conflict resolution cannot work.
>>>>> Maybe, that happens in your case?
>>>>
>>>>
>>>>
>>>> The id for the image object is generated by the following code:
>>>>
>>>> def MakeId():
>>>> time.sleep(.01)
>>>> ts = string.replace(str(time.time()),'.', '') # remove floating
>>>> point '.' char
>>>> return ts[-10:]
>>>>
>>>> So there should not be any collision of ids.
>>>>
>>>> I am still investing, and have found errors like:
>>>>
>>> Jonathan,
>>>
>>> I wouldn't feel safe with that. Why not append a few random digits just
>>> to be safe?
>>
>>
>> I am relatively new to python, so if there is something problematic with
>> my use of the time module to create unique ids, please let me know! (just
>> adding random digits seems a bit kludgy?!)
>>
>> Thanks,
>>
>> Jonathan
>>
> Hi Jonathan,
>
> I figured that if conflicts occur because mutliple processes are
> requesting some service at the same time +- delta then simply generating a
> file name based on the time was suspect.
Good thought! I had not considered problems arising from multiple
processes. I have now included a random 3 digit suffix as part of the id
generation routine. On the downside, I am still getting conflict errors
(back to the investigation... sigh).
Thanks David,
Jonathan
More information about the Zope
mailing list