mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-15 10:13:53 +01:00
Fix bug in remote thumbnail search (#8438)
#7124 changed the behaviour of remote thumbnails so that the thumbnailing method was included in the filename of the thumbnail. To support existing files, it included a fallback so that we would check the old filename if the new filename didn't exist. Unfortunately, it didn't apply this logic to storage providers, so any thumbnails stored on such a storage provider was broken.
This commit is contained in:
parent
695240d34a
commit
73d93039ff
2 changed files with 24 additions and 20 deletions
1
changelog.d/8438.bugfix
Normal file
1
changelog.d/8438.bugfix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Fix a regression in v1.21.0rc1 which broke thumbnails of remote media.
|
|
@ -141,31 +141,34 @@ class MediaStorage:
|
||||||
Returns:
|
Returns:
|
||||||
Returns a Responder if the file was found, otherwise None.
|
Returns a Responder if the file was found, otherwise None.
|
||||||
"""
|
"""
|
||||||
|
paths = [self._file_info_to_path(file_info)]
|
||||||
|
|
||||||
path = self._file_info_to_path(file_info)
|
# fallback for remote thumbnails with no method in the filename
|
||||||
local_path = os.path.join(self.local_media_directory, path)
|
|
||||||
if os.path.exists(local_path):
|
|
||||||
return FileResponder(open(local_path, "rb"))
|
|
||||||
|
|
||||||
# Fallback for paths without method names
|
|
||||||
# Should be removed in the future
|
|
||||||
if file_info.thumbnail and file_info.server_name:
|
if file_info.thumbnail and file_info.server_name:
|
||||||
legacy_path = self.filepaths.remote_media_thumbnail_rel_legacy(
|
paths.append(
|
||||||
server_name=file_info.server_name,
|
self.filepaths.remote_media_thumbnail_rel_legacy(
|
||||||
file_id=file_info.file_id,
|
server_name=file_info.server_name,
|
||||||
width=file_info.thumbnail_width,
|
file_id=file_info.file_id,
|
||||||
height=file_info.thumbnail_height,
|
width=file_info.thumbnail_width,
|
||||||
content_type=file_info.thumbnail_type,
|
height=file_info.thumbnail_height,
|
||||||
|
content_type=file_info.thumbnail_type,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
legacy_local_path = os.path.join(self.local_media_directory, legacy_path)
|
|
||||||
if os.path.exists(legacy_local_path):
|
for path in paths:
|
||||||
return FileResponder(open(legacy_local_path, "rb"))
|
local_path = os.path.join(self.local_media_directory, path)
|
||||||
|
if os.path.exists(local_path):
|
||||||
|
logger.debug("responding with local file %s", local_path)
|
||||||
|
return FileResponder(open(local_path, "rb"))
|
||||||
|
logger.debug("local file %s did not exist", local_path)
|
||||||
|
|
||||||
for provider in self.storage_providers:
|
for provider in self.storage_providers:
|
||||||
res = await provider.fetch(path, file_info) # type: Any
|
for path in paths:
|
||||||
if res:
|
res = await provider.fetch(path, file_info) # type: Any
|
||||||
logger.debug("Streaming %s from %s", path, provider)
|
if res:
|
||||||
return res
|
logger.debug("Streaming %s from %s", path, provider)
|
||||||
|
return res
|
||||||
|
logger.debug("%s not found on %s", path, provider)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue