[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