Skip to content

Commit 01e9985

Browse files
author
mstampfer
committed
[VOL-486] Deltahedge to snapshot mongo graph on hedge or expiry decision
1 parent 38b9667 commit 01e9985

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

arctic/store/version_store.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -666,9 +666,9 @@ def _write_audit(self, user, message, changed_version):
666666
# Create the audit entry
667667
mongo_retry(self._audit.insert_one)(audit)
668668

669-
def snapshot(self, snap_name, metadata=None, skip_symbols=None):
669+
def snapshot(self, snap_name, metadata=None, skip_symbols=None, versions=None):
670670
"""
671-
Snapshot the current versions of symbols in the library. Can be used like:
671+
Snapshot versions of symbols in the library. Can be used like:
672672
673673
Parameters
674674
----------
@@ -688,22 +688,23 @@ def snapshot(self, snap_name, metadata=None, skip_symbols=None):
688688
snapshot = {'_id': bson.ObjectId()}
689689
snapshot['name'] = snap_name
690690
snapshot['metadata'] = metadata
691+
692+
skip_symbols = set() if skip_symbols is None else set(skip_symbols)
691693

692-
if skip_symbols is None:
693-
skip_symbols = set()
694-
else:
695-
skip_symbols = set(skip_symbols)
694+
if versions is None:
695+
versions = {sym: None for sym in set(self.list_symbols()) - skip_symbols}
696696

697697
# Loop over, and snapshot all versions except those we've been asked to skip
698-
for sym in set(self.list_symbols()) - skip_symbols:
698+
for sym in versions:
699699
try:
700-
sym = self._read_metadata(sym, read_preference=ReadPreference.PRIMARY)
700+
sym = self._read_metadata(sym, read_preference=ReadPreference.PRIMARY, as_of=versions[sym])
701701
# Update the parents field of the version document
702702
mongo_retry(self._versions.update_one)({'_id': sym['_id']},
703703
{'$addToSet': {'parent': snapshot['_id']}})
704704
except NoDataFoundException:
705705
# Version has been deleted, not included in the snapshot
706706
pass
707+
707708
mongo_retry(self._snapshots.insert_one)(snapshot)
708709

709710
def delete_snapshot(self, snap_name):

0 commit comments

Comments
 (0)