MediaWiki master
|
FileBackend helper class for representing operations. More...
Inherited by Wikimedia\FileBackend\FileOps\CopyFileOp, Wikimedia\FileBackend\FileOps\CreateFileOp, Wikimedia\FileBackend\FileOps\DeleteFileOp, Wikimedia\FileBackend\FileOps\DescribeFileOp, Wikimedia\FileBackend\FileOps\MoveFileOp, Wikimedia\FileBackend\FileOps\NullFileOp, and Wikimedia\FileBackend\FileOps\StoreFileOp.
Public Member Functions | |
__construct (FileBackendStore $backend, array $params, LoggerInterface $logger) | |
Build a new batch file operation transaction. | |
applyDependencies (array $deps) | |
Update a dependency tracking array to account for this operation. | |
attempt () | |
Attempt the operation. | |
attemptAsync () | |
Attempt the operation in the background. | |
attemptAsyncQuick () | |
Attempt the operation in the background without regards to prechecks. | |
attemptQuick () | |
Attempt the operation without regards to prechecks. | |
dependsOn (array $deps) | |
Check if this operation changes files listed in $paths. | |
failed () | |
Check if this operation failed precheck() or attempt() | |
getBackend () | |
Get the backend this operation is for. | |
getParam ( $name) | |
Get the value of the parameter with the given name. | |
logFailure ( $action) | |
Log a file operation failure and preserve any temp files. | |
precheck (FileStatePredicates $predicates) | |
Do a dry-run precondition check of the operation in the context of op batch. | |
storagePathsChanged () | |
Get a list of storage paths written to for this operation. | |
storagePathsRead () | |
Get a list of storage paths read from for this operation. | |
storagePathsReadOrChanged () | |
Get a list of storage paths read from or written to for this operation. | |
Static Public Member Functions | |
static | newDependencies () |
Get a new empty dependency tracking array for paths read/written to. | |
Protected Member Functions | |
allowedParams () | |
Get the file operation parameters. | |
doAttempt () | |
doPrecheck (FileStatePredicates $opPredicates, FileStatePredicates $batchPredicates) | |
Do a dry-run precondition check of the operation in the context of op batch. | |
precheckDestExistence (FileStatePredicates $opPredicates, $sourceSize, $sourceSha1) | |
Check for errors with regards to the destination file already existing. | |
resolveFileExistence ( $source, FileStatePredicates $opPredicates) | |
Check if a file will exist in storage when this operation is attempted. | |
resolveFileSha1Base36 ( $source, FileStatePredicates $opPredicates) | |
Get the SHA-1 of a file in storage when this operation is attempted. | |
resolveFileSize ( $source, FileStatePredicates $opPredicates) | |
Get the size a file in storage will have when this operation is attempted. | |
setFlags (array $params) | |
Adjust params to FileBackendStore internal file calls. | |
Static Protected Member Functions | |
static | normalizeIfValidStoragePath ( $path) |
Normalize a string if it is a valid storage path. | |
Protected Attributes | |
bool | $async = false |
Whether the operation is part of a concurrent sub-batch of operation. | |
FileBackendStore | $backend |
bool null | $destExists |
bool | $failed = false |
Whether the operation pre-check or attempt stage failed. | |
LoggerInterface | $logger |
bool | $noOp = false |
Whether the operation pre-check stage marked the attempt stage as a no-op. | |
bool null | $overwriteSameCase |
array | $params = [] |
int | $state = self::STATE_NEW |
Stage in the operation life-cycle. | |
FileBackend helper class for representing operations.
Do not use this class from places outside FileBackend.
Methods called from FileOpBatch::attempt() should avoid throwing exceptions at all costs. FileOp objects should be lightweight in order to support large arrays in memory and serialization.
Definition at line 46 of file FileOp.php.
|
final |
Build a new batch file operation transaction.
FileBackendStore | $backend | |
array | $params | |
LoggerInterface | $logger | PSR logger instance |
Definition at line 83 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\$backend, Wikimedia\FileBackend\FileOps\FileOp\$logger, Wikimedia\FileBackend\FileOps\FileOp\$params, Wikimedia\FileBackend\FileOps\FileOp\allowedParams(), and Wikimedia\FileBackend\FileOps\FileOp\normalizeIfValidStoragePath().
|
protected |
Get the file operation parameters.
Reimplemented in Wikimedia\FileBackend\FileOps\CopyFileOp, Wikimedia\FileBackend\FileOps\CreateFileOp, Wikimedia\FileBackend\FileOps\DeleteFileOp, Wikimedia\FileBackend\FileOps\DescribeFileOp, Wikimedia\FileBackend\FileOps\MoveFileOp, and Wikimedia\FileBackend\FileOps\StoreFileOp.
Definition at line 308 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\__construct().
|
final |
Update a dependency tracking array to account for this operation.
array | $deps | Prior path reads/writes; format of FileOp::newDependencies() |
Definition at line 159 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\storagePathsChanged(), and Wikimedia\FileBackend\FileOps\FileOp\storagePathsRead().
|
final |
Attempt the operation.
Definition at line 241 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\doAttempt(), Wikimedia\FileBackend\FileOps\FileOp\failed(), and Wikimedia\FileBackend\FileOps\FileOp\logFailure().
Referenced by Wikimedia\FileBackend\FileOps\FileOp\attemptAsync(), and Wikimedia\FileBackend\FileOps\FileOp\attemptQuick().
|
final |
Attempt the operation in the background.
Definition at line 273 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\attempt().
Referenced by Wikimedia\FileBackend\FileOps\FileOp\attemptAsyncQuick().
|
final |
Attempt the operation in the background without regards to prechecks.
Definition at line 297 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\attemptAsync().
|
final |
Attempt the operation without regards to prechecks.
Definition at line 286 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\attempt().
|
final |
Check if this operation changes files listed in $paths.
array | $deps | Prior path reads/writes; format of FileOp::newDependencies() |
Definition at line 172 of file FileOp.php.
References $path, Wikimedia\FileBackend\FileOps\FileOp\storagePathsChanged(), and Wikimedia\FileBackend\FileOps\FileOp\storagePathsRead().
|
protected |
Reimplemented in Wikimedia\FileBackend\FileOps\CopyFileOp, Wikimedia\FileBackend\FileOps\CreateFileOp, Wikimedia\FileBackend\FileOps\DeleteFileOp, Wikimedia\FileBackend\FileOps\DescribeFileOp, Wikimedia\FileBackend\FileOps\MoveFileOp, and Wikimedia\FileBackend\FileOps\StoreFileOp.
Definition at line 264 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\attempt().
|
protected |
Do a dry-run precondition check of the operation in the context of op batch.
Updates the batch predicates for all paths this op can change if an OK status is returned
FileStatePredicates | $opPredicates | Counterfactual file states for op paths at op start |
FileStatePredicates | $batchPredicates | Counterfactual file states for the op batch |
Reimplemented in Wikimedia\FileBackend\FileOps\CopyFileOp, Wikimedia\FileBackend\FileOps\CreateFileOp, Wikimedia\FileBackend\FileOps\DeleteFileOp, Wikimedia\FileBackend\FileOps\DescribeFileOp, Wikimedia\FileBackend\FileOps\MoveFileOp, and Wikimedia\FileBackend\FileOps\StoreFileOp.
Definition at line 229 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\precheck().
|
final |
Check if this operation failed precheck() or attempt()
Definition at line 140 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\$failed.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\attempt(), and Wikimedia\FileBackend\FileOps\FileOp\precheck().
Wikimedia\FileBackend\FileOps\FileOp::getBackend | ( | ) |
Get the backend this operation is for.
Definition at line 462 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\$backend.
|
final |
Get the value of the parameter with the given name.
string | $name |
Definition at line 131 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\CopyFileOp\doAttempt(), Wikimedia\FileBackend\FileOps\MoveFileOp\doAttempt(), Wikimedia\FileBackend\FileOps\CopyFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\DeleteFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\MoveFileOp\doPrecheck(), and Wikimedia\FileBackend\FileOps\FileOp\precheckDestExistence().
|
final |
Log a file operation failure and preserve any temp files.
string | $action |
Definition at line 471 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\attempt().
|
staticfinal |
Get a new empty dependency tracking array for paths read/written to.
Definition at line 149 of file FileOp.php.
|
staticprotected |
Normalize a string if it is a valid storage path.
string | $path |
Definition at line 115 of file FileOp.php.
References $path, Wikimedia\FileBackend\FileBackend\isStoragePath(), and Wikimedia\FileBackend\FileBackend\normalizeStoragePath().
Referenced by Wikimedia\FileBackend\FileOps\FileOp\__construct().
|
final |
Do a dry-run precondition check of the operation in the context of op batch.
Updates the batch predicates for all paths this op can change if an OK status is returned
FileStatePredicates | $predicates | Counterfactual file states for the op batch |
Definition at line 195 of file FileOp.php.
References $path, Wikimedia\FileBackend\FileOps\FileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\FileOp\failed(), Wikimedia\FileBackend\FileOps\FileStatePredicates\snapshot(), and Wikimedia\FileBackend\FileOps\FileOp\storagePathsReadOrChanged().
|
protected |
Check for errors with regards to the destination file already existing.
Also set the destExists and overwriteSameCase member variables. A bad StatusValue will be returned if there is no chance it can be overwritten.
FileStatePredicates | $opPredicates | Counterfactual storage path states for this op |
int | false | Closure | $sourceSize | Source size or idempotent function yielding the size |
string | Closure | $sourceSha1 | Source hash, or, idempotent function yielding the hash |
Definition at line 362 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\getParam(), Wikimedia\FileBackend\FileOps\FileOp\resolveFileExistence(), Wikimedia\FileBackend\FileOps\FileOp\resolveFileSha1Base36(), and Wikimedia\FileBackend\FileOps\FileOp\resolveFileSize().
Referenced by Wikimedia\FileBackend\FileOps\CopyFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\CreateFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\MoveFileOp\doPrecheck(), and Wikimedia\FileBackend\FileOps\StoreFileOp\doPrecheck().
|
finalprotected |
Check if a file will exist in storage when this operation is attempted.
Ideally, the file stat entry should already be preloaded via preloadFileStat(). Otherwise, this will query the backend.
string | $source | Storage path |
FileStatePredicates | $opPredicates | Counterfactual storage path states for this op |
Definition at line 412 of file FileOp.php.
References $path, $source, and Wikimedia\FileBackend\FileOps\FileStatePredicates\resolveFileExistence().
Referenced by Wikimedia\FileBackend\FileOps\CopyFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\DeleteFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\DescribeFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\MoveFileOp\doPrecheck(), and Wikimedia\FileBackend\FileOps\FileOp\precheckDestExistence().
|
finalprotected |
Get the SHA-1 of a file in storage when this operation is attempted.
string | $source | Storage path |
FileStatePredicates | $opPredicates | Counterfactual storage path states for this op |
Definition at line 448 of file FileOp.php.
References $path, $source, and Wikimedia\FileBackend\FileOps\FileStatePredicates\resolveFileSha1Base36().
Referenced by Wikimedia\FileBackend\FileOps\CopyFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\DescribeFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\MoveFileOp\doPrecheck(), and Wikimedia\FileBackend\FileOps\FileOp\precheckDestExistence().
|
finalprotected |
Get the size a file in storage will have when this operation is attempted.
Ideally, file the stat entry should already be preloaded via preloadFileStat() and the backend tracks hashes as extended attributes. Otherwise, this will query the backend. Get the size of a file in storage when this operation is attempted
string | $source | Storage path |
FileStatePredicates | $opPredicates | Counterfactual storage path states for this op |
Definition at line 432 of file FileOp.php.
References $path, $source, and Wikimedia\FileBackend\FileOps\FileStatePredicates\resolveFileSize().
Referenced by Wikimedia\FileBackend\FileOps\CopyFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\DescribeFileOp\doPrecheck(), Wikimedia\FileBackend\FileOps\MoveFileOp\doPrecheck(), and Wikimedia\FileBackend\FileOps\FileOp\precheckDestExistence().
|
protected |
Adjust params to FileBackendStore internal file calls.
array | $params |
Definition at line 318 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\$async, and Wikimedia\FileBackend\FileOps\FileOp\$params.
Referenced by Wikimedia\FileBackend\FileOps\CopyFileOp\doAttempt(), Wikimedia\FileBackend\FileOps\CreateFileOp\doAttempt(), Wikimedia\FileBackend\FileOps\DeleteFileOp\doAttempt(), Wikimedia\FileBackend\FileOps\DescribeFileOp\doAttempt(), Wikimedia\FileBackend\FileOps\MoveFileOp\doAttempt(), and Wikimedia\FileBackend\FileOps\StoreFileOp\doAttempt().
Wikimedia\FileBackend\FileOps\FileOp::storagePathsChanged | ( | ) |
Get a list of storage paths written to for this operation.
Reimplemented in Wikimedia\FileBackend\FileOps\CopyFileOp, Wikimedia\FileBackend\FileOps\CreateFileOp, Wikimedia\FileBackend\FileOps\DeleteFileOp, Wikimedia\FileBackend\FileOps\DescribeFileOp, Wikimedia\FileBackend\FileOps\MoveFileOp, and Wikimedia\FileBackend\FileOps\StoreFileOp.
Definition at line 336 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\applyDependencies(), Wikimedia\FileBackend\FileOps\FileOp\dependsOn(), and Wikimedia\FileBackend\FileOps\FileOp\storagePathsReadOrChanged().
Wikimedia\FileBackend\FileOps\FileOp::storagePathsRead | ( | ) |
Get a list of storage paths read from for this operation.
Reimplemented in Wikimedia\FileBackend\FileOps\CopyFileOp, and Wikimedia\FileBackend\FileOps\MoveFileOp.
Definition at line 327 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\applyDependencies(), Wikimedia\FileBackend\FileOps\FileOp\dependsOn(), and Wikimedia\FileBackend\FileOps\FileOp\storagePathsReadOrChanged().
|
final |
Get a list of storage paths read from or written to for this operation.
Definition at line 345 of file FileOp.php.
References Wikimedia\FileBackend\FileOps\FileOp\storagePathsChanged(), and Wikimedia\FileBackend\FileOps\FileOp\storagePathsRead().
Referenced by Wikimedia\FileBackend\FileOps\FileOp\precheck().
|
protected |
Whether the operation is part of a concurrent sub-batch of operation.
Definition at line 60 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\setFlags().
|
protected |
Definition at line 48 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\__construct(), and Wikimedia\FileBackend\FileOps\FileOp\getBackend().
|
protected |
|
protected |
Whether the operation pre-check or attempt stage failed.
Definition at line 58 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\failed().
|
protected |
Definition at line 50 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\__construct().
|
protected |
Whether the operation pre-check stage marked the attempt stage as a no-op.
Definition at line 62 of file FileOp.php.
|
protected |
Definition at line 65 of file FileOp.php.
|
protected |
Definition at line 53 of file FileOp.php.
Referenced by Wikimedia\FileBackend\FileOps\FileOp\__construct(), and Wikimedia\FileBackend\FileOps\FileOp\setFlags().
|
protected |
Stage in the operation life-cycle.
Definition at line 56 of file FileOp.php.