1ccb5c61f459d9e70e9ba5698686065429d91afb
Commit Graph

3327 Commits

This Branch
This Branch
All Branches
Author SHA1 Message Date
Peter Portante
1ccb5c61f4 Allow access to the in-memory object server
This will allow functional tests to be used against it, and can then
be used for the storage-policy work as an example diskfile
implementation associated with a storage policy.
Change-Id: I47a88e70cee99225779baaed379b0c5d4c73611a
2013年12月05日 10:21:42 -05:00
Jenkins
30c0c086f9 Merge "use diskfile in ssync_sender tests" 2013年12月05日 13:05:02 +00:00
Jenkins
fd167982e0 Merge "Remove ssync iter_hook usage" 2013年12月05日 01:54:32 +00:00
Clay Gerrard
b57fd4343f use diskfile in ssync_sender tests
Change-Id: I7993de98ce3eb4839fa5d72d1b6ce08e4a7c1451
2013年12月03日 21:12:19 -08:00
Jenkins
47c65386dd Merge "Fixed DB test cases on PyPy" 2013年12月04日 04:19:58 +00:00
gholt
f5ba1ca1f9 Remove ssync iter_hook usage
Apparently that disappeared and now the whole thing does on its own what this
was trying to achieve.
Change-Id: If20016cb80c855e3e8373de5d56926ef8f8e7dac
2013年12月03日 19:27:12 -08:00
Jenkins
341fe7fd92 Merge "Add option to return disk usage report with byte suffix." 2013年12月03日 20:52:18 +00:00
Jenkins
723553e94f Merge "GreenDBConnection no longer assumes that arguments are kwargs" 2013年12月03日 18:37:22 +00:00
Christian Schwede
33706cb974 Add option to return disk usage report with byte suffix.
Disk usage is currently returned as bytes. This patch adds the option
to return the value with a more human-friendly suffix, eg. MB/GB/TB/PB.
Change-Id: I3d55181f7e6085e711bd6e09ea2ce0a12b290cc5
2013年12月03日 16:29:00 +00:00
Jenkins
645d1c93c5 Merge "Add accurate timestamps in proxy log" 2013年12月03日 03:51:42 +00:00
Jenkins
80a9f7013a Merge "Some functional tests for dynamic large objects" 2013年12月03日 01:36:17 +00:00
Jenkins
06d8607158 Merge "Expose bulk-operation limits in /info." 2013年12月03日 01:36:08 +00:00
Alex Gaynor
9b38463b06 Fixed DB test cases on PyPy
They weren't working because of the intersection between some monkey
patching in the tests and the fact that ``sqlite3.Connection`` and
``Cursor`` are Python classes on PyPy, but C-extension classes on
CPython. The result was that trying to call the superclass's init
didn't work because the name ``sqlite3.Connection`` pointed to a
different class that wasn't actually the real superclass of
``GreenDBConnection``. Using ``super`` fixes this because the method
called is now always the real superclass's.
Change-Id: Ib45b16c7499883e560877788f13285d0a47cc2cd
2013年12月02日 14:24:22 -06:00
Peter Portante
bdcf6adc28 Remove Python 3.3 from list of tox environments
Remove Python 3.3 from the list of tox test environments since we do
not currently support Python 3.3 for swift.
Change-Id: I7993a511e8433b21b292f21f4775e4ef2b5c2539
2013年12月02日 13:54:40 -05:00
Alex Gaynor
93d63dcf75 GreenDBConnection no longer assumes that arguments are kwargs
Previous this code assumed that almost all arguments would be passed
as kwargs. Now the code also handles ``timeout`` occurring in
``*args``. This is needed because on PyPy's sqlite module, they are
passed in ``*args``.
Change-Id: I7ce25e7b262c6f46680e3f0eb391094de8051946
2013年12月02日 12:43:59 -06:00
Samuel Merritt
69102b5015 Some functional tests for dynamic large objects
Change-Id: Id9f6c7e26ed9760372d2bfc9a1ffa3f8ae3d5861
2013年12月02日 09:45:29 -08:00
Samuel Merritt
0d45e99ff0 Expose bulk-operation limits in /info.
These will allow clients to perform the minimal number of requests
required to accomplish some bulk tasks. For example, a client with
many objects to delete can learn that the cluster's limit on
deletes-per-request is, say, 128, and then batch up their deletes in
groups of 128. Without this, the client has to either discover the
limit out-of-band somehow (and get notified if it changes), or do some
sort of binary search to figure out the limit.
Similar reasoning applies to the containers-per-request value.
The errors-per-request values are included so that clients may size
their requests such that everything is attempted regardless of
failure.
I split the 'bulk' entry into 'bulk_delete' and 'bulk_upload' because,
from a client's standpoint, they're separate operations. It so happens
that Swift implements both in one piece of middleware, but clients
don't care.
Bonus fix: documented a missing config setting for the bulk middleware.
Change-Id: Ic3549aef79682fd5b798145c3545c1609aa1592b
2013年11月30日 11:09:34 -08:00
Jenkins
73b0df1ead Merge "Report transaction ID in failure exceptions" 2013年11月28日 17:23:36 +00:00
Jenkins
d412f6c05d Merge "Protect against hash cleanup errors on PUTs" 2013年11月28日 02:08:06 +00:00
Samuel Merritt
8a64bff2dc Report transaction ID in failure exceptions
This way, when something fails in Jenkins, you have some chance of
searching the logs for the relevant transaction.
Change-Id: I3cf606cb4963e32b5c6ac3deda08e73541b3ff7d
2013年11月27日 17:25:16 -08:00
Jenkins
438596fc0f Merge "in case you lose your builder backups" 2013年11月28日 01:24:46 +00:00
Jenkins
053bdd4f8b Merge "workaround probetest race from early response" 2013年11月28日 01:23:41 +00:00
Peter Portante
d4e02a2e8b Add accurate timestamps in proxy log
Add accurate timestamps to the proxy-logging middleware log lines for
the start and end of a request. We use 9 digits of precision since on
some systems the clock resolution can be as fine as 1 ns.
The goal is to allow for log processing that can use the more accurate
timestamps to correlate requests, computing number of requests in
flight at a given historical point in time.
Change-Id: I61e8784b1c455d629f1299207fc4fc7e4a134814
Signed-off-by: Peter Portante <peter.portante@redhat.com>
2013年11月27日 20:21:54 -05:00
Jenkins
6cd32eb3a9 Merge "Remove unnecessary "is not None" check" 2013年11月28日 01:01:41 +00:00
Jenkins
7171a8e680 Merge "test: improve db_replicator coverage" 2013年11月28日 00:59:01 +00:00
Jenkins
7cc009735a Merge "Add a unit test to verify proxy logging fields" 2013年11月28日 00:20:22 +00:00
Jenkins
669d22bf6b Merge "Push cooperative sleep call down into ThreadPool" 2013年11月28日 00:16:21 +00:00
Jenkins
04f3a4e4bd Merge "Report path information in failure exceptions" 2013年11月28日 00:16:14 +00:00
Jenkins
34b4bf34d2 Merge "Added discoverable capabilities." 2013年11月28日 00:11:35 +00:00
Jenkins
53a79c9651 Merge "Account for a platform difference in semaphores" 2013年11月27日 21:38:04 +00:00
Peter Portante
e0147e60d8 Add a unit test to verify proxy logging fields
Also bring unit test coverage to 100% (well, at least every line is
reported as "covered").
Change-Id: I659d0c02008368897b1307a7a5c9aaba73b80588
Signed-off-by: Peter Portante <peter.portante@redhat.com>
2013年11月27日 16:19:51 -05:00
Jenkins
7ea00f30bc Merge "Reorganize SLO unit tests" 2013年11月27日 21:09:41 +00:00
Alex Gaynor
87cd559847 Account for a platform difference in semaphores
On OS X (and probably other Operating Systems) it isn't possible to
introspect the value of a semaphore. Account for this by skipping a
test about this.
Change-Id: I97824f9fc4e36de4f7a62c8ce53865e6977dfdfe
2013年11月27日 14:34:06 -06:00
Peter Portante
3c7c355120 Use TCP_NODELAY for created sockets.
Mark Seger at HP has been looking at small objects, 1 and 2 KB size,
and with Rick Jones' help noticed that TCP protocol traces showed
effects from the Nagel algorithm client-to-server and
server-to-client.
This patch just addresses our WSGI server responses, but does not
address out-bound connections from the various servers.
Change-Id: I11f86df1f56fba1c6ab6084dc1f580c395f072dc
Signed-off-by: Peter Portante <peter.portante@redhat.com>
2013年11月27日 14:07:02 -05:00
Jenkins
4d6a9bfee1 Merge "Some functional tests for static large objects" 2013年11月27日 18:20:51 +00:00
Jenkins
8e7925dcd1 Merge "Add HTML reporting for test branch coverage." 2013年11月27日 18:00:00 +00:00
Jenkins
a1f8b190dc Merge "Fix bug in obj updater run_once()." 2013年11月27日 17:52:49 +00:00
Darrell Bishop
39032c359f Add HTML reporting for test branch coverage.
When including branch coverage results, also generate HTML reports into
a "cover" subdirectory under the directory in which .unittests resides
(i.e. known location at the top of the swift tree).
Change-Id: I493d74f38755f7bf0d7043052585efb27840b238
2013年11月27日 12:07:42 -05:00
Jenkins
d8e46eba47 Merge "slightly less early quorum" 2013年11月27日 15:59:37 +00:00
Darrell Bishop
0ba071f27c Fix bug in obj updater run_once().
The "not" in front of the ismount() call got accidentally dropped in a
recent change. This patch adds it back along with a few more tests.
Note that this bug only showed up on an SAIO during probe tests because
I used actually-mounted (virtual) "disks". So keep that in mind when
building SAIOs for development/testing.
Change-Id: Ia193f3c4b73203605954036863575c22ddab6b03
2013年11月27日 00:37:02 -05:00
Peter Portante
edc9f62ed6 Report path information in failure exceptions
When an error occurs during functional tests that use the
swift_test_client module, the reported error message includes the
method and path:
 ResponseError: 500: 'Internal Error' ('HEAD' \
 '/v1/AUTH_test/d5ce...')
Change-Id: I631cd9e83879fb644778d4ded62625483bf38045
2013年11月26日 23:34:12 -05:00
Jenkins
fa8eef4b3f Merge "bare excepts, as is proper" 2013年11月27日 01:57:28 +00:00
Jenkins
2ce0e62c31 Merge "add bare except to catch errors" 2013年11月26日 22:57:52 +00:00
John Dickinson
71d1805683 bare excepts, as is proper
Change-Id: Ifd28f6f14a781a67644315690491888161a7250c
2013年11月26日 14:39:30 -08:00
Jenkins
9248c91f6d Merge "Use upstream patched Pool.get" 2013年11月26日 21:47:31 +00:00
John Dickinson
cdb6cd830a add bare except to catch errors
Change-Id: Ibe78912cf923591bddd6a8cf0e683cd028c9c4e8
2013年11月26日 14:03:30 -05:00
Peter Portante
853853edce Push cooperative sleep call down into ThreadPool
The PUT REST API has no idea how writes are performed, so when thread
pools are in use, the sleep is not necessary, though it is still
necessary when thread pools are not in use. Since the ThreadPool
object knows when threads are actually in use, it can take care of
being cooperative with the eventlet hub.
In addition, we can hide the cooperative iterator hook, given that the
only other consumer of this was the auditor, which does not need it
any longer. The only consumer of the DiskFile class that wants the
cooperative behavior is the REST API layer of the object server, which
is also using thread pools.
Change-Id: Ibc4ac672899f9a35fd68c85d7f56403c19b4f991
Signed-off-by: Peter Portante <peter.portante@redhat.com>
2013年11月26日 18:04:27 +00:00
Peter Portante
6e313e957d Fix for memcache middleware configuration
The documentation rightly said to use "memcache_max_connections", but
the code was looking for "max_connections", and only looking for it in
proxy-server.conf, not in memcache.conf as a fall back.
This commit brings the code coverage for the memcache middleware to
100%.
Closes-Bug: 1252893
Change-Id: I6ea64baa2f961a09d60b977b40d5baf842449ece
Signed-off-by: Peter Portante <peter.portante@redhat.com>
2013年11月26日 18:03:33 +00:00
Peter Portante
15c31c0373 Remove unnecessary "is not None" check
From a review comment on https://review.openstack.org/30051 remove
the "is not None" check, as the assignment in the try block will
never assign None as value as the int() built-in will not return it.
There was some concern of long-term maintenance of the DiskFile
class's _quarantine method raising exceptions. If that routine were
ever mistakenly changed to NOT raise an exception, subtle problems
could creep into the code (see https://review.openstack.org/53237).
We address this concern by raising an exception explicitly at the
call sites of DiskFile._quarantine().
Change-Id: I1729a2d77a6b72b4494b24a8838b47ad5272c075
Signed-off-by: Peter Portante <peter.portante@redhat.com>
2013年11月26日 12:59:48 -05:00
Peter Portante
2c0bbaf05c Protect against hash cleanup errors on PUTs
In http://launchpad.net/bugs/1254405 an exception occurs when
finalizing the PUT of an object, but it is obscured by the thread pool
code, so we don't see the actual line where it originated. However,
there are two possible functions where this exception could originate:
 1. renamer()
 2. hash_cleanup_listdir()
If this is an error in renamer(), there is some other waky problem
where the temporary file has been removed. It is likely that this is a
problem where a file name from os.listdir ends up disappearing (but
even this is a rare occurence). Regardless, it is not clear that we
really want an error from hash_cleanup_listdir() from affecting the
return result of the PUT.
To that end, we squelsh OSErrors from hash_cleanup_listdir() for
now. One might argue for all errors, but since os.unlink() and
os.listdir() raise OSError today, that is probably sufficient.
Even that we use "Closes-Bug" below, it is not clear it can even be
determined that this closes that bug report.
Change-Id: I2f55df835c387e4d17cffda74c04c9994aebbe1f
Closes-Bug: 1254405
Signed-off-by: Peter Portante <peter.portante@redhat.com>
2013年11月26日 10:31:43 -05:00