Are you suggesting that I modify Sync.pm?
MjM
[EMAIL PROTECTED] wrote:
> Franck PORCHER wrote:
>
>>Well, I'm not 100% sure, but I recently switched for MLDBM and got this
>>problem too. Here is what I found, and did to remedy the situation :
>>
>>It *seemed* to me that the physical MLDBM repository was not
physically created
>>until I actually wrote something into it, eventhough it was reported as
>>correctly open RW.
>>
>>
>
> This is correct. This is a performance enhancement, with the side effect
> that write errors will occur at runtime.
>
>
>>So, any ends of my application trying to fetch value during this
>>transcient stage got this kind of error (I do not remember
>>precisely which one I got, but very close indeed).
>>
>>I solved the problem by doing an awful trick on each RW opening, such as
>>:
>>
>>eval {
>> tie %hash, "MLDBM::Sync", $storage, O_RDWR | O_CREAT, 0660;
>> $hash{'__DuMmY__'} = 'OK';
>> delete $hash{'__DuMmY__'};
>> };
>>
>>That solved the problem in the midtime, waiting for something
>>much better...
>>
>>
>
> You could also
>
> tie %hash, "MLDBM::Sync", $storage, O_RDWR | O_CREAT, 0660;
> tied(%hash)->Lock;
>
> to similar effect, as Lock() will actually force a tie to
> the dbm on disk.
>
> The basic premise of MLDBM::Sync is that the tie/untie actually
> occur at the reads & writes, so that i/o is flushed correctly.
>
> --Josh
> _________________________________________________________________
> Joshua Chamas Chamas Enterprises Inc.
> NodeWorks Founder Huntington Beach, CA USA
> http://www.nodeworks.com 1-714-625-4051
>