Hello!

On Wed, 3 Oct 2007, Paul Lindner wrote:

Okay, here's the changes I've committed to trunk:
[...]
       * Add append command support written by Filipe Laborde.
         Tests/protocol doc updates by Paul Lindner.

Please note: commited append command support from Filipe is NOT atomic
since it obtains previous item data in process_update_command() - i.e. before reading from network completes. Thus in theory one may change old data before new data will be linked in complete_nread(). It's not thread-safe as far as I see, too.

Several days ago I've developed more correct append/prepend patch (with the same syntax for append), it's available here:

https://mdounin.ru/hg/memcached/rev/e28ab6bd21fa

It's truly atomic and should be thread-safe since all actual work done in do_store_item() (which is locked when memcached used with treads). It's a bit more resource consuming though - since we can't be sure that nobody changes old data before we finish reading - we have to do memcpy() for new *and* old data.

Coresponding perl api changes (trivial - just new append/prepend commands mapped to generic _set()) available here:

https://mdounin.ru/hg/Cache-Memcached/rev/f5cfb726ea65

Maxim Dounin

Reply via email to