Greetings,
The following webrev contains changes for the following issues:
15762 client support for filesystem-based repository access
10244 caching dictionaries as a class variable prevents multi-image
and repo search
14802 ability to have separate read / write download caches
15763 test suite should not start depot server unless necessary
15764 file_manager insert needs to stat() less and return more
webrev:
http://cr.opensolaris.org/~swalker/pkg-file/
======================================================================
Summary of Changes
======================================================================
* pkg.client.api now supports the 'file' scheme for repository access
(origins and mirrors); see the pkg.1 man page for a few examples.
* pkg.client.transport now supports filesystem-based repository
access (and stats tracking)
* search is now possible when using multiple image interface objects
for different images; previously, this would not have worked as
expected or performance would have been severely degraded.
* transport API now supports a shared, global read/write cache, and
a single read/write cache per publisher, and an unlimited number
of global or publisher-specific read caches
* test suite now primarily uses file-based repository access so doesn't
start a depot server unless explicitly requested
* unit tests simplified by moving common code for getting API objects
into unittest class
* file_manager cache management performance improved
* client cache usage performance improved
* transport speeds now more accurate for pipelined http(s) requests
======================================================================
Additional Notes
======================================================================
* file-based repositories are used as a local, publisher-specific,
read-only cache by default; this means package file content is not
copied to the client's /var/pkg/download directory as a performance
optimisation. This could be controlled by image policy if so desired
as a future RFE.
* Repositories without a cfg_cache file in their root, or repositories
with a split structure (data does not share a central location) are
not currently supported. (Out of scope; large set of changes
required; further evaluation needed.)
* A slim_install using a system with fast I/O can be done in < 2
minutes using filesystem-based repository access. The majority of
overhead during the operation is in content verification which is
almost completely I/O bound.
* Search operations against a filesystem-based origin will use
significantly more memory than the same search performed against
a network-based source relative to the size of the search
indices. This is expected since the client is acting as both the
server and client in this scenario.
* If a publisher has origins using both 'file' and 'http(s)'
configured, the 'http(s)' origins will be tried first when
performing search operations to avoid incurring the overhead
noted above.
Cheers,
-Shawn
_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss