Do not use pickle for serialization in memcache, but JSON

We don't want to use pickle as it can execute arbitrary code. JSON is
safer. However, note that it supports serialization for only some
specific subset of object types; this should be enough for what we need,
though.

To avoid issues on upgrades (unability to read pickled values, and cache
poisoning for old servers not understanding JSON), we add a
memcache_serialization_support configuration option, with the following
values:

 0 = older, insecure pickle serialization
 1 = json serialization but pickles can still be read (still insecure)
 2 = json serialization only (secure and the default)

To avoid an instant full cache flush, existing installations should
upgrade with 0, then set to 1 and reload, then after some time (24
hours) set to 2 and reload. Support for 0 and 1 will be removed in
future versions.

Part of bug 1006414.

Change-Id: Id7d6d547b103b4f23ebf5be98b88f09ec6027ce4
Fix when rate_limit_after_segment kicks in.

If rate_limit_after_segment was 10 in the proxy config, then after 10
segments were coughed up by _load_next_segment() with no calls to
sleep(), the 11th segment would not trigger a sleep() call.  The 12th
segment triggered a sleep(0) call, but it was only after the 13th
segment was loaded that an actual rate-limiting (non-zero) sleep got
called.

With this patch, a rate_limit_after_segment of 10 will start sleeping
the correct amount after the 11th segment.

Updated proxy-server.conf-sample with rate_limit_after_segment and
rate_limit_segments_per_sec.

Change-Id: I937c366996e6d6ab47c614d6db470e3be9657c07
Remove redefinition of import traceback

Removed the redefinition of import in swift/object/server.py
Add my name in AUTHORS

Change-Id: Ia74df662de08fc52b92b828978d96a22b5df5597
Merge "Remove redefinition of import traceback"
Misc. swift-bench improvements.

swift-bench now honors the environment variables, ST_AUTH, ST_USER, and
ST_KEY like python-swiftclient does.

Added --lower-object-size (or -l) command-line option which, if
specified, will turn a specified --object-size into --upper-object-size.
It will raise a ValueError if --object-size is not specified or is <=
--lower-object-size.

BenchController how handles SIGINT (KeyboardInterrupt) similarly to the
swift command-line client: the first Ctrl-C will make it fast-track to
completion (no new PUT or GET operations are started, but everything PUT
is DELETE'ed).  A second Ctrl-C will immediately exit.  The behavior for
SIGTERM is unchanged (a single SIGTERM will immediately terminate the
process).

Added a sample configuration file for swift-bench, with documenting
comments.

Change-Id: I6f394ad995300fc8af3d565d95c3b45559ee510a
x-newest cleanup code with test. Fixes bug 1037337

Change-Id: Ie99250250171246e8c13e8d8c8258101bd78cce4
fallocate call error handling

fallocate() failures properly return HTTPInsufficientStorage from
object-server before reading from wsgi.input, allowing the proxy
server to error_limit that node.

Change-Id: Idfc293bbab2cff1e508edf58045108ca1ef5cec1
Merge "x-newest cleanup code with test. Fixes bug 1037337"
Merge "Do not use pickle for serialization in memcache, but JSON"
Merge "Misc. swift-bench improvements."