[asterisk-dev] [Code Review] 2715: Bucket: A generic file and directory API

Joshua Colp reviewboard at asterisk.org
Thu Aug 1 15:00:35 CDT 2013



> On Aug. 1, 2013, 4:35 p.m., Mark Michelson wrote:
> > /trunk/main/bucket.c, lines 360-361
> > <https://reviewboard.asterisk.org/r/2715/diff/1/?file=43192#file43192line360>
> >
> >     Suggestion: You can make this replacement operation atomic by either:
> >     
> >     1) Allocating the container with the AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE flag. Note that this would require the container to be sorted.
> >     
> >     2) Hold the lock on the file->metadata while performing the ao2_find() and ao2_link(). Pass the OBJ_NOLOCK flag to ao2_find() and ao2_link_options().
> 
> Joshua Colp wrote:
>     Files are not shared, so they need no locking.
> 
> Mark Michelson wrote:
>     Why can't files be shared? As long as an ast_bucket_file_retrieve() function exists, it's possible for multiple locations to share the same resource. This may not be the intended use, but it's possible.

An underlying resource may be shared (ie: the same file on disk) but the ast_bucket_file object isn't. It is not an up to date real time representation of the file on-disk, it is a snapshot if you will at the time of retrieval.


- Joshua


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


On July 30, 2013, 6:39 p.m., Joshua Colp wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/2715/
> -----------------------------------------------------------
> 
> (Updated July 30, 2013, 6:39 p.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> Bucket is a generic file and directory API implemented as a thin wrapper over sorcery. It decouples the storage of files from the backend and provides the ability to set metadata on file themselves. What it means to have files in a "bucket" and details about the files themselves is left up to the user of the bucket API. It enforces no restrictions. Identification of things is done using URIs, which include a scheme. Modules implement specific schemes (local, for example) and take care of the implementation specific aspect of it. The ability to get bucket and file information in a JSON format is provided, as is the ability to copy and move files.
> 
> Stuff to focus on:
> 
> 1. Is the API sane and complete?
> 2. Do the unit tests cover everything?
> 3. What do we want to do for URI parsing - I wrote a basic extremely optimistic one
> 
> 
> Diffs
> -----
> 
>   /trunk/include/asterisk/bucket.h PRE-CREATION 
>   /trunk/include/asterisk/config_options.h 395727 
>   /trunk/main/asterisk.c 395727 
>   /trunk/main/bucket.c PRE-CREATION 
>   /trunk/main/config_options.c 395727 
>   /trunk/tests/test_bucket.c PRE-CREATION 
> 
> Diff: https://reviewboard.asterisk.org/r/2715/diff/
> 
> 
> Testing
> -------
> 
> Ran unit tests, confirmed functional. Tweaked this to purposely break and confirmed they broke.
> 
> 
> Thanks,
> 
> Joshua Colp
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20130801/7967ee2c/attachment-0001.htm>


More information about the asterisk-dev mailing list