MediaWiki  master
Wikimedia\DependencyStore\DependencyStore Class Reference

Class for tracking per-entity dependency path lists that are expensive to mass compute. More...

Inheritance diagram for Wikimedia\DependencyStore\DependencyStore:

Public Member Functions

 newEntityDependencies (array $paths=[], $asOf=null)
 
 remove ( $type, $entities)
 Delete the currently tracked dependencies for an entity or set of entities. More...
 
 renew ( $type, $entities, $ttl)
 Set the expiry for the currently tracked dependencies for an entity or set of entities. More...
 
 retrieve ( $type, $entity)
 Get the currently tracked dependencies for an entity. More...
 
 retrieveMulti ( $type, array $entities)
 Get the currently tracked dependencies for a set of entities. More...
 
 store ( $type, $entity, array $data, $ttl)
 Set the currently tracked dependencies for an entity. More...
 
 storeMulti ( $type, array $dataByEntity, $ttl)
 Set the currently tracked dependencies for a set of entities. More...
 

Detailed Description

Class for tracking per-entity dependency path lists that are expensive to mass compute.

Definition at line 28 of file DependencyStore.php.

Member Function Documentation

◆ newEntityDependencies()

Wikimedia\DependencyStore\DependencyStore::newEntityDependencies ( array  $paths = [],
  $asOf = null 
)
Parameters
string[]$pathsList of dependency paths
int | null$asOfUNIX timestamp or null
Returns
array

Definition at line 39 of file DependencyStore.php.

Referenced by Wikimedia\DependencyStore\KeyValueDependencyStore\retrieveMulti(), and Wikimedia\DependencyStore\SqlModuleDependencyStore\retrieveMulti().

◆ remove()

Wikimedia\DependencyStore\DependencyStore::remove (   $type,
  $entities 
)
abstract

Delete the currently tracked dependencies for an entity or set of entities.

Parameters
string$typeEntity type
string | string[]$entitiesEntity name(s)
Exceptions
DependencyStoreException

Reimplemented in Wikimedia\DependencyStore\SqlModuleDependencyStore, and Wikimedia\DependencyStore\KeyValueDependencyStore.

◆ renew()

Wikimedia\DependencyStore\DependencyStore::renew (   $type,
  $entities,
  $ttl 
)
abstract

Set the expiry for the currently tracked dependencies for an entity or set of entities.

Parameters
string$typeEntity type
string | string[]$entitiesEntity name(s)
int$ttlNew time-to-live in seconds
Exceptions
DependencyStoreException

Reimplemented in Wikimedia\DependencyStore\SqlModuleDependencyStore, and Wikimedia\DependencyStore\KeyValueDependencyStore.

◆ retrieve()

Wikimedia\DependencyStore\DependencyStore::retrieve (   $type,
  $entity 
)
final

Get the currently tracked dependencies for an entity.

The "paths" field contains a sorted list of unique paths

The "asOf" field reflects the last-modified timestamp of the dependency data itself. It will be null if there is no tracking data available. Note that if empty path lists are never stored (as an optimisation) then it will not be possible to discern whether the result is up-to-date.

Parameters
string$typeEntity type
string$entityEntity name
Returns
array Map of (paths: paths, asOf: UNIX timestamp or null)
Exceptions
DependencyStoreException

Definition at line 58 of file DependencyStore.php.

References $type, and Wikimedia\DependencyStore\DependencyStore\retrieveMulti().

◆ retrieveMulti()

Wikimedia\DependencyStore\DependencyStore::retrieveMulti (   $type,
array  $entities 
)
abstract

Get the currently tracked dependencies for a set of entities.

See also
KeyValueDependencyStore::retrieve()
Parameters
string$typeEntity type
string[]$entitiesEntity names
Returns
array[] Map of (entity => (paths: paths, asOf: UNIX timestamp or null))
Exceptions
DependencyStoreException

Reimplemented in Wikimedia\DependencyStore\SqlModuleDependencyStore, and Wikimedia\DependencyStore\KeyValueDependencyStore.

Referenced by Wikimedia\DependencyStore\DependencyStore\retrieve().

◆ store()

Wikimedia\DependencyStore\DependencyStore::store (   $type,
  $entity,
array  $data,
  $ttl 
)
final

Set the currently tracked dependencies for an entity.

Dependency data should be set to persist as long as anything might rely on it existing in order to check the validity of some previously computed work. This can be achieved while minimizing storage space under the following scheme:

  • a) computed work has a TTL (time-to-live)
  • b) when work is computed, the dependency data is updated
  • c) the dependency data has a TTL higher enough to accounts for skew/latency
  • d) the TTL of tracked dependency data is renewed upon access
Parameters
string$typeEntity type
string$entityEntity name
array$dataMap of (paths: paths, asOf: UNIX timestamp or null)
int$ttlNew time-to-live in seconds
Exceptions
DependencyStoreException

Definition at line 91 of file DependencyStore.php.

References $type, and Wikimedia\DependencyStore\DependencyStore\storeMulti().

◆ storeMulti()

Wikimedia\DependencyStore\DependencyStore::storeMulti (   $type,
array  $dataByEntity,
  $ttl 
)
abstract

Set the currently tracked dependencies for a set of entities.

See also
KeyValueDependencyStore::store()
Parameters
string$typeEntity type
array[]$dataByEntityMap of (entity => (paths: paths, asOf: UNIX timestamp or null))
int$ttlNew time-to-live in seconds
Exceptions
DependencyStoreException

Reimplemented in Wikimedia\DependencyStore\SqlModuleDependencyStore, and Wikimedia\DependencyStore\KeyValueDependencyStore.

Referenced by Wikimedia\DependencyStore\DependencyStore\store().


The documentation for this class was generated from the following file: