jenkins-bot has submitted this change and it was merged.
Change subject: Fixes and cleanups to FileOpBatch
......................................................................
Fixes and cleanups to FileOpBatch
* Fixed bug where operations that failed after precheck() would
not properly update the Status. This could cause failed ops to
be treated as successful.
* Removed special casing for 1-sized batches, this was mostly
for Swift and is irrelevant after it was rewritten.
* Removed unused return value and fixed the docs
bug: 60318
Change-Id: I7f12ebf711bc196313745f943070f8bdb6335964
---
M includes/filebackend/FileOpBatch.php
1 file changed, 4 insertions(+), 11 deletions(-)
Approvals:
Tim Starling: Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/filebackend/FileOpBatch.php
b/includes/filebackend/FileOpBatch.php
index 9fd1eb5..b42e140 100644
--- a/includes/filebackend/FileOpBatch.php
+++ b/includes/filebackend/FileOpBatch.php
@@ -141,9 +141,8 @@
* within any given sub-batch do not depend on each other.
* This will abort remaining ops on failure.
*
- * @param array $pPerformOps
+ * @param array $pPerformOps Batches of file ops (batches use original
indexes)
* @param Status $status
- * @return bool Success
*/
protected static function runParallelBatches( array $pPerformOps,
Status $status ) {
$aborted = false; // set to true on unexpected errors
@@ -164,12 +163,8 @@
// If attemptAsync() returns a Status, it was either
due to an error
// or the backend does not support async ops and did it
synchronously.
foreach ( $performOpsBatch as $i => $fileOp ) {
- if ( !$fileOp->failed() ) { // failed =>
already has Status
- // If the batch is just one operation,
it's faster to avoid
- // pipelining as that can involve
creating new TCP connections.
- $subStatus = ( count( $performOpsBatch
) > 1 )
- ? $fileOp->attemptAsync()
- : $fileOp->attempt();
+ if ( !isset( $status->success[$i] ) ) { //
didn't already fail in precheck()
+ $subStatus = $fileOp->attemptAsync();
if ( $subStatus->value instanceof
FileBackendStoreOpHandle ) {
$opHandles[$i] =
$subStatus->value; // deferred
} else {
@@ -181,7 +176,7 @@
$statuses = $statuses +
$backend->executeOpHandlesInternal( $opHandles );
// Marshall and merge all the responses (blocking)...
foreach ( $performOpsBatch as $i => $fileOp ) {
- if ( !$fileOp->failed() ) { // failed =>
already has Status
+ if ( !isset( $status->success[$i] ) ) { //
didn't already fail in precheck()
$subStatus = $statuses[$i];
$status->merge( $subStatus );
if ( $subStatus->isOK() ) {
@@ -195,7 +190,5 @@
}
}
}
-
- return $status;
}
}
--
To view, visit https://gerrit.wikimedia.org/r/111111
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I7f12ebf711bc196313745f943070f8bdb6335964
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Tim Starling <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits