The problem was not only in @cached_property, but also with self._metadata = self._get_database_metadata() so we init self._metadata in the first run, and on the next runs we are only reusing this attribute (as we are not creating new instances of Adapter).
The problem was not only in @cached_property, but also with
self._metadata = self._get_database_metadata()
so we init self._metadata in the first run, and on the next runs we are only reusing this attribute (as we are not creating new instances of Adapter).