-
Notifications
You must be signed in to change notification settings - Fork 141
Comparing changes
Open a pull request
base repository: feldera/feldera
base: v0.313.0
head repository: feldera/feldera
compare: v0.314.0
- 7 commits
- 96 files changed
- 3 contributors
Commits on Jun 22, 2026
-
[DBSP] Testing API to wait for all compactions to complete
Signed-off-by: Mihai Budiu <mbudiu@feldera.com>
Configuration menu - View commit details
-
Copy full SHA for bde027b - Browse repository at this point
Copy the full SHA bde027bView commit details -
[SQL] Java test support for the API that blocks for compaction
Signed-off-by: Mihai Budiu <mbudiu@feldera.com>
Configuration menu - View commit details
-
Copy full SHA for a06e8f2 - Browse repository at this point
Copy the full SHA a06e8f2View commit details -
[SQL] Use the nicer formatting function for test outputs where possible
Signed-off-by: Mihai Budiu <mbudiu@feldera.com>
Configuration menu - View commit details
-
Copy full SHA for 20121b5 - Browse repository at this point
Copy the full SHA 20121b5View commit details
Commits on Jun 23, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 4150b39 - Browse repository at this point
Copy the full SHA 4150b39View commit details -
pipeline-manager: fix row locking
When a table row is retrieved for update purposes, the row itself is now locked by adding `FOR UPDATE` to the query. Although the current global lock mechanism on the database connection of the API server prevents concurrent access, the runner can separately access/change the rows (although, only certain fields when they are in its domain). One such concurrent one is setting of the desired resources status, and the transition of current resources status based on it. A lock timeout of 10 seconds is added along with two custom error types `LockTookTooLong` and `DeadlockDetected`. Both correspond to HTTP error code 503, indicating to the client it should retry. One example of concurrent access: 1. Assume a pipeline is fully compiled 2. User: calls `pipeline.start(wait=False)` 3. API server: `/start` is called -> sets desired status to `Provisioned` -> returns 4. User: call returns as `wait=False` 5. Runner: tasked with transitioning the current status towards `Provisioned` 6. Runner: starts transaction 7. Runner: retrieves the pipeline to check that the current status is `Stopped` and desired status is not `Stopped`, as otherwise it will not still transition toward `Provisioned`. This is not the case. 8. User calls `pipeline.stop(wait=True)` 9. API server: `/stop` is called -> sets desired status to `Stopped` -> returns 10. API server: `GET pipeline` is called -> returns 11. User call returns: sees current and desired status is `Stopped` 12. Runner: transitions the status to Provisioning (as check at step (7) passed) 13. Runner: commits transaction 14. Runner: tasked with transitioning the current status towards `Stopped`, and performs that operation. Current status: `Stopping`. 15. User: calls `pipeline.start()` 16. API server: `/start` is called -> desired status is right now `Stopped`, and current status is `Stopping`, so setting desired status to `Provisioned` is not allowed -> returns error `IllegalPipelineAction` 17. User: `FelderaAPIError` exception is raised This fixes it by having the runner take an FOR UPDATE lock at step (7), and as such the API server at step (9) will be forced to wait until the runner is finished before being able to acquire the lock itself. After which, at step (11) the user will get back that the current status is not yet `Stopped` and will continue to poll until it is. As such, the user starting the pipeline again (step (15)) only happens once the pipeline is truly stopped, and will succeed. Signed-off-by: Simon Kassing <simon.kassing@feldera.com>Configuration menu - View commit details
-
Copy full SHA for d59330f - Browse repository at this point
Copy the full SHA d59330fView commit details -
python: more lenient
test_refresh_version_due_to_status_changesThe number of refresh changes depends on the number of runtime, storage, and resources status updates, which can be more frequent when under heavy load. Signed-off-by: Simon Kassing <simon.kassing@feldera.com>
Configuration menu - View commit details
-
Copy full SHA for 7b1b0d4 - Browse repository at this point
Copy the full SHA 7b1b0d4View commit details -
[SQLLIB] Rename truncate -> trunc
Signed-off-by: Mihai Budiu <mbudiu@feldera.com>
Configuration menu - View commit details
-
Copy full SHA for ad8a977 - Browse repository at this point
Copy the full SHA ad8a977View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.313.0...v0.314.0