feldera 0.110.0__tar.gz → 0.112.0__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 feldera might be problematic. Click here for more details.
- {feldera-0.110.0 → feldera-0.112.0}/PKG-INFO +1 -1
- {feldera-0.110.0 → feldera-0.112.0}/feldera/pipeline.py +6 -6
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/feldera_client.py +5 -1
- {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/PKG-INFO +1 -1
- {feldera-0.110.0 → feldera-0.112.0}/pyproject.toml +1 -1
- {feldera-0.110.0 → feldera-0.112.0}/tests/test_shared_pipeline1.py +26 -3
- {feldera-0.110.0 → feldera-0.112.0}/README.md +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/__init__.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/_callback_runner.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/_helpers.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/enums.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/output_handler.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/pipeline_builder.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/__init__.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/_helpers.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/_httprequests.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/config.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/errors.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/feldera_config.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/pipeline.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/sql_table.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/rest/sql_view.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/runtime_config.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera/stats.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/SOURCES.txt +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/dependency_links.txt +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/requires.txt +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/feldera.egg-info/top_level.txt +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/setup.cfg +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/tests/test_pipeline_builder.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/tests/test_shared_pipeline0.py +0 -0
- {feldera-0.110.0 → feldera-0.112.0}/tests/test_udf.py +0 -0
|
@@ -838,14 +838,14 @@ pipeline '{self.name}' to sync checkpoint '{uuid}'"""
|
|
|
838
838
|
|
|
839
839
|
def set_runtime_config(self, runtime_config: RuntimeConfig):
|
|
840
840
|
"""Updates the runtime config of the pipeline. The pipeline
|
|
841
|
-
must be stopped
|
|
842
|
-
|
|
841
|
+
must be stopped. Changing some pipeline configuration, such
|
|
842
|
+
as the number of workers, requires storage to be cleared.
|
|
843
843
|
|
|
844
|
-
For example, to set 'min_batch_size_records' on a pipeline
|
|
844
|
+
For example, to set 'min_batch_size_records' on a pipeline::
|
|
845
845
|
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
846
|
+
runtime_config = pipeline.runtime_config()
|
|
847
|
+
runtime_config.min_batch_size_records = 500
|
|
848
|
+
pipeline.set_runtime_config(runtime_config)
|
|
849
849
|
|
|
850
850
|
"""
|
|
851
851
|
|
|
@@ -272,7 +272,11 @@ class FelderaClient:
|
|
|
272
272
|
|
|
273
273
|
if status == "Running":
|
|
274
274
|
break
|
|
275
|
-
elif
|
|
275
|
+
elif (
|
|
276
|
+
status == "Stopped"
|
|
277
|
+
and len(resp.deployment_error or {}) > 0
|
|
278
|
+
and resp.deployment_desired_status == "Stopped"
|
|
279
|
+
):
|
|
276
280
|
raise RuntimeError(
|
|
277
281
|
f"""Unable to START the pipeline.
|
|
278
282
|
Reason: The pipeline is in a STOPPED state due to the following error:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import random
|
|
2
|
+
from uuid import uuid4
|
|
2
3
|
import time
|
|
3
4
|
from typing import Optional
|
|
4
5
|
from feldera.runtime_config import RuntimeConfig, Storage
|
|
@@ -36,7 +37,13 @@ def storage_cfg(
|
|
|
36
37
|
|
|
37
38
|
class TestCheckpointSync(SharedTestPipeline):
|
|
38
39
|
@enterprise_only
|
|
39
|
-
def test_checkpoint_sync(
|
|
40
|
+
def test_checkpoint_sync(
|
|
41
|
+
self,
|
|
42
|
+
from_uuid: bool = False,
|
|
43
|
+
random_uuid: bool = False,
|
|
44
|
+
clear_storage: bool = True,
|
|
45
|
+
auth_err: bool = False,
|
|
46
|
+
):
|
|
40
47
|
"""
|
|
41
48
|
CREATE TABLE t0 (c0 INT, c1 VARCHAR);
|
|
42
49
|
CREATE MATERIALIZED VIEW v0 AS SELECT c0 FROM t0;
|
|
@@ -56,7 +63,12 @@ class TestCheckpointSync(SharedTestPipeline):
|
|
|
56
63
|
uuid = self.pipeline.sync_checkpoint(wait=True)
|
|
57
64
|
|
|
58
65
|
self.pipeline.stop(force=True)
|
|
59
|
-
|
|
66
|
+
|
|
67
|
+
if clear_storage:
|
|
68
|
+
self.pipeline.clear_storage()
|
|
69
|
+
|
|
70
|
+
if random_uuid:
|
|
71
|
+
uuid = uuid4()
|
|
60
72
|
|
|
61
73
|
# Restart pipeline from checkpoint
|
|
62
74
|
storage_config = storage_cfg(
|
|
@@ -69,13 +81,24 @@ class TestCheckpointSync(SharedTestPipeline):
|
|
|
69
81
|
self.assertCountEqual(got_before, got_after)
|
|
70
82
|
|
|
71
83
|
self.pipeline.stop(force=True)
|
|
72
|
-
|
|
84
|
+
|
|
85
|
+
if clear_storage:
|
|
86
|
+
self.pipeline.clear_storage()
|
|
73
87
|
|
|
74
88
|
@enterprise_only
|
|
75
89
|
def test_checkpoint_sync_from_uuid(self):
|
|
76
90
|
self.test_checkpoint_sync(from_uuid=True)
|
|
77
91
|
|
|
92
|
+
@enterprise_only
|
|
93
|
+
def test_checkpoint_sync_without_clearing_storage(self):
|
|
94
|
+
self.test_checkpoint_sync(clear_storage=False)
|
|
95
|
+
|
|
78
96
|
@enterprise_only
|
|
79
97
|
def test_checkpoint_sync_err(self):
|
|
80
98
|
with self.assertRaisesRegex(RuntimeError, "SignatureDoesNotMatch"):
|
|
81
99
|
self.test_checkpoint_sync(auth_err=True)
|
|
100
|
+
|
|
101
|
+
@enterprise_only
|
|
102
|
+
def test_checkpoint_sync_err_nonexistent_checkpoint(self):
|
|
103
|
+
with self.assertRaisesRegex(RuntimeError, "were not found in source"):
|
|
104
|
+
self.test_checkpoint_sync(random_uuid=True, from_uuid=True)
|
|
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
|