jenkins-bot has submitted this change and it was merged. Change subject: ResourceLoaderImage: Use hashes for versioning instead of timestamps ......................................................................
ResourceLoaderImage: Use hashes for versioning instead of timestamps Remove use of the deprecated getModifiedTime() method and incorporate file information in getDefinitionSummary() directly, instead of relying on the parent class to include getModifiedTime(). Change getDefinitionSummary() to append to the summary instead of setting arbitrary keys in the array directly to avoid conflicts. This matches the pattern used elsewhere. Change ResourceLoaderImage to use file hashes instead of timestamps to avoid needless cache invalidation. At Wikimedia these modules tend to roll over every week due to git not storing timestamps. See also T104950, 9112c9347b, f37cee996. Change-Id: I5d019bfb991c3b8042d1db14a853ba46cc690315 --- M includes/resourceloader/ResourceLoaderImageModule.php 1 file changed, 11 insertions(+), 11 deletions(-) Approvals: Aaron Schulz: Looks good to me, approved Bartosz Dziewoński: Looks good to me, but someone else must approve jenkins-bot: Verified diff --git a/includes/resourceloader/ResourceLoaderImageModule.php b/includes/resourceloader/ResourceLoaderImageModule.php index 6cdab1b..43327c9 100644 --- a/includes/resourceloader/ResourceLoaderImageModule.php +++ b/includes/resourceloader/ResourceLoaderImageModule.php @@ -393,6 +393,8 @@ public function getDefinitionSummary( ResourceLoaderContext $context ) { $this->loadFromDefinition(); $summary = parent::getDefinitionSummary( $context ); + + $options = []; foreach ( [ 'localBasePath', 'images', @@ -401,29 +403,27 @@ 'selectorWithoutVariant', 'selectorWithVariant', ] as $member ) { - $summary[$member] = $this->{$member}; + $options[$member] = $this->{$member}; }; + + $summary[] = [ + 'options' => $options, + 'fileHashes' => $this->getFileHashes( $context ), + ]; return $summary; } /** - * Get the last modified timestamp of this module. - * - * @param ResourceLoaderContext $context Context in which to calculate - * the modified time - * @return int UNIX timestamp + * Helper method for getDefinitionSummary. */ - public function getModifiedTime( ResourceLoaderContext $context ) { + protected function getFileHashes( ResourceLoaderContext $context ) { $this->loadFromDefinition(); $files = []; foreach ( $this->getImages( $context ) as $name => $image ) { $files[] = $image->getPath( $context ); } - $files = array_values( array_unique( $files ) ); - $filesMtime = max( array_map( [ __CLASS__, 'safeFilemtime' ], $files ) ); - - return $filesMtime; + return array_map( [ __CLASS__, 'safeFileHash' ], $files ); } /** -- To view, visit https://gerrit.wikimedia.org/r/305318 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I5d019bfb991c3b8042d1db14a853ba46cc690315 Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Krinkle <krinklem...@gmail.com> Gerrit-Reviewer: Aaron Schulz <asch...@wikimedia.org> Gerrit-Reviewer: Bartosz Dziewoński <matma....@gmail.com> Gerrit-Reviewer: Krinkle <krinklem...@gmail.com> Gerrit-Reviewer: Legoktm <legoktm.wikipe...@gmail.com> Gerrit-Reviewer: Ori.livneh <o...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits