I'm not sure if this is relevant but I found with sqlite3 that in
situations with high contention for a database (multiple coincident
reads/writes) that backing off and trying again in a half second rather
than relying on the sqlite3 timeout seemed to increase overall throughput
and reliability. I suspect that if on the "server" side if there are
multiple concurrent readers and a concurrent writer that a brief release of
the read lock to allow any pending writers to complete their work might
improve overall throughput and decrease the number of sqlite3 errors.

One fossil I work with is getting over a hundred commits a day and the
sqlite3 failures result in a fork every few weeks. I'm glad to say the
database itself has proven resistant to corruption under this heavy load.

On Thu, Apr 17, 2014 at 8:33 AM, Richard Hipp <[email protected]> wrote:

>
> On Thu, Apr 17, 2014 at 11:16 AM, Stephan Beal <[email protected]>wrote:
>
>>
>>    Seems like about all you have to do is COMMIT after each round-trip to
>>> the server, rather than waiting to COMMIT at the very end.  Or, just COMMIT
>>> instead of ROLLBACK after getting a server timeout.
>>>
>>
>> Would that be a valid strategy? Couldn't we end up with a partial state
>> which we can't work from until the pull finishes to completion?
>>
>>
> The logic (in manifest.c) is designed to be able to deal with partial
> state transfers.  I'm not saying there are definitely no bugs, but I'm
> pretty sure it does work.
>
>
> --
> D. Richard Hipp
> [email protected]
>
> _______________________________________________
> fossil-users mailing list
> [email protected]
> http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users
>
>


-- 
Matt
-=-
90% of the nations wealth is held by 2% of the people. Bummer to be in the
majority...
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to