dbos 1.13.1__tar.gz → 1.13.2__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.
Potentially problematic release.
This version of dbos might be problematic. Click here for more details.
- {dbos-1.13.1 → dbos-1.13.2}/PKG-INFO +1 -1
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_sys_db.py +6 -1
- {dbos-1.13.1 → dbos-1.13.2}/pyproject.toml +1 -1
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_streaming.py +15 -7
- {dbos-1.13.1 → dbos-1.13.2}/LICENSE +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/README.md +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/__init__.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/__main__.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_admin_server.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/env.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/script.py.mako +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/01ce9f07bd10_streaming.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/04ca4f231047_workflow_queues_executor_id.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/27ac6900c6ad_add_queue_dedup.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/471b60d64126_dbos_migrations.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/50f3227f0b4b_fix_job_queue.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/5c361fc04708_added_system_tables.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/66478e1b95e5_consolidate_queues.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/83f3732ae8e7_workflow_timeout.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/933e86bdac6a_add_queue_priority.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/a3b18ad34abe_added_triggers.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/d76646551a6b_job_queue_limiter.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/d76646551a6c_workflow_queue.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/d994145b47b6_consolidate_inputs.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/eab0cc1d9a14_job_queue.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/f4b9b32ba814_functionname_childid_op_outputs.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_app_db.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_classproperty.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_client.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_conductor/conductor.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_conductor/protocol.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_context.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_core.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_croniter.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_dbos.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_dbos_config.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_debug.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_docker_pg_helper.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_error.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_event_loop.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_fastapi.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_flask.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_kafka.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_kafka_message.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_logger.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_migration.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_outcome.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_queue.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_recovery.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_registrations.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_roles.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_scheduler.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_schemas/__init__.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_schemas/application_database.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_schemas/system_database.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_serialization.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_sys_db_postgres.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_sys_db_sqlite.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/README.md +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/__package/__init__.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/__package/main.py.dbos +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/__package/schema.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/alembic.ini +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/dbos-config.yaml.dbos +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/migrations/env.py.dbos +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/migrations/script.py.mako +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/migrations/versions/2024_07_31_180642_init.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_templates/dbos-db-starter/start_postgres_docker.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_tracer.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_utils.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/_workflow_commands.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/cli/_github_init.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/cli/_template_init.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/cli/cli.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/cli/migration.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/dbos-config.schema.json +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/dbos/py.typed +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/__init__.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/atexit_no_ctor.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/atexit_no_launch.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/classdefs.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/client_collateral.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/client_worker.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/conftest.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/dupname_classdefs1.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/dupname_classdefsa.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/more_classdefs.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/queuedworkflow.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_admin_server.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_async.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_async_workflow_management.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_classdecorators.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_cli.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_client.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_concurrency.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_config.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_croniter.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_dbos.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_debug.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_docker_secrets.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_failures.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_fastapi.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_fastapi_roles.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_flask.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_kafka.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_outcome.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_package.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_queue.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_scheduler.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_schema_migration.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_singleton.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_spans.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_sqlalchemy.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_workflow_introspection.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/tests/test_workflow_management.py +0 -0
- {dbos-1.13.1 → dbos-1.13.2}/version/__init__.py +0 -0
|
@@ -1901,8 +1901,13 @@ class SystemDatabase(ABC):
|
|
|
1901
1901
|
)
|
|
1902
1902
|
if self._debug_mode and recorded_output is None:
|
|
1903
1903
|
raise Exception(
|
|
1904
|
-
"called
|
|
1904
|
+
"called writeStream in debug mode without a previous execution"
|
|
1905
1905
|
)
|
|
1906
|
+
if recorded_output is not None:
|
|
1907
|
+
dbos_logger.debug(
|
|
1908
|
+
f"Replaying writeStream, id: {function_id}, key: {key}"
|
|
1909
|
+
)
|
|
1910
|
+
return
|
|
1906
1911
|
# Find the maximum offset for this workflow_uuid and key combination
|
|
1907
1912
|
max_offset_result = c.execute(
|
|
1908
1913
|
sa.select(sa.func.max(SystemSchema.streams.c.offset)).where(
|
|
@@ -231,16 +231,19 @@ def test_stream_error_cases(dbos: DBOS) -> None:
|
|
|
231
231
|
def test_stream_workflow_recovery(dbos: DBOS) -> None:
|
|
232
232
|
"""Test that stream operations are properly recovered during workflow replay."""
|
|
233
233
|
|
|
234
|
-
|
|
234
|
+
workflow_call_count = 0
|
|
235
|
+
step_call_count = 0
|
|
235
236
|
|
|
236
237
|
@DBOS.step()
|
|
237
238
|
def counting_step() -> int:
|
|
238
|
-
nonlocal
|
|
239
|
-
|
|
240
|
-
return
|
|
239
|
+
nonlocal step_call_count
|
|
240
|
+
step_call_count += 1
|
|
241
|
+
return step_call_count
|
|
241
242
|
|
|
242
243
|
@DBOS.workflow()
|
|
243
244
|
def recovery_test_workflow() -> None:
|
|
245
|
+
nonlocal workflow_call_count
|
|
246
|
+
workflow_call_count += 1
|
|
244
247
|
count1 = counting_step()
|
|
245
248
|
DBOS.write_stream("recovery_stream", f"step_{count1}")
|
|
246
249
|
|
|
@@ -254,13 +257,18 @@ def test_stream_workflow_recovery(dbos: DBOS) -> None:
|
|
|
254
257
|
with SetWorkflowID(wfid):
|
|
255
258
|
recovery_test_workflow()
|
|
256
259
|
|
|
260
|
+
# Validate stream contents
|
|
261
|
+
values = list(DBOS.read_stream(wfid, "recovery_stream"))
|
|
262
|
+
assert values == ["step_1", "step_2"]
|
|
263
|
+
|
|
257
264
|
# Reset call count and run the same workflow ID again (should replay)
|
|
258
|
-
|
|
265
|
+
dbos._sys_db.update_workflow_outcome(wfid, "PENDING")
|
|
259
266
|
with SetWorkflowID(wfid):
|
|
260
267
|
recovery_test_workflow()
|
|
261
268
|
|
|
262
|
-
# The
|
|
263
|
-
assert
|
|
269
|
+
# The workflow should have been called again
|
|
270
|
+
assert workflow_call_count == 2
|
|
271
|
+
assert step_call_count == 2
|
|
264
272
|
|
|
265
273
|
# Stream should still be readable and contain the same values
|
|
266
274
|
values = list(DBOS.read_stream(wfid, "recovery_stream"))
|
|
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
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/27ac6900c6ad_add_queue_dedup.py
RENAMED
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/471b60d64126_dbos_migrations.py
RENAMED
|
File without changes
|
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/5c361fc04708_added_system_tables.py
RENAMED
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/66478e1b95e5_consolidate_queues.py
RENAMED
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/83f3732ae8e7_workflow_timeout.py
RENAMED
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/933e86bdac6a_add_queue_priority.py
RENAMED
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/a3b18ad34abe_added_triggers.py
RENAMED
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/d76646551a6b_job_queue_limiter.py
RENAMED
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/d76646551a6c_workflow_queue.py
RENAMED
|
File without changes
|
{dbos-1.13.1 → dbos-1.13.2}/dbos/_alembic_migrations/versions/d994145b47b6_consolidate_inputs.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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|