def close(self, wait_for: typing.Union[list, tuple] = tuple(), timeout=300): if self.closed: raise RuntimeError(f"{self.md} saver already closed") if wait_for: done, not_done = wait(wait_for, timeout=timeout) if len(not_done): raise RuntimeError( f"{len(not_done)} futures of {self.md} did not" "complete in time!") self.closed = True exc_info = strax.formatted_exception() if exc_info: self.md['exception'] = exc_info if self.md['chunks']: # Update to precise start and end values self.md['start'] = self.md['chunks'][0]['start'] self.md['end'] = self.md['chunks'][-1]['end'] # If there were no chunks, we are certainly crashing. # Don't throw another exception self.md['writing_ended'] = time.time() self._close()
def close(self, wait_for: typing.Union[list, tuple] = tuple(), timeout=300): if self.closed: raise RuntimeError(f"{self.md} saver already closed") if wait_for: done, not_done = wait(wait_for, timeout=timeout) if len(not_done): raise RuntimeError( f"{len(not_done)} futures of {self.md} did not" "complete in time!") self.closed = True exc_info = strax.formatted_exception() if exc_info: self.md['exception'] = exc_info self.md['writing_ended'] = time.time() self._close()