Skip to content

Commit

Permalink
fix removal of items
Browse files Browse the repository at this point in the history
  • Loading branch information
denniswittich committed Feb 28, 2025
1 parent e81876a commit 8116cc8
Showing 1 changed file with 28 additions and 15 deletions.
43 changes: 28 additions & 15 deletions learning_loop_node/detector/outbox.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ def save(self,
os.rename(tmp, self.path + '/' + identifier) # NOTE rename is atomic so upload can run in parallel
else:
self.log.error('Could not rename %s to %s', tmp, self.path + '/' + identifier)
return

if upload_priority:
self.priority_upload_folders.append(self.path + '/' + identifier)
Expand All @@ -106,13 +107,15 @@ def save(self,
if len(self.upload_folders) > self.MAX_UPLOAD_LENGTH:
items_to_drop = self.upload_folders[self.MAX_UPLOAD_LENGTH:]
self.log.info('Dropping %s images from upload list', len(items_to_drop))
try:
for item in items_to_drop:
shutil.rmtree(item)
self.log.debug('Deleted %s', item)
self.upload_folders = self.upload_folders[:self.MAX_UPLOAD_LENGTH]
except Exception:
self.log.exception('Failed to cut upload list')
self.upload_folders = self.upload_folders[:self.MAX_UPLOAD_LENGTH]

for item in items_to_drop:
try:
if os.path.exists(item):
shutil.rmtree(item)
self.log.debug('Deleted %s', item)
except Exception:
self.log.exception('Failed to delete %s', item)

def _is_valid_isoformat(self, date: Optional[str]) -> bool:
if date is None:
Expand Down Expand Up @@ -163,6 +166,17 @@ async def upload(self) -> None:
except Exception:
self.log.exception('Could not upload files')

def _clear_item(self, item: str) -> None:
if item in self.upload_folders:
self.upload_folders.remove(item)
if item in self.priority_upload_folders:
self.priority_upload_folders.remove(item)
try:
shutil.rmtree(item, ignore_errors=True)
self.log.debug('Deleted %s', item)
except Exception:
self.log.exception('Failed to delete %s', item)

async def _upload_batch(self, items: List[str]) -> None:
"""
Uploads a batch of images to the server.
Expand All @@ -174,6 +188,9 @@ async def _upload_batch(self, items: List[str]) -> None:

data: List[Tuple[str, Union[TextIOWrapper, BufferedReader]]] = []
for item in items:
if not os.path.exists(item):
self._clear_item(item)
continue
identifier = os.path.basename(item)
data.append(('files', open(f'{item}/image_{identifier}.json', 'r')))
data.append(('files', open(f'{item}/image_{identifier}.jpg', 'rb')))
Expand All @@ -192,17 +209,13 @@ async def _upload_batch(self, items: List[str]) -> None:
if response.status == 200:
self.upload_counter += len(items)
for item in items:
try:
shutil.rmtree(item)
self.log.debug('Deleted %s', item)
except Exception:
self.log.exception('Failed to delete %s', item)
self.log.info('Uploaded %s images successfully', len(items))
self._clear_item(item)
return

elif response.status == 422:
if response.status == 422:
if len(items) == 1:
self.log.error('Broken content in image: %s\n Skipping.', items[0])
shutil.rmtree(items[0], ignore_errors=True)
self._clear_item(items[0])
return

self.log.exception('Broken content in batch. Splitting and retrying')
Expand Down

0 comments on commit 8116cc8

Please sign in to comment.