From 94e1619056e2508c79fefbdbaf9fb4a90bd389e2 Mon Sep 17 00:00:00 2001 From: Richard Bowman Date: Tue, 12 Dec 2023 23:40:12 +0000 Subject: [PATCH] Use safer metadata dependency Retrieving metadata pre-action risks stale metadata being returned if DirectThingClients are used. I've switched to the safer callable dependency, which is guaranteed to be fresh. --- .../things/settings_manager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/openflexure_microscope_server/things/settings_manager.py b/src/openflexure_microscope_server/things/settings_manager.py index d60f7ffd..ecaf4c9c 100644 --- a/src/openflexure_microscope_server/things/settings_manager.py +++ b/src/openflexure_microscope_server/things/settings_manager.py @@ -8,7 +8,7 @@ the server. from collections.abc import Mapping from typing import Any, Mapping, MutableMapping, Optional, Sequence from fastapi import HTTPException -from labthings_fastapi.dependencies.metadata import ThingStates +from labthings_fastapi.dependencies.metadata import GetThingStates from labthings_fastapi.thing import Thing from labthings_fastapi.decorators import thing_action, thing_property from pydantic import BaseModel @@ -86,9 +86,9 @@ class SettingsManager(Thing): self.thing_settings["external_metadata"] = metadata @thing_action - def get_things_state(self, thing_states_metadata: ThingStates) -> Mapping: + def get_things_state(self, metadata_getter: GetThingStates) -> Mapping: """Metadata summarising the current state of all Things in the server""" - return thing_states_metadata + return metadata_getter() @thing_property def external_metadata_in_state(self) -> Sequence[str]: