dbos 0.7.0a8__py3-none-any.whl → 0.7.1__py3-none-any.whl
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.
- dbos/error.py +0 -11
- dbos/migrations/versions/50f3227f0b4b_fix_job_queue.py +34 -0
- dbos/queue.py +11 -4
- dbos/system_database.py +12 -17
- {dbos-0.7.0a8.dist-info → dbos-0.7.1.dist-info}/METADATA +1 -1
- {dbos-0.7.0a8.dist-info → dbos-0.7.1.dist-info}/RECORD +9 -8
- {dbos-0.7.0a8.dist-info → dbos-0.7.1.dist-info}/WHEEL +1 -1
- {dbos-0.7.0a8.dist-info → dbos-0.7.1.dist-info}/entry_points.txt +2 -0
- {dbos-0.7.0a8.dist-info → dbos-0.7.1.dist-info}/licenses/LICENSE +0 -0
dbos/error.py
CHANGED
|
@@ -32,7 +32,6 @@ class DBOSErrorCode(Enum):
|
|
|
32
32
|
InitializationError = 3
|
|
33
33
|
WorkflowFunctionNotFound = 4
|
|
34
34
|
NonExistentWorkflowError = 5
|
|
35
|
-
DuplicateWorkflowEventError = 6
|
|
36
35
|
MaxStepRetriesExceeded = 7
|
|
37
36
|
NotAuthorized = 8
|
|
38
37
|
|
|
@@ -87,16 +86,6 @@ class DBOSNonExistentWorkflowError(DBOSException):
|
|
|
87
86
|
)
|
|
88
87
|
|
|
89
88
|
|
|
90
|
-
class DBOSDuplicateWorkflowEventError(DBOSException):
|
|
91
|
-
"""Exception raised when a workflow attempts to set an event value more than once per key."""
|
|
92
|
-
|
|
93
|
-
def __init__(self, workflow_id: str, key: str):
|
|
94
|
-
super().__init__(
|
|
95
|
-
f"Workflow {workflow_id} has already emitted an event with key {key}",
|
|
96
|
-
dbos_error_code=DBOSErrorCode.DuplicateWorkflowEventError.value,
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
|
|
100
89
|
class DBOSNotAuthorizedError(DBOSException):
|
|
101
90
|
"""Exception raised by DBOS role-based security when the user is not authorized to access a function."""
|
|
102
91
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"""fix_job_queue
|
|
2
|
+
|
|
3
|
+
Revision ID: 50f3227f0b4b
|
|
4
|
+
Revises: eab0cc1d9a14
|
|
5
|
+
Create Date: 2024-09-25 14:03:53.308068
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from typing import Sequence, Union
|
|
10
|
+
|
|
11
|
+
from alembic import op
|
|
12
|
+
|
|
13
|
+
# revision identifiers, used by Alembic.
|
|
14
|
+
revision: str = "50f3227f0b4b"
|
|
15
|
+
down_revision: Union[str, None] = "eab0cc1d9a14"
|
|
16
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
|
17
|
+
depends_on: Union[str, Sequence[str], None] = None
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def upgrade() -> None:
|
|
21
|
+
op.drop_constraint("job_queue_pkey", "job_queue", schema="dbos", type_="primary")
|
|
22
|
+
|
|
23
|
+
op.create_primary_key(
|
|
24
|
+
"job_queue_pkey", "job_queue", ["workflow_uuid"], schema="dbos"
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def downgrade() -> None:
|
|
29
|
+
# Reverting the changes
|
|
30
|
+
op.drop_constraint("job_queue_pkey", "job_queue", schema="dbos", type_="primary")
|
|
31
|
+
|
|
32
|
+
op.create_primary_key(
|
|
33
|
+
"job_queue_pkey", "job_queue", ["created_at_epoch_ms"], schema="dbos"
|
|
34
|
+
)
|
dbos/queue.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import threading
|
|
2
2
|
import time
|
|
3
|
+
import traceback
|
|
3
4
|
from typing import TYPE_CHECKING, Optional
|
|
4
5
|
|
|
5
6
|
from dbos.core import P, R, _execute_workflow_id, _start_workflow
|
|
6
|
-
from dbos.error import DBOSInitializationError
|
|
7
7
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
9
9
|
from dbos.dbos import DBOS, Workflow, WorkflowHandle
|
|
@@ -31,6 +31,13 @@ def queue_thread(stop_event: threading.Event, dbos: "DBOS") -> None:
|
|
|
31
31
|
while not stop_event.is_set():
|
|
32
32
|
time.sleep(1)
|
|
33
33
|
for queue_name, queue in dbos._registry.queue_info_map.items():
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
try:
|
|
35
|
+
wf_ids = dbos._sys_db.start_queued_workflows(
|
|
36
|
+
queue_name, queue.concurrency
|
|
37
|
+
)
|
|
38
|
+
for id in wf_ids:
|
|
39
|
+
_execute_workflow_id(dbos, id)
|
|
40
|
+
except Exception:
|
|
41
|
+
dbos.logger.warning(
|
|
42
|
+
f"Exception encountered in queue thread: {traceback.format_exc()}"
|
|
43
|
+
)
|
dbos/system_database.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import os
|
|
3
|
-
import select
|
|
4
3
|
import threading
|
|
5
4
|
import time
|
|
6
5
|
from enum import Enum
|
|
@@ -14,11 +13,7 @@ from alembic.config import Config
|
|
|
14
13
|
from sqlalchemy.exc import DBAPIError
|
|
15
14
|
|
|
16
15
|
import dbos.utils as utils
|
|
17
|
-
from dbos.error import
|
|
18
|
-
DBOSDuplicateWorkflowEventError,
|
|
19
|
-
DBOSNonExistentWorkflowError,
|
|
20
|
-
DBOSWorkflowConflictIDError,
|
|
21
|
-
)
|
|
16
|
+
from dbos.error import DBOSNonExistentWorkflowError, DBOSWorkflowConflictIDError
|
|
22
17
|
|
|
23
18
|
from .dbos_config import ConfigFile
|
|
24
19
|
from .logger import dbos_logger
|
|
@@ -832,18 +827,18 @@ class SystemDatabase:
|
|
|
832
827
|
if recorded_output is not None:
|
|
833
828
|
return # Already sent before
|
|
834
829
|
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
)
|
|
830
|
+
c.execute(
|
|
831
|
+
pg.insert(SystemSchema.workflow_events)
|
|
832
|
+
.values(
|
|
833
|
+
workflow_uuid=workflow_uuid,
|
|
834
|
+
key=key,
|
|
835
|
+
value=utils.serialize(message),
|
|
842
836
|
)
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
837
|
+
.on_conflict_do_update(
|
|
838
|
+
index_elements=["workflow_uuid", "key"],
|
|
839
|
+
set_={"value": utils.serialize(message)},
|
|
840
|
+
)
|
|
841
|
+
)
|
|
847
842
|
output: OperationResultInternal = {
|
|
848
843
|
"workflow_uuid": workflow_uuid,
|
|
849
844
|
"function_id": function_id,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
dbos-0.7.
|
|
2
|
-
dbos-0.7.
|
|
3
|
-
dbos-0.7.
|
|
4
|
-
dbos-0.7.
|
|
1
|
+
dbos-0.7.1.dist-info/METADATA,sha256=QHt_JDIOSevYneZp55Ub9nMvdDDZlf0eTVd5GY6DUEI,5008
|
|
2
|
+
dbos-0.7.1.dist-info/WHEEL,sha256=Vza3XR51HW1KmFP0iIMUVYIvz0uQuKJpIXKYOBGQyFQ,90
|
|
3
|
+
dbos-0.7.1.dist-info/entry_points.txt,sha256=z6GcVANQV7Uw_82H9Ob2axJX6V3imftyZsljdh-M1HU,54
|
|
4
|
+
dbos-0.7.1.dist-info/licenses/LICENSE,sha256=VGZit_a5-kdw9WT6fY5jxAWVwGQzgLFyPWrcVVUhVNU,1067
|
|
5
5
|
dbos/__init__.py,sha256=jjlBFzSAzO2e-LD5IKJw7bRqZjrxpF5Sn-_JUJJptHU,680
|
|
6
6
|
dbos/admin_sever.py,sha256=Qg5T3YRrbPW05PR_99yAaxgo1ugQrAp_uTeTqSfjm_k,3397
|
|
7
7
|
dbos/application_database.py,sha256=knFK8We8y6WrIpnFCKvFq5hvSuFQqUuJqOqDpSVMCPI,5521
|
|
@@ -12,7 +12,7 @@ dbos/dbos-config.schema.json,sha256=azpfmoDZg7WfSy3kvIsk9iEiKB_-VZt03VEOoXJAkqE,
|
|
|
12
12
|
dbos/dbos.py,sha256=RtDcvKe4sm1TlnCGU4cyex-UI7hMMlhgzmOl1NuRLo4,29294
|
|
13
13
|
dbos/dbos_config.py,sha256=NJVze2GkKgYUmcPP31Unb-QpsA0TzImEeQGJgVq6W6k,5352
|
|
14
14
|
dbos/decorators.py,sha256=lbPefsLK6Cya4cb7TrOcLglOpGT3pc6qjZdsQKlfZLg,629
|
|
15
|
-
dbos/error.py,sha256=
|
|
15
|
+
dbos/error.py,sha256=c2y7d3Cbb-ZOO-M9txcCxuyPE1bdnwKrJnXgJXYb-pQ,3437
|
|
16
16
|
dbos/fastapi.py,sha256=gx9hlpxYOiwbuhSlbY9bn5C-F_FsCbrJvkX9ZAvDG6U,3418
|
|
17
17
|
dbos/flask.py,sha256=azr4geMEGuuTBCyxIZmgDmmP-6s_pTIF-lGyp9Q4IB8,2430
|
|
18
18
|
dbos/kafka.py,sha256=LH3hbNapnkjLcuXNUtdGU0398JafWb-t0GwUl3LOzkc,3645
|
|
@@ -20,11 +20,12 @@ dbos/kafka_message.py,sha256=NYvOXNG3Qn7bghn1pv3fg4Pbs86ILZGcK4IB-MLUNu0,409
|
|
|
20
20
|
dbos/logger.py,sha256=D-aFSZUCHBP34J1IZ5YNkTrJW-rDiH3py_v9jLU4Yrk,3565
|
|
21
21
|
dbos/migrations/env.py,sha256=38SIGVbmn_VV2x2u1aHLcPOoWgZ84eCymf3g_NljmbU,1626
|
|
22
22
|
dbos/migrations/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
|
23
|
+
dbos/migrations/versions/50f3227f0b4b_fix_job_queue.py,sha256=ZtnsZFMuon-D0n8V5BR10jQEqJPUsYsOwt29FAoKG8g,868
|
|
23
24
|
dbos/migrations/versions/5c361fc04708_added_system_tables.py,sha256=QMgFMb0aLgC25YicsvPSr6AHRCA6Zd66hyaRUhwKzrQ,6404
|
|
24
25
|
dbos/migrations/versions/a3b18ad34abe_added_triggers.py,sha256=Rv0ZsZYZ_WdgGEULYsPfnp4YzaO5L198gDTgYY39AVA,2022
|
|
25
26
|
dbos/migrations/versions/eab0cc1d9a14_job_queue.py,sha256=_9-FCW-zOpCQfblTS_yRLtFiUaWlC1tM4BoKBTDeH9k,1395
|
|
26
27
|
dbos/py.typed,sha256=QfzXT1Ktfk3Rj84akygc7_42z0lRpCq0Ilh8OXI6Zas,44
|
|
27
|
-
dbos/queue.py,sha256=
|
|
28
|
+
dbos/queue.py,sha256=ngY1MN3xD7jAvEXlrl_D16FUPpP_vpRgbyERLfPyU9Y,1437
|
|
28
29
|
dbos/recovery.py,sha256=zqtO_ExGoIErLMVnbneU3VeHLVWvhV4jnfqssAVlQQk,2016
|
|
29
30
|
dbos/registrations.py,sha256=gMI-u05tv5bpvyddQGtoUgCsqARx51aOY7p0JXPafQo,6539
|
|
30
31
|
dbos/request.py,sha256=-FIwtknayvRl6OjvqO4V2GySVzSdP1Ft3cc9ZBS-PLY,928
|
|
@@ -34,7 +35,7 @@ dbos/scheduler/scheduler.py,sha256=Sz4EIpAtur7so2YajTic64GrTpa4qPw8QxXn0M34v80,1
|
|
|
34
35
|
dbos/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
36
|
dbos/schemas/application_database.py,sha256=q_Wr2XbiZNBYFkOtu7uKavo1T_cSOBblxKGHThYGGsY,962
|
|
36
37
|
dbos/schemas/system_database.py,sha256=ed4c1UntsD-cqXD0ekM4jvcYYEViavDh_G6c0pVDe7k,4938
|
|
37
|
-
dbos/system_database.py,sha256=
|
|
38
|
+
dbos/system_database.py,sha256=VSGFSPubbMokGYsZfRb6cQPltLfjoWM-Re_2Gj9qkRc,41844
|
|
38
39
|
dbos/templates/hello/README.md,sha256=GhxhBj42wjTt1fWEtwNriHbJuKb66Vzu89G4pxNHw2g,930
|
|
39
40
|
dbos/templates/hello/__package/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
41
|
dbos/templates/hello/__package/main.py,sha256=eI0SS9Nwj-fldtiuSzIlIG6dC91GXXwdRsoHxv6S_WI,2719
|
|
@@ -48,4 +49,4 @@ dbos/templates/hello/start_postgres_docker.py,sha256=lQVLlYO5YkhGPEgPqwGc7Y8uDKs
|
|
|
48
49
|
dbos/tracer.py,sha256=GaXDhdKKF_IQp5SAMipGXiDVwteRKjNbrXyYCH1mor0,2520
|
|
49
50
|
dbos/utils.py,sha256=hWj9iWDrby2cVEhb0pG-IdnrxLqP64NhkaWUXiLc8bA,402
|
|
50
51
|
version/__init__.py,sha256=L4sNxecRuqdtSFdpUGX3TtBi9KL3k7YsZVIvv-fv9-A,1678
|
|
51
|
-
dbos-0.7.
|
|
52
|
+
dbos-0.7.1.dist-info/RECORD,,
|
|
File without changes
|