-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/33623/
-----------------------------------------------------------

(Updated April 28, 2015, 6:35 p.m.)


Review request for qpid, Alan Conway, Andrew Stitcher, and Rafael Schloming.


Changes
-------

This adds a unit test showing a problem case. At present the test passes, but 
shows up a couple of valgrind errors for the map and value string. Clearly I'm 
doing something wrong but have been bashing my head against this for ages 
without seeing the issue. Any pointers? (I use the pn_hash interface in order 
to be able to use plain ints as keys, which makes figuring out how they hash 
simpler).


Bugs: PROTON-858
    https://issues.apache.org/jira/browse/PROTON-858


Repository: qpid-proton-git


Description
-------

The internal map implementation for proton-c uses coalesced hashing, but the 
current deletion algorithm does not take account of this. On deletion of 
entries, the map can lose its ability to locate other entries by key.

This patch is the simplest possible fix. It frees the deleted entry, makes any 
previous entry that points to this tha tail of its chain, and then relocates 
any entries in a chain following the deleted entry. Though I believe this to be 
correct and safe, it does involve more work on some deletions. The approach can 
be optimised further, either be reducing the amount of chain that needs 
relocated, or by marking records as deleted in the first instance and only 
rehashing later on some criteria.

(I started off trying to do the latter, but it is more complicated and I still 
haven't got my patch fully correct. When I get that working I'll post that 
also. It is a more involved change though, so perhaps we may want to consider 
this simpler approach for 0.9.1).


Diffs (updated)
-----

  proton-c/src/object/map.c 1a758a1 
  proton-c/src/tests/object.c 2b213c5 

Diff: https://reviews.apache.org/r/33623/diff/


Testing
-------


Thanks,

Gordon Sim

Reply via email to