Instead of telling ExternalStoreMedium classes the default write stores and using
that to make them read-only, let them be configured via other means. For example,
ExternalStoreMwstore already respects FileBackend::isReadOnly() for each location
(e.g. file backends) and ExternalStoreDB checks LoadBalancer::getReadOnlyMode()
for each location (e.g. DB cluster).
Make ExternalStoreAccess::isReadOnly() take a list of base URLs, default to the
default write stores if not specified.
Bug: T227156
Change-Id: I3161890fb2ccb46d6206628f0cd88f8af9f1688c
Follows-Up: I40c3b5534fc8a31116c4c5eb64ee6e4903a6197a
* Inject settings and global instances as dependencies to the
ExternalStoreMedium instances. This includes the local wiki
domain, so that wfWikiId() calls are not scattered around.
* Create ExternalStoreAccess service for read/write logic.
* Deprecate the ExternalStore wrapper methods.
* Add some exception cases for bogus store URLs are used instead
of just giving PHP warnings and failing later.
* Make moveToExternal.php require the type/protocol to decide
which ExternalStoreMedium to use instead of assuming "DB".
* Convert logging calls to use LoggerInterface.
Change-Id: I40c3b5534fc8a31116c4c5eb64ee6e4903a6197a
This reduces the odds of having files without corresponding
wiki pages, given that the later is done in a deferred update.
Also made some documentation cleanups.
Bug: T187942
Change-Id: Iff516669f535713d37e0011e2d7ed285c667f1c5
Swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.
Change-Id: I8c9f30128b46086064326708a4878228ba459447
Batches ES urls by schema and host to reduce round trips required to retreive
many pieces of data. Takes array of ES urls to retreive and returns a map
from ES urls to their data. Errored urls are represented with a boolean false
in the result set. Initially implemented for ExternalStoreDB, other stores
fallback to serial requests.
Change-Id: If1bef25f57bfe7de32fc6787f553a90bd76e87ea
Doxygen expects parameter types to come before the
parameter name in @param tags. Used a quick regex
to switch everything around where possible. This
only fixes cases where a primitve variable (or a
primitive followed by other types) is the variable
type. Other cases will need to be fixed manually.
Change-Id: Ic59fd20856eb0489d70f3469a56ebce0efb3db13
* Added ExternalStoreMedium base class
* Moved up two functions in ExternalStoreDB
* Various documentation tweaks
Change-Id: I6790aab7799609422e7af4fb31d2ad60610298ec