Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions qiskit_experiments/database_service/db_experiment_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -343,16 +343,21 @@ def _add_single_data(self, data: Dict[str, any]) -> None:
def _retrieve_data(self):
"""Retrieve job data if missing experiment data."""
# Get job results if missing experiment data.
if (not self._data) and self._provider:
if (not self._data) and self._backend:
with self._jobs.lock:
for jid in self._jobs:
if self._jobs[jid] is None:
for jid, job in self._jobs.items():
if job is None:
try:
self._jobs[jid] = self._provider.retrieve_job(jid)
job = self._backend.retrieve_job(jid)
self._jobs[jid] = job
except Exception: # pylint: disable=broad-except
pass
if self._jobs[jid] is not None:
self._add_result_data(self._jobs[jid].result())
LOG.warning(
"Unable to retrive data from job %s on backend %s",
jid,
self._backend,
)
if job is not None:
self._add_result_data(job.result())

def data(self, index: Optional[Union[int, slice, str]] = None) -> Union[Dict, List[Dict]]:
"""Return the experiment data at the specified index.
Expand Down
4 changes: 4 additions & 0 deletions qiskit_experiments/database_service/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,10 @@ def _init_container(self, init_values):
"""Initialize the container."""
pass

def __iter__(self):
with self._lock:
return iter(self._container)

def __getitem__(self, key):
with self._lock:
return self._container[key]
Expand Down
6 changes: 6 additions & 0 deletions releasenotes/notes/fix-retrieve-data-c93c8406ff4f2e7e.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
fixes:
- |
Fixed bug in :class:`~qiskit_experiments.framework.ExperimentData` where
trying to load saved job data from a backend using
``ExperimentData(backend=backend, job_ids=job_ids)`` resulted in an error.