28bff36b814a30c07e7ff67d896edd0d3562416f
165 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
gholt
|
a1a4d35362 |
Logging improvements: handoffs and thread locals
A warning log line is emitted whenever the proxy has to use a handoff node. Monitoring these warnings can indicate a problem within your cluster; however, you can disable these log lines by setting the proxy conf's log_handoffs to false. While working on this, I also noticed why many proxy log lines did not have txn_id and client_ip -- subcoroutines. Now the logger thread locals are copied to the subcoroutines. Change-Id: Ibac086e1b985f566c068d083620287509de35da8 |
||
|
Jenkins
|
a9887c0e15 | Merge "Move swift_auth middleware from keystone to swift." | ||
|
Vincent Untz
|
faff4ae769 |
Forbid substrings based on a regexp in name_filter middleware
In comments from https://review.openstack.org/8798 it was raised that it might make sense to forbid some substrings in the name_filter middleware. There is now a new forbidden_regexp option for the name_filter middleware to specify which substrings to forbid. The default is "/\./|/\.\./|/\.$|/\.\.$" (or in a non-regexp language: the /./ and /../ substrings as well as strings ending with /. or /..). This can be useful for extra paranoia to avoid directory traversals (bug 1005908), or for more general filtering. Change-Id: I39bf2de45b9dc7d3ca4d350d24b3f2276e958a62 DocImpact: new forbidden_regexp option for the name_filter middleware |
||
|
Florian Hines
|
5f72a8db4a |
Fix Dispersion report and swift-bench on saio
We're still using saio:11000 in a few spots so a few things don't work out of the box on the saio. Fixes bug #1024561 Change-Id: I226de54c2785b0d0b681c8d0cc24260adbd3d663 |
||
|
Chmouel Boudjnah
|
afa4f70024 |
Move swift_auth middleware from keystone to swift.
- Rename it to keystoneauth for consistenties. - Implements blueprint keystone-middleware. Change-Id: I208fecdf3ee991694b4239f065032324d297fd35 |
||
|
Vincent Untz
|
1125368624 |
Remove ambiguity in memcache_servers documentation
The documentation could be understood like the following: memcache_servers from memcache.conf is always used if set, even if memcache_servers in proxy-server.conf is set. This is clearly not the case, as proxy-server.conf has a higher priority if it memcache_servers is set there. Change-Id: I967c7e80796a0e296c5c65bd097df1669d16203e |
||
|
Victor Rodionov
|
13e4de1899 |
Patch for Swift Solaris (Illumos) compability.
* Add new configuration option log_address. Change-Id: I636bd4116687629c997b70a0d804b7ed4bc46032 |
||
|
Samuel Merritt
|
28cd9b2da8 |
Make object server's caching more configurable.
The object server had a constant KEEP_CACHE_SIZE = 5*1024*1024;
unauthenticated GET requests for files smaller than KEEP_CACHE_SIZE
would not evict the file from the kernel's buffer cache after it was
read from disk.
Now that hardcoded constant is a configuration parameter
("keep_cache_size"), and now there is also another parameter called
"keep_cache_private". If set, then both authenticated and
unauthenticated GET requests for small files will not evict the data
from the buffer cache. The default values are 5 MiB and False,
respectively, so the default behavior is the same.
Bonus: the "mb_per_sync" parameter is now documented in the deployment
guide.
Change-Id: I9a11dbe861f4c23535c6aa82a9111a6fe2db2a59
|
||
|
Jenkins
|
676c338b7c | Merge "Expand recon middleware support" | ||
|
Michael Barton
|
7c98e7a625 |
Move proxy server logging to middleware.
Change-Id: I771c87207d4e1821e32c3424b341d182cc7ea7c0 |
||
|
Florian Hines
|
ccb6334c17 |
Expand recon middleware support
Expand recon middleware to include support for account and container servers in addition to the existing object servers. Also add support for retrieving recent information from auditors, replicators, and updaters. In the case of certain checks (such as container auditors) the stats returned are only for the most recent path processed. The middleware has also been refactored and should now also handle errors better in cases where stats are unavailable. While new check's have been added the output from pre-existing check's has not changed. This should allow existing 3rd party utilities such as the Swift ZenPack to continue to function. Change-Id: Ib9893a77b9b8a2f03179f2a73639bc4a6e264df7 |
||
|
Jenkins
|
86ddaab942 | Merge "!! Changed db_preallocation to False" | ||
|
John Dickinson
|
1e90b61076 |
Re-add cname lookup and domain remap middleware
Revert "removed cname lookup middleware"
This reverts commit
|
||
|
gholt
|
9eb797b099 |
!! Changed db_preallocation to False
Long explanation, but hopefully answers any questions. We don't like changing the default behavior of Swift unless there's a really good reason and, up until now, I've tried doing this with this new db_preallocation setting. For clusters with dedicated account/container servers that usually have fewer disks overall but SSD for speed, having db_preallocation on will gobble up disk space quite quickly and the fragmentation it's designed to fight isn't that big a speed impact to SSDs anyway. For clusters with account/container servers spread across all servers along with object servers usually having standard disks for cost, having db_preallocation off will cause very fragmented database files impacting speed, sometimes dramatically. Weighing these two negatives, it seems the second is the lesser evil. The first can cause disks to fill up and disable the cluster. The second will cause performance degradation, but the cluster will still function. Furthermore, if just one piece of code that touches all databases runs with db_preallocation on, it's effectively on for the whole cluster. We discovered this most recently when we finally configured everything within the Swift codebase to have db_preallocation off, only to find out Slogging didn't know about the new setting and so ran with it on and starting filling up SSDs. So that's why I'm proposing this change to the default behavior. We will definitely need to post a prominent notice of this change with the next release. Change-Id: I48a43439264cff5d03c14ec8787f718ee44e78ea |
||
|
gholt
|
1c3b75c291 |
Reverted the pulling out of various middleware:
RateLimit StaticWeb TempURL/FormPOST Change-Id: I988e93e6f4aacb817a2e354d43a04e47516fdf88 |
||
|
Darrell Bishop
|
3d3ed34f44 |
Adding StatsD logging to Swift.
Documentation, including a list of metrics reported and their semantics,
is in the Admin Guide in a new section, "Reporting Metrics to StatsD".
An optional "metric prefix" may be configured which will be prepended to
every metric name sent to StatsD.
Here is the rationale for doing a deep integration like this versus only
sending metrics to StatsD in middleware. It's the only way to report
some internal activities of Swift in a real-time manner. So to have one
way of reporting to StatsD and one place/style of configuration, even
some things (like, say, timing of PUT requests into the proxy-server)
which could be logged via middleware are consistently logged the same
way (deep integration via the logger delegate methods).
When log_statsd_host is configured, get_logger() injects a
swift.common.utils.StatsdClient object into the logger as
logger.statsd_client. Then a set of delegate methods on LogAdapter
either pass through to the StatsdClient object or become no-ops. This
allows StatsD logging to look like:
self.logger.increment('some.metric.here')
and do the right thing in all cases and with no messy conditional logic.
I wanted to use the pystatsd module for the StatsD client, but the
version on PyPi is lagging the git repo (and is missing both the prefix
functionality and timing_since() method). So I wrote my
swift.common.utils.StatsdClient. The interface is the same as
pystatsd.Client, but the code was written from scratch. It's pretty
simple, and the tests I added cover it. This also frees Swift from an
optional dependency on the pystatsd module, making this feature easier
to enable.
There's test coverage for the new code and all existing tests continue
to pass.
Refactored out _one_audit_pass() method in swift/account/auditor.py and
swift/container/auditor.py.
Fixed some misc. PEP8 violations.
Misc test cleanups and refactorings (particularly the way "fake logging"
is handled).
Change-Id: Ie968a9ae8771f59ee7591e2ae11999c44bfe33b2
|
||
|
John Dickinson
|
b47bcf19e4 |
removed cname lookup middleware
The code has moved to https://github.com/notmyname/swift-cnamelookup. For current users of cname lookup, this will require installing the new package and changing the "use" line of the cname lookup conf section's to: [filter:cname_lookup] use = egg:swift_cnamelookup#swift_cnamelookup And then 'swift-init proxy reload'. Change-Id: If622486ddb04a53251244c9840aa3cfe72168fc5 |
||
|
gholt
|
3f00c1a630 |
Pulled out Rate Limit middleware
Rate Limit middleware is now at http://dpgoetz.github.com/swift-ratelimit/ For current users of Rate Limit, this will require installing the new package and changing the "use" line of the ratelimit conf section to: [filter:ratelimit] use = egg:swiftratelimit#middleware And then 'swift-init proxy reload'. Change-Id: I2ab774e9cee9fba4103c1be4bea6d52d1adb29f7 |
||
|
John Dickinson
|
7dfbd785b0 |
removed domain remap middleware
The code has moved to https://github.com/notmyname/swift-domainremap. For current users of domain remap, this will require installing the new package and changing the "use" line of the domain remap conf section's to: [filter:domain_remap] use = egg:swift_domainremap#swift_domainremap And then 'swift-init proxy reload'. Change-Id: I710caf9b991f9d37df36b826ae4338086d0ec36d |
||
|
gholt
|
c0532a6ef2 |
Pulled out TempURL/FormPOST
TempURL/FormPOST is now at http://gholt.github.com/swift-tempurl/ For current users of TempURL/FormPOST, this will require installing the new package and changing the "use" line of the tempurl and formpost conf section's to: [filter:tempurl] use = egg:swifttempurl#tempurl [filter:formpost] use = egg:swifttempurl#formpost And then 'swift-init proxy reload'. Change-Id: I5bddf7f9e09ee07815530a41c46ff901fc21b447 |
||
|
gholt
|
7dde909621 |
Pulled StaticWeb out to separate project
StaticWeb is now at http://gholt.github.com/swift-staticweb/ For current users of StaticWeb, this will require installing the new package and changing the "use" line of the staticweb filter conf section to: use = egg:swiftstaticweb#middleware And then 'swift-init proxy reload'. Change-Id: Iab32adb5927698a667c5c6d6a572c44ca23414eb |
||
|
Brent Roskos
|
0d640971cd |
Fix related to bug #994502
Added support for configuring lock file location. added an additional error handler. Change-Id: I3635ed9694b9fb8526e0ca0591dc731da03a7128 |
||
|
Tom Fifield
|
9920aeb7d4 |
bug 661267 adding config eastereggs, fixing defaults
Change-Id: I41356ee250c9088a2387b0d493586dd990a04ac3 |
||
|
John Dickinson
|
3053c53ef7 |
added docs and warnings about using SSL
Change-Id: I766b2da0a3769869b5b6c5565106e9032fea8c3e |
||
|
David Goetz
|
40cbff9fd3 |
proxy to be able to deny request to invalid hostnames
Change-Id: I974f729da60e5ab9453daf9e52466b3e1af5c69b |
||
|
Julien Danjou
|
9a423d0b78 |
Allow to specify auth_version in swift-dispersion tools
Change-Id: I080d531471d8ea57c69a918d4f6930441f1e69f6 Signed-off-by: Julien Danjou <julien.danjou@enovance.com> |
||
|
gholt
|
0becfab629 |
Added option to disable SQLite db preallocation
Added option to disable SQLite db preallocation. This can be very useful on pure ssd account/container servers where the extra space is worth more than the lesser fragmentation. Change-Id: I8fbb028a9b6143775b25b343e97896497a8b63a9 |
||
|
John Dickinson
|
156f27c921 |
object versioning
Object versioning in swift is implemented by setting a flag on the container to tell swift to version all objects in the container. The flag is the ``X-Versions-Location`` header on the container, and its value is the container where the versions are stored. When data is ``PUT`` into a versioned container (a container with the versioning flag turned on), the existing data in the file is redirected to a new object and the data in the ``PUT`` request is saved as the data for the versioned object. The new object name (for the previous version) is ``<versions_container>/<object_name>/<timestamp>``, where the timestamp is generated by converting the ``Last-Modified`` header value of the current version to a unix timestamp. A ``GET`` to a versioned object will return the current version of the object without having to do any request redirects or metadata lookups. Change-Id: I4fcd723145e02bbb2ec1d3ad356713f5dea43b8b |
||
|
gholt
|
ac3cc680de |
Add an optional delay to account reaping.
Normally, the reaper begins deleting account information for deleted accounts immediately. With this patch you can set it to delay its work. You set the delay_reaping value in the [account-reaper] section of the account-server.conf. The value is in seconds; 2592000 = 30 days, for example. Unfortunately, there are currently zero tests for the account-reaper. This also needs fixing, but I thought I'd submit this delay patch alone for consideration. Change-Id: Ic077df9cdd95c5d3f8949dd3bbe9893cf24c6623 |
||
|
gholt
|
2c6de2ae52 |
Added optional max_containers_per_account restr...
Added optional max_containers_per_account restriction. If set to a positive value and if a client tries to perform a container PUT when at or above the max_containers_per_acount cap, a 403 Forbidden will be returned with an explanatory message. This only restricts the proxy server, not any of the background processes that might need to create containers (replication, for instance). Also, the container count is cached for the proxy's recheck_account_existence number of seconds. For these reasons, a given account could exceed this cap before the 403 Forbidden responses kick in and therefore this feature should be considered a "soft" limit. You may also add accounts to the proxy's max_containers_whitelist setting to have accounts that ignore this cap. Change-Id: I74e8fb152de5e78d070ed30006ad4e53f82c8376 |
||
|
Eamonn O'Toole
|
cf1aa3c309 |
Adds name_check filter
Bug 926048. Filter checks path for user-defined forbidden characters, and for user-defined maximum length. Includes changes to reflect gholt's latest comments to Patch Set 4 Also includes a change to a unit-test, renames another unit-test, and removes one superfluous unit-test. Added section to the example proxy config Fixed-up unit test pep8 warnings Changed error response code to 400 (Bad Request) Change-Id: Iace719d6a3d00fb3dda1b9d0bc185b8c4cbc00ca |
||
|
gholt
|
7141c52bd6 |
Remove old stats tools.
https://blueprints.launchpad.net/swift/+spec/remove-old-swift-stats-tools Change-Id: Ibb57b3d71c7f18060d2d48a1d3754a7f1444624d |
||
|
gholt
|
52ba08d67d |
Improvements to database replication.
Note: I'd like to get this released as soon as possible as it is a data durability issue. 1) Orders nodes so that none get starved (see code and footnote). 2) New max_diffs setting that caps how long the replicator will spend trying to sync a given database per pass so the other databases don't get starved. 3) Replaces run_pause with the more standard "interval", which means the replicator won't pause unless it takes less than the interval set. Change-Id: I986742229e65031df88f5251ca61746b7c8d2bde |
||
|
Florian Hines
|
5e4127ae2a |
Add json output option to swift-dispersion-report
Add's the configuration file option "dump_json" or command line options [-j|--dump-json] to have swift-dispersion-report output the report in json format. This allows the dispersion report to be more easily consumed elsewhere. There's also a few pep8 fixes and removal of unused imports. Change-Id: I2374311ccbef43e6bbae24665c9584e60f3da173 |
||
|
gholt
|
7fc1721d7d |
TempURL and FormPost Middleware
Change-Id: I8d2ce2abdfe3a44605c9441ad7b1abc6c77e282d |
||
|
gholt
|
338be6a681 |
Added memcache.conf option
Change-Id: Idfcb97421a5c1476b776acef94c7b997dab55aa9 |
||
|
gholt
|
872420efdb |
Expiring Objects Support
Please see the doc/source/overview_expiring_objects.rst for more detail. Change-Id: I4ab49e731248cf62ce10001016e0c819cc531738 |
||
|
Florian Hines
|
bb8c4eab41 |
Add documentation for Swift Recon.
Change-Id: I37f4fb624bdc5b8bbf2e691d29aa6b15cd648aa8 |
||
|
gholt
|
8c24a70139 | Merged from trunk | ||
|
gholt
|
552fa38ed1 | Doc updates | ||
|
John Dickinson
|
b3a451c832 | merged with trunk | ||
|
gholt
|
1dca388dec | Merge from trunk | ||
|
John Dickinson
|
5490c514fe | removed slogging references from docs | ||
|
gholt
|
d2230e853d | Merged from trunk | ||
|
John Dickinson
|
5949217ce1 | removed basic slogging code | ||
|
gholt
|
024df7c0f2 | Merged from trunk | ||
|
gholt
|
156b6e0c92 | Added account_autocreate mode where authorized requests to accounts that don't yet exist within Swift will cause those accounts to be automatically created. Also did a small refactor surrounding swift.common.utils.TRUE_VALUES. | ||
|
David Goetz
|
a18acc554b | merging to trunk | ||
|
gholt
|
56bafed131 | Merged from trunk | ||
|
David Goetz
|
68e5719a81 | fixing case thing and adding docs |