durabletask 0.0.0.dev46__tar.gz → 0.0.0.dev48__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/PKG-INFO +1 -1
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/client.py +37 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask.egg-info/PKG-INFO +1 -1
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/pyproject.toml +1 -1
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/LICENSE +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/README.md +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/__init__.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/entities/__init__.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/entities/durable_entity.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/entities/entity_context.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/entities/entity_instance_id.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/entities/entity_lock.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/entities/entity_metadata.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/entities/entity_operation_failed_exception.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/entity_state_shim.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/exceptions.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/grpc_interceptor.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/helpers.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/json_encode_output_exception.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/orchestration_entity_context.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/orchestrator_service_pb2.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/orchestrator_service_pb2.pyi +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/orchestrator_service_pb2_grpc.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/proto_task_hub_sidecar_service_stub.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/shared.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/py.typed +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/task.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/worker.py +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask.egg-info/SOURCES.txt +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask.egg-info/dependency_links.txt +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask.egg-info/requires.txt +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask.egg-info/top_level.txt +0 -0
- {durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/setup.cfg +0 -0
|
@@ -63,6 +63,12 @@ class PurgeInstancesResult:
|
|
|
63
63
|
is_complete: bool
|
|
64
64
|
|
|
65
65
|
|
|
66
|
+
@dataclass
|
|
67
|
+
class CleanEntityStorageResult:
|
|
68
|
+
empty_entities_removed: int
|
|
69
|
+
orphaned_locks_released: int
|
|
70
|
+
|
|
71
|
+
|
|
66
72
|
class OrchestrationFailedError(Exception):
|
|
67
73
|
def __init__(self, message: str, failure_details: task.FailureDetails):
|
|
68
74
|
super().__init__(message)
|
|
@@ -406,3 +412,34 @@ class TaskHubGrpcClient:
|
|
|
406
412
|
else:
|
|
407
413
|
break
|
|
408
414
|
return entities
|
|
415
|
+
|
|
416
|
+
def clean_entity_storage(self,
|
|
417
|
+
remove_empty_entities: bool = True,
|
|
418
|
+
release_orphaned_locks: bool = True,
|
|
419
|
+
_continuation_token: Optional[pb2.StringValue] = None
|
|
420
|
+
) -> CleanEntityStorageResult:
|
|
421
|
+
self._logger.info("Cleaning entity storage")
|
|
422
|
+
|
|
423
|
+
empty_entities_removed = 0
|
|
424
|
+
orphaned_locks_released = 0
|
|
425
|
+
|
|
426
|
+
while True:
|
|
427
|
+
req = pb.CleanEntityStorageRequest(
|
|
428
|
+
removeEmptyEntities=remove_empty_entities,
|
|
429
|
+
releaseOrphanedLocks=release_orphaned_locks,
|
|
430
|
+
continuationToken=_continuation_token
|
|
431
|
+
)
|
|
432
|
+
resp: pb.CleanEntityStorageResponse = self._stub.CleanEntityStorage(req)
|
|
433
|
+
empty_entities_removed += resp.emptyEntitiesRemoved
|
|
434
|
+
orphaned_locks_released += resp.orphanedLocksReleased
|
|
435
|
+
|
|
436
|
+
if resp.continuationToken and resp.continuationToken.value and resp.continuationToken.value != "0":
|
|
437
|
+
self._logger.info(f"Received continuation token with value {resp.continuationToken.value}, cleaning next page...")
|
|
438
|
+
if _continuation_token and _continuation_token.value and _continuation_token.value == resp.continuationToken.value:
|
|
439
|
+
self._logger.warning(f"Received the same continuation token value {resp.continuationToken.value} again, stopping to avoid infinite loop.")
|
|
440
|
+
break
|
|
441
|
+
_continuation_token = resp.continuationToken
|
|
442
|
+
else:
|
|
443
|
+
break
|
|
444
|
+
|
|
445
|
+
return CleanEntityStorageResult(empty_entities_removed, orphaned_locks_released)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/entities/entity_instance_id.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/entity_state_shim.py
RENAMED
|
File without changes
|
|
File without changes
|
{durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/grpc_interceptor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask/internal/orchestrator_service_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{durabletask-0.0.0.dev46 → durabletask-0.0.0.dev48}/durabletask.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|