Gergő Tisza has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/185323

Change subject: [WIP] Use shared cache for GetExtendedMetadata hook results
......................................................................

[WIP] Use shared cache for GetExtendedMetadata hook results

Use the cache of the owner wiki for ForeignDBFile files when the
metadata is accessed from a different wiki. This will fix the
problem of Commons file page edits not having any effect on
other wikis.

TODO:
* check if CommonsMetadata\HookHandler::onValidateExtendedMetadataCache
  meeds to be changed (probably not)
* this will clear the cache when deployed; is a smoother transition needed?

Bug: T86955
Change-Id: Ic58a790e868b16b2f8f9caff2a70199ccfac8ac0
---
M includes/media/FormatMetadata.php
1 file changed, 25 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/23/185323/1

diff --git a/includes/media/FormatMetadata.php 
b/includes/media/FormatMetadata.php
index e8e73af..6885208 100644
--- a/includes/media/FormatMetadata.php
+++ b/includes/media/FormatMetadata.php
@@ -1601,12 +1601,7 @@
                        return array();
                }
 
-               $cacheKey = wfMemcKey(
-                       'getExtendedMetadata',
-                       $this->getLanguage()->getCode(),
-                       (int)$this->singleLang,
-                       $file->getSha1()
-               );
+               $cacheKey = $this->getExtendedMetadataCacheKey( $file );
 
                $cachedValue = $wgMemc->get( $cacheKey );
                if (
@@ -1634,6 +1629,30 @@
                return $extendedMetadata;
        }
 
+       protected function getExtendedMetadataCacheKey( File $file ) {
+               if (
+                       $file instanceof ForeignDBFile
+                       && ( $repo = $file->getRepo() )
+               ) {
+                       $cacheKey = $repo->getSharedCacheKey(
+                               'getExtendedMetadata',
+                               $this->getLanguage()->getCode(),
+                               (int)$this->singleLang,
+                               $file->getSha1()
+                       );
+                       if ( $cacheKey ) {
+                               return $cacheKey;
+                       }
+               }
+
+               return wfMemcKey(
+                       'getExtendedMetadata',
+                       $this->getLanguage()->getCode(),
+                       (int)$this->singleLang,
+                       $file->getSha1()
+               );
+       }
+
        /**
         * Get file-based metadata in standardized format.
         *

-- 
To view, visit https://gerrit.wikimedia.org/r/185323
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic58a790e868b16b2f8f9caff2a70199ccfac8ac0
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: GergÅ‘ Tisza <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to