+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: Apache-2.0
+
import arvados
import os
import stat
Keep as normal files (Keep does not support symlinks).
Symlinks to files in the keep mount will result in files in the new
- collection which reference existing Keep blocks, no data copying necessay.
+ collection which reference existing Keep blocks, no data copying necessary.
Returns a new Collection object, with data flushed but the collection record
not saved to the API.
logger = logging.getLogger("arvados")
+ last_error = None
for root, dirs, files in os.walk(target_dir):
for f in files:
try:
if pdh is not None:
# 2. load collection
if pdh not in collections:
+ # 2.1 make sure it is flushed (see #5787 note 11)
+ fd = os.open(real[0], os.O_RDONLY)
+ os.fsync(fd)
+ os.close(fd)
+
+ # 2.2 get collection from API server
collections[pdh] = arvados.collection.CollectionReader(pdh,
api_client=outputcollection._my_api(),
keep_client=outputcollection._my_keep(),
dat = reader.read(64*1024)
except (IOError, OSError) as e:
logger.error(e)
+ last_error = e
- return outputcollection
+ return (outputcollection, last_error)