Skip to content

Add efficient storage for sharing between all interpreters in a pipeline #92

@jesper-friis

Description

@jesper-friis

Motivation
We cannot assume that the different initialize() and get() methods in a pipeline are called from the same interpreter - at least that is not the case in AiiDA. Hence, all initialize() and get() methods should fetch the collection from the storage and save them back again if anything has been changed.

The current solution in PR #95 that stores the collection in the data cache works, but is very inefficient.

Task
To support such a common storage:

  • Figure out the "correct" way to refer to the specific storage used load/store the collection. This should be shared between all interpreters that are spawned for the same pipeline.
  • From OTELib, It would be useful if the storage to use could be configured in the client (e.g. via arguments to otelib.OTEClient() or dedicated methods). This would probably require some dedicated REST endpoints in oteapi-services with admin permissions.
  • Ideally the changes can be implemented in the utility functions for retrieving and updating the collection and will not affect any code using them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions