[asterisk-dev] [Code Review] 3716: Weak Reference Containers

George Joseph reviewboard at asterisk.org
Mon Sep 22 18:14:22 CDT 2014


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3716/
-----------------------------------------------------------

(Updated Sept. 22, 2014, 5:14 p.m.)


Status
------

This change has been discarded.


Review request for Asterisk Developers, Corey Farrell and rmudgett.


Repository: Asterisk


Description
-------

Weak Reference Containers are hash containers that don't maintain references to the objects they contain.
Basically, ao2_link() doesn't increase the ref count and ao2_unlink() doesn't decrease it.

Sounds simple but because the container doesn't have a reference to the object, it's entirely possible that the objects could be destroyed while still in the container.  Therefore much of the work in this patch is making sure that if the object is destroyed, it's properly cleaned out of any weak reference containers that it may have been in.

This patch is almost 6000 lines but half of it is units tests...functional, performance, and stress.

Richard:  I apologize in advance...I undid some of the refactor undos you had me do earlier. :)


Diffs
-----

  branches/12/utils/Makefile 418136 
  branches/12/tests/test_astobj2_weak.c PRE-CREATION 
  branches/12/tests/test_astobj2_torture.c PRE-CREATION 
  branches/12/tests/test_astobj2_thrash.c 418136 
  branches/12/tests/test_astobj2.c 418136 
  branches/12/main/astobj2_weak.c PRE-CREATION 
  branches/12/main/astobj2_rbtree.c 418136 
  branches/12/main/astobj2_private.h 418136 
  branches/12/main/astobj2_hash_private.h PRE-CREATION 
  branches/12/main/astobj2_hash.c 418136 
  branches/12/main/astobj2_container_private.h 418136 
  branches/12/main/astobj2_container.c 418136 
  branches/12/main/astobj2.c 418136 
  branches/12/include/asterisk/astobj2.h 418136 

Diff: https://reviewboard.asterisk.org/r/3716/diff/


Testing
-------

A whole slew of unit tests were added and the existing astobj2 tests were modified to also test weak containers.  All passed.
A torture test was added that tests multiple threads accessing multiple containers for weak, hash and rbtree containers.  All passed.
The full Testsuite was run with the same number of tests passing that passed before the patch.


Thanks,

George Joseph

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20140922/d3de1d78/attachment.html>


More information about the asterisk-dev mailing list