[FileBackend] Factored out setConcurrencyFlags() function.
authorAaron <aschulz@wikimedia.org>
Tue, 18 Sep 2012 23:04:13 +0000 (16:04 -0700)
committerAaron <aschulz@wikimedia.org>
Tue, 18 Sep 2012 23:04:30 +0000 (16:04 -0700)
* This moves some options code from FileBackend to FileBackendStore,
  where it belongs. This also allows for reuse by other operations.

Change-Id: Ic9a7d36a6e4bc6b815a7d68926105401f65c53fb

includes/filebackend/FileBackend.php
includes/filebackend/FileBackendStore.php

index 523b859..042cb67 100644 (file)
@@ -284,16 +284,6 @@ abstract class FileBackend {
                        unset( $opts['nonLocking'] );
                        unset( $opts['allowStale'] );
                }
-               $opts['concurrency'] = 1; // off
-               if ( $this->parallelize === 'implicit' ) {
-                       if ( !isset( $opts['parallelize'] ) || $opts['parallelize'] ) {
-                               $opts['concurrency'] = $this->concurrency;
-                       }
-               } elseif ( $this->parallelize === 'explicit' ) {
-                       if ( !empty( $opts['parallelize'] ) ) {
-                               $opts['concurrency'] = $this->concurrency;
-                       }
-               }
                return $this->doOperationsInternal( $ops, $opts );
        }
 
index 083dfea..5823326 100644 (file)
@@ -1016,6 +1016,7 @@ abstract class FileBackendStore extends FileBackend {
                $this->primeContainerCache( $performOps );
 
                // Actually attempt the operation batch...
+               $opts = $this->setConcurrencyFlags( $opts );
                $subStatus = FileOpBatch::attempt( $performOps, $opts, $this->fileJournal );
 
                // Merge errors into status fields
@@ -1546,6 +1547,26 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileOut( __METHOD__ . '-' . $this->name );
                wfProfileOut( __METHOD__ );
        }
+
+       /**
+        * Set the 'concurrency' option from a list of operation options
+        *
+        * @param $opts array Map of operation options
+        * @return Array
+        */
+       final protected function setConcurrencyFlags( array $opts ) {
+               $opts['concurrency'] = 1; // off
+               if ( $this->parallelize === 'implicit' ) {
+                       if ( !isset( $opts['parallelize'] ) || $opts['parallelize'] ) {
+                               $opts['concurrency'] = $this->concurrency;
+                       }
+               } elseif ( $this->parallelize === 'explicit' ) {
+                       if ( !empty( $opts['parallelize'] ) ) {
+                               $opts['concurrency'] = $this->concurrency;
+                       }
+               }
+               return $opts;
+       }
 }
 
 /**