summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Release Import of Translations from Transifex2.3.0rc22.3.0Andreas Jaeger2015-04-212-345/+539
| | | | | | | | | | | | | | | | | | Manual import of Translations from Transifex. This change also removes all po files that are less than 66 per cent translated since such partially translated files will not help users. This updates also recreates all pot (translation source files) to reflect the state of the repository. This change needs to be done manually since the automatic import does not handle the proposed branches and we need to sync with latest translations. Note: This is part of importing of translations, there are no new translations for this project, thus only the pot file gets updated. Change-Id: I0cbfdae3bd1662da54c58e91a13f49419eba9b2d
* Use reconstruct insetad of decode/encodeKota Tsuyuzaki2015-04-212-8/+41
| | | | | | | | | | | | | With bumping PyECLib up to 1.0.7 on global requirements, we can use the "reconstruct" function directly instead of the current hack doing decode/encode on reconstructor. That is because the hack was for treating PyECLib < 1.0.7 (strictly jearsure scheme) reconstruction bug so we don't have to do decode/encode anymore. Closes-Bug: 1446801 Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Change-Id: I69aae495670e3d0bdebe665f73915547a4d56f99
* Bump PyECLib version from 1.0.3 to 1.0.7Tushar Gohad2015-04-211-1/+1
| | | | | | | | | | | | In addition to fixing several bugs, 1.0.7 eliminates the need for a few work-around code in Swift. This code was only to hide issues in the current version, but it also ends up breaking some third-party integration. In order to enable expected functionality and to avoid dealing with deprecation issues right from the beginning, we need to bump the minium PyECLib requirement to 1.0.7. Closes-Bug: 1446727 Change-Id: I03e059e7335656c22be28ffd6157b56e13bdfc1b
* Don't apply the wrong Etag validation to rebuilt fragmentsClay Gerrard2015-04-214-34/+143
| | | | | | | | | | | | | | | Because of the object-server's interaction with ssync sender's X-Backend-Replication-Headers when a object (or fragment archive) is pushed unmodified to another node it's ETag value is duped into the recieving ends metadata as Etag. This interacts poorly with the reconstructor's RebuildingECDiskFileStream which can not know ahead of time the ETag of the fragment archive being rebuilt. Don't send the Etag from the local source fragment archive being used as the basis for the rebuilt fragent archive's metadata along to ssync. Closes-Bug: 1446800 Change-Id: Ie59ad93a67a7f439c9a84cd9cff31540f97f334a
* Set default branch to stable/kiloThierry Carrez2015-04-161-0/+1
| | | | | | Open stable/kilo branch by setting defaultbranch for git-review. Change-Id: I81bcda30f99173416eaaa3f1d42da32f3ab5b6d2
* fixup random test failure2.3.0rc1proposed/kiloClay Gerrard2015-04-141-1/+2
| | | | Change-Id: I053cec441623e7556d6cdfbc1d271c5cdf21aa8b
* 2.3.0 authors and changelog updatesJohn Dickinson2015-04-143-4/+75
| | | | Change-Id: I5a46437a718e2a29fd289bde7bec45db4ee873bd
* Check if REST API version is validClay Gerrard2015-04-147-10/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | Swift doesn't check if the used API version is valid. Currently there is only one valid REST API version, but that might change in the future. This patch enforces "v1" or "v1.0" as the version string when accessing account, containers and objects. The list of accepted version strings can be manually overridden using a comma-separated list in swift.conf to make this backward-compatible. The constraint loader has been modified slightly to accept strings as well as integers. Any request to an account, container, and object which does not provide the correct version string will get a 400 BadRequest response. The allowed api versions are by default excluded from /info. Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: John Dickinson <me@not.mn> Closes Bug #1437442 Change-Id: I5ab6e236544378abf2eab562ab759513d09bc256
* Add test for swift_recon.disk_usageChristian Schwede2015-04-141-0/+50
| | | | Change-Id: I4cab7aa6df3f0e1933e52ee5dbbb829f30604f10
* Add lowest option to swift-recon disk usage outputLorcan2015-04-142-3/+27
| | | | | | | | | | | | | Currently there is a "--top" option when running swift-recon for disk usage stats. This option lists the x disks with the highest disk usage in descending order. This feature adds a "--lowest" option which does the opposite and lists the y disks with lowest disk usage in ascending order. Have also updated the docs section with --top and --lowest options Change-Id: Ic15d407fe010a31995c2bdd9fb88548a1057f569
* Fix broken test_policy_IO_override testMike Fedosin2015-04-141-2/+1
| | | | | | | | | | | | | Since the existing check depends on how quickly the test passes, it causes to the unpredictable behavior and may break the test. This commit removes the unnecessary dependency on the current time and leaves only the check that timestamp is greater than 0. Change-Id: I3321e9aba0df52cb78523710b26f310f35801674 Closes-Bug: #1441599
* Merge "Refactor the getting roles logic in _keystone_identity"Jenkins2015-04-142-3/+20
|\
| * Refactor the getting roles logic in _keystone_identityHisashi Osanai2015-04-142-3/+20
| | | | | | | | | | | | | | | | | | The list_from_csv in swift.common.utils is used from the composite auth token support and this method has been used in _integral_keystone_identity. There is same logic in _keystone_identity so the logic would be replaced with list_from_csv. Change-Id: I3d72a34e6fc21fbe1d7331954695b1e3e1b67816
* | Merge "Support HTTP_X_SERVICE_IDENTITY_STATUS in keystoneauth"Jenkins2015-04-142-1/+28
|\ \ | |/
| * Support HTTP_X_SERVICE_IDENTITY_STATUS in keystoneauthDonagh McCabe2015-04-142-1/+28
| | | | | | | | | | | | | | | | | | | | Keystone's auth_token now supports delay denial when a service token is invalid. This change handles the consequences for determining 401 vs 403 responses. Related-Bug: #1422389 Change-Id: I90ba062e357cccea061c7101463b82b7c5e69293
* | Merge "Check if device name is valid when adding to the ring"Jenkins2015-04-143-2/+48
|\ \ | |/
| * Check if device name is valid when adding to the ringChristian Schwede2015-04-143-2/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently device names can be empty or start and/or end with spaces. This can create unexpected results, for example these three commands are all valid: swift-ring-builder account.builder add "r1z1-127.0.0.1:6000/" 1 swift-ring-builder account.builder add "r1z1-127.0.0.1:6000/sda " 1 swift-ring-builder account.builder add "r1z1-127.0.0.1:6000/ meta" 1 This patch validates device names and prevents empty names or names starting and/or ending with spaces. Also fixed the test "test_warn_at_risk" - the test passed if the exception was not raised. Closes-Bug: 1438579 Change-Id: I811b0eae7db503279e6429d985275bbab8b29c9f
* | Merge "Add additional func tests for TempURLs"Jenkins2015-04-141-1/+36
|\ \ | |/
| * Add additional func tests for TempURLsRichard Hawkins2015-04-141-1/+36
| | | | | | | | Change-Id: I25097c87d0a06c283b8ee5067b840f0a22776369
* | Merge "Clarify the description of backward compatibility in Keystoneauth's ↵Jenkins2015-04-141-3/+3
|\ \ | |/ |/| | | docstring"
| * Clarify the description of backward compatibility in Keystoneauth's docstringHisashi Osanai2015-03-251-3/+3
| | | | | | | | | | | | | | | | | | | | If no prefix implies for the operator_roles and/or service_roles parameters applies to all reseller_prefixes in the code. But from backward comatibility point of view, the service_roles parameter is newly introduced parameter so it is better to clarify the docstring. Change-Id: I8b0d5aeff785c21b8a8b0f5b20f774fad868016d
* | Merge EC feature into masterJohn Dickinson2015-04-1491-2922/+17219
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Co-Authored-By: Thiago da Silva <thiago@redhat.com> Co-Authored-By: John Dickinson <me@not.mn> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Tushar Gohad <tushar.gohad@intel.com> Co-Authored-By: Paul Luse <paul.e.luse@intel.com> Co-Authored-By: Samuel Merritt <sam@swiftstack.com> Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com> Change-Id: I002787f558781bd4d884129b127bc9f108ea9ec4
| * | Erasure Code Documentationfeature/ec_reviewPaul Luse2015-04-1415-151/+947
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds all the relevant EC documentation to the source tree. Notable additions are: - Updated SAIO documentation - Updates to existing swift documentation; and - Erasure Coding overview Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Co-Authored-By: Thiago da Silva <thiago@redhat.com> Co-Authored-By: John Dickinson <me@not.mn> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Tushar Gohad <tushar.gohad@intel.com> Co-Authored-By: Samuel Merritt <sam@swiftstack.com> Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com> Change-Id: I0403016a4bb7dad9535891632753b0e5e9d402eb Implements: blueprint swift-ec Signed-off-by: Thiago da Silva <thiago@redhat.com>
| * | Erasure Code Reconstructorpaul luse2015-04-1427-234/+5038
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds the erasure code reconstructor. It follows the design of the replicator but: - There is no notion of update() or update_deleted(). - There is a single job processor - Jobs are processed partition by partition. - At the end of processing a rebalanced or handoff partition, the reconstructor will remove successfully reverted objects if any. And various ssync changes such as the addition of reconstruct_fa() function called from ssync_sender which performs the actual reconstruction while sending the object to the receiver Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Co-Authored-By: Thiago da Silva <thiago@redhat.com> Co-Authored-By: John Dickinson <me@not.mn> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Tushar Gohad <tushar.gohad@intel.com> Co-Authored-By: Samuel Merritt <sam@swiftstack.com> Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com> blueprint ec-reconstructor Change-Id: I7d15620dc66ee646b223bb9fff700796cd6bef51
| * | Fix account reaper for > 3 replicasClay Gerrard2015-04-142-22/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's a pre-existing IndexError in the pop from the container node list in reaper's reap_object method for object rings with a replica count greater than the container replica count. Which is more likely on EC storage policies. When making the backend direct delete requests to the nodes once the container node's list is exhausted the generic exception handler logs the error and breaks out of any other backend object requests - but the reaper marches forward and eventually the tombstones are replicated. This change just cycles the container headers across all the nodes - which seems reasonable enough - but could certainly garner bikeshedding. Change-Id: I5897d00b0a8c1e05884945dd93d9ce891b207001
| * | Update container sync to use internal clientYuan Zhou2015-04-147-112/+334
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch changes container sync to use Internal Client instead of Direct Client. In the current design, container sync uses direct_get_object to get the newest source object(which talks to storage node directly). This works fine for replication storage policies however in erasure coding policies, direct_get_object would only return part of the object(it's encoded as several pieces). Using Internal Client can get the original object in EC case. Note that for the container sync put/delete part, it's working in EC since it's using Simple Client. Signed-off-by: Yuan Zhou <yuan.zhou@intel.com> DocImpact Change-Id: I91952bc9337f354ce6024bf8392046a1ecf6ecc9
| * | Foundational support for PUT and GET of erasure-coded objectsSamuel Merritt2015-04-1419-550/+3875
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit makes it possible to PUT an object into Swift and have it stored using erasure coding instead of replication, and also to GET the object back from Swift at a later time. This works by splitting the incoming object into a number of segments, erasure-coding each segment in turn to get fragments, then concatenating the fragments into fragment archives. Segments are 1 MiB in size, except the last, which is between 1 B and 1 MiB. +====================================================================+ | object data | +====================================================================+ | +------------------------+----------------------+ | | | v v v +===================+ +===================+ +==============+ | segment 1 | | segment 2 | ... | segment N | +===================+ +===================+ +==============+ | | | | v v /=========\ /=========\ | pyeclib | | pyeclib | ... \=========/ \=========/ | | | | +--> fragment A-1 +--> fragment A-2 | | | | | | | | | | +--> fragment B-1 +--> fragment B-2 | | | | ... ... Then, object server A gets the concatenation of fragment A-1, A-2, ..., A-N, so its .data file looks like this (called a "fragment archive"): +=====================================================================+ | fragment A-1 | fragment A-2 | ... | fragment A-N | +=====================================================================+ Since this means that the object server never sees the object data as the client sent it, we have to do a few things to ensure data integrity. First, the proxy has to check the Etag if the client provided it; the object server can't do it since the object server doesn't see the raw data. Second, if the client does not provide an Etag, the proxy computes it and uses the MIME-PUT mechanism to provide it to the object servers after the object body. Otherwise, the object would not have an Etag at all. Third, the proxy computes the MD5 of each fragment archive and sends it to the object server using the MIME-PUT mechanism. With replicated objects, the proxy checks that the Etags from all the object servers match, and if they don't, returns a 500 to the client. This mitigates the risk of data corruption in one of the proxy --> object connections, and signals to the client when it happens. With EC objects, we can't use that same mechanism, so we must send the checksum with each fragment archive to get comparable protection. On the GET path, the inverse happens: the proxy connects to a bunch of object servers (M of them, for an M+K scheme), reads one fragment at a time from each fragment archive, decodes those fragments into a segment, and serves the segment to the client. When an object server dies partway through a GET response, any partially-fetched fragment is discarded, the resumption point is wound back to the nearest fragment boundary, and the GET is retried with the next object server. GET requests for a single byterange work; GET requests for multiple byteranges do not. There are a number of things _not_ included in this commit. Some of them are listed here: * multi-range GET * deferred cleanup of old .data files * durability (daemon to reconstruct missing archives) Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Co-Authored-By: Thiago da Silva <thiago@redhat.com> Co-Authored-By: John Dickinson <me@not.mn> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Tushar Gohad <tushar.gohad@intel.com> Co-Authored-By: Paul Luse <paul.e.luse@intel.com> Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com> Change-Id: I9c13c03616489f8eab7dcd7c5f21237ed4cb6fd2
| * | Allow sending object metadata after dataSamuel Merritt2015-04-149-175/+1333
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This lets the proxy server send object metadata to the object server after the object data. This is necessary for EC, as it allows us to compute the etag of the object in the proxy server and still store it with the object. The wire format is a multipart MIME document. For sanity during a rolling upgrade, the multipart MIME document is only sent to the object server if it indicates, via 100 Continue header, that it knows how to consume it. Example 1 (new proxy, new obj server): proxy: PUT /p/a/c/o X-Backend-Obj-Metadata-Footer: yes obj: 100 Continue X-Obj-Metadata-Footer: yes proxy: --MIMEmimeMIMEmime... Example2: (new proxy, old obj server) proxy: PUT /p/a/c/o X-Backend-Obj-Metadata-Footer: yes obj: 100 Continue proxy: <obj body> Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Co-Authored-By: Thiago da Silva <thiago@redhat.com> Co-Authored-By: John Dickinson <me@not.mn> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Tushar Gohad <tushar.gohad@intel.com> Co-Authored-By: Paul Luse <paul.e.luse@intel.com> Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com> Change-Id: Id38f7e93e3473f19ff88123ae0501000ed9b2e89
| * | Per-policy DiskFile classesAlistair Coles2015-04-1419-1351/+4482
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds specific disk file classes for EC policy types. The new ECDiskFile and ECDiskFileWriter classes are used by the ECDiskFileManager. ECDiskFileManager is registered with the DiskFileRouter for use with EC_POLICY type policies. Refactors diskfile tests into BaseDiskFileMixin and BaseDiskFileManagerMixin classes which are then extended in subclasses for the legacy replication-type DiskFile* and ECDiskFile* classes. Refactor to prefer use of a policy instance reference over a policy_index int to refer to a policy. Add additional verification to DiskFileManager.get_dev_path to validate the device root with common.constraints.check_dir, even when mount_check is disabled for use in on a virtual swift-all-in-one. Co-Authored-By: Thiago da Silva <thiago@redhat.com> Co-Authored-By: John Dickinson <me@not.mn> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Tushar Gohad <tushar.gohad@intel.com> Co-Authored-By: Paul Luse <paul.e.luse@intel.com> Co-Authored-By: Samuel Merritt <sam@swiftstack.com> Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com> Change-Id: I22f915160dc67a9e18f4738c1ddf068344e8ad5d
| * | Merge "Update test infrastructure" into feature/ec_reviewJenkins2015-04-149-251/+411
| |\ \
| | * | Update test infrastructureClay Gerrard2015-04-139-251/+411
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Get FakeConn ready for expect 100 continue * Use debug_logger more and with better interfaces * Fix patch_policies to be less annoying Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Co-Authored-By: Thiago da Silva <thiago@redhat.com> Co-Authored-By: Tushar Gohad <tushar.gohad@intel.com> Co-Authored-By: Paul Luse <paul.e.luse@intel.com> Co-Authored-By: Samuel Merritt <sam@swiftstack.com> Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com> Change-Id: I28c0a3539d994cbb8e6b94d63a23ed4ea6cb956d
| * | | Merge "Add support for policy types, 'erasure_coding' policy" into ↵Jenkins2015-04-1416-116/+917
| |\ \ \ | | |/ / | | | | | | | | feature/ec_review
| | * | Add support for policy types, 'erasure_coding' policyTushar Gohad2015-04-138-104/+779
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch extends the StoragePolicy class for non-replication storage policies, the first one being "erasure coding". Changes: - Add 'policy_type' support to BaseStoragePolicy class - Disallow direct instantiation of BaseStoragePolicy class - Subclass BaseStoragePolicy - "StoragePolicy": . Replication policy, default . policy_type = 'replication' - "ECStoragePolicy": . Erasure Coding policy . policy_type = 'erasure_coding' . Private member variables ec_type (EC backend), ec_num_data_fragments (number of fragments original data split into after erasure coding operation), ec_num_parity_fragments (number of parity fragments generated during erasure coding) . Private methods EC specific attributes and ring validator methods. - Swift will use PyECLib, a Python Erasure Coding library, for erasure coding operations. PyECLib is already an approved OpenStack core requirement. (https://bitbucket.org/kmgreen2/pyeclib/) - Add test cases for - 'policy_type' StoragePolicy member - policy_type == 'erasure_coding' DocImpact Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Co-Authored-By: Thiago da Silva <thiago@redhat.com> Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Paul Luse <paul.e.luse@intel.com> Co-Authored-By: Samuel Merritt <sam@swiftstack.com> Co-Authored-By: Christian Schwede <christian.schwede@enovance.com> Co-Authored-By: Yuan Zhou <yuan.zhou@intel.com> Change-Id: Ie0e09796e3ec45d3e656fb7540d0e5a5709b8386 Implements: blueprint ec-proxy-work
| * | | make `git review` easierJohn Dickinson2015-04-011-0/+1
| | | | | | | | | | | | | | | | Change-Id: I6032a7915586db6da25aafccf3dced581b37df9c
* | | | Prevent unauthorized delete in versioned containerJohn Dickinson2015-04-133-6/+129
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An authenticated user can delete the most recent version of any versioned object who's name is known if the user has listing access to the x-versions-location container. Only Swift setups with allow_version setting are affected. This patch closes this bug, tracked as CVE-2015-1856 Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Christian Schwede <info@cschwede.de> Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Closes-Bug: 1430645 Change-Id: Ibacc7413afe7cb6f77d92e5941dcfdf4768ffa18
* | | Merge "Set connection timeout in container sync"Jenkins2015-04-134-4/+31
|\ \ \
| * | | Set connection timeout in container syncChristian Schwede2015-04-104-4/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Container sync might get stuck without a connection timeout if the remote proxy is not responding. This patch sets a default timeout of 5.0 seconds for the connection attempt. The value is much higher than other connection timeouts inside Swift (0.5); however there might be a much higher latency to the remote peer, thus playing it safe. There is also a retry if the attempt timed out. Note that this setting only applies to the connection request itself. Setting this timeout does not apply when the remote proxy goes away during a request. Also added a short test to ensure urlopen is called with the timeout value. Co-Authored-By: Alistair Coles <alistair.coles@hp.com> Change-Id: Ic08a55157fa91fe1316653781adf4d66eead61bc Partial-Bug: 1419916
* | | | Merge "Add some debug output to the ring builder"Jenkins2015-04-054-8/+93
|\ \ \ \
| * | | | Add some debug output to the ring builderSamuel Merritt2015-03-304-8/+93
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Sometimes, I get handed a builder file in a support ticket and a question of the form "why is the balance [not] doing $thing?". When that happens, I add a bunch of print statements to my local swift/common/ring/builder.py, figure things out, and then delete the print statements. This time, instead of deleting the print statements, I turned them into debug() calls and added a "--debug" flag to the rebalance command in hopes that someone else will find it useful. Change-Id: I697af90984fa5b314ddf570280b4585ba0ba363c
* | | | Merge "Tighten up recon middleware unit tests"Jenkins2015-04-051-0/+14
|\ \ \ \ | |/ / / |/| | |
| * | | Tighten up recon middleware unit testsAlistair Coles2015-03-191-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a test for get_expirer_info() and tightens up the test for get_async_info(). While reviewing [1] I noticed that the existing tests on master will not catch a bug creeping into the arg strings that these methods pass to from_recon_cache(). [1] https://review.openstack.org/#/c/163889 Change-Id: Iee6f12aeff684d70435dbeea769ccc181021be79
* | | | Add Swift Design Principles to CONTRIBUTING.mdClay Gerrard2015-03-271-0/+23
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is based of work started a few design summits ago [1]. With EC getting close I felt like I could the inspiration. 1. https://etherpad.openstack.org/p/juno_swift_core_principles Change-Id: I90fa56d67003080fe3d7bc4e0fad053e3b0c8504 Signed-off-by: Thiago da Silva <thiago@redhat.com>
* | | Merge "Bump eventlet version to 0.16.1"Jenkins2015-03-251-1/+1
|\ \ \
| * | | Bump eventlet version to 0.16.1Tushar Gohad2015-03-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This version adds support for multiple 100-continue responses via the API send_hundred_continue_response(), which we need for the two-phase scheme for PUTs with Erasure Coding Change-Id: I7154ef1dd96ab761894b09d5e6abf98a453f7b64
* | | | Merge "Handle ENOSPC in mkstemp()"Jenkins2015-03-253-6/+54
|\ \ \ \
| * | | | Handle ENOSPC in mkstemp()Prashanth Pai2015-03-053-6/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mkstemp() can fail with ENOSPC when filesystem runs out of inodes. And fallocate() used to raise DiskFileNoSpace for all OSErrors. Change-Id: I8c95cb710107d8e481d068b00eda53dd805c00a5 Signed-off-by: Prashanth Pai <ppai@redhat.com>
* | | | | Merge "Fix common misspellings"Jenkins2015-03-255-9/+10
|\ \ \ \ \
| * | | | | Fix common misspellingsMartin Kletzander2015-03-245-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wikipedia's list of common misspellings [1] has a machine-readable version. This patch fixes those misspellings mentioned in the list which don't have multiple right variants (as e.g. "accension", which can be both "accession" and "ascension"), such misspellings are left untouched. The list of changes was manually re-checked for false positives. [1] https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines Change-Id: Ic9a5438629664f7cea216413a28acc0e8992da05 Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
* | | | | | Merge "Imported Translations from Transifex"Jenkins2015-03-242-62/+38
|\ \ \ \ \ \
| * | | | | | Imported Translations from TransifexOpenStack Proposal Bot2015-03-242-62/+38
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For more information about this automatic import see: https://wiki.openstack.org/wiki/Translations/Infrastructure Change-Id: I6ae0dd0c34ac1d7173acacdd0dd4896619592e0c