-
Notifications
You must be signed in to change notification settings - Fork 16
Executor #419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Executor #419
Conversation
Pull Request Test Coverage Report for Build 1914911059
💛 - Coveralls |
# Conflicts: # services/src/error.rs
Co-authored-by: Christian Beilschmidt <[email protected]>
# Conflicts: # operators/src/error.rs # services/src/pro/contexts/in_memory.rs
This reverts commit fe648d3.
Restricted Hash and Eq implementation to concrete Key type
# Conflicts: # operators/src/error.rs
… state, i.e., only plots use the executor);
# Conflicts: # services/src/error.rs
…r FeatureCollectionRows to allow spatio-temporal filtering;
…atic result stream. This commit contains implementations for VectorQueryProcessor and RasterQueryProcessor.
# Conflicts: # services/src/error.rs
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems to work 😄
2x NDVI Raster
2022-02-17T08:29:49.881696Z DEBUG geoengine_operators::pro::executor: Starting new computation for request: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 33.75, y: 0.0 }, lower_right_coordinate: Coordinate2D { x: 45.0, y: -11.25 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }
2022-02-17T08:29:49.881885Z DEBUG geoengine_operators::pro::executor: Joining running computation for request. New: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 33.75, y: 0.0 }, lower_right_coordinate: Coordinate2D { x: 45.0, y: -11.25 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }, Running: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 33.75, y: 0.0 }, lower_right_coordinate: Coordinate2D { x: 45.0, y: -11.25 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }
2022-02-17T08:29:49.884395Z DEBUG geoengine_operators::pro::executor: Computation finished. Notifying consumer streams. Request: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 33.75, y: 0.0 }, lower_right_coordinate: Coordinate2D { x: 45.0, y: -11.25 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }
Raster-Vector-Join of NDVI and Natural Earth Points, then 2x Histogram:
2022-02-17T08:34:16.807763Z DEBUG geoengine_operators::pro::executor: Starting new computation for request: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 45.0, y: 22.5 }, lower_right_coordinate: Coordinate2D { x: 56.25, y: 11.25 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }
2022-02-17T08:34:16.809175Z DEBUG geoengine_operators::pro::executor: Stream progressed too far or results do not cover requested result. Starting new computation for request: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 33.75, y: 11.25 }, lower_right_coordinate: Coordinate2D { x: 45.0, y: 0.0 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }
2022-02-17T08:34:16.809332Z DEBUG geoengine_operators::pro::executor: Stream progressed too far or results do not cover requested result. Starting new computation for request: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 45.0, y: 45.0 }, lower_right_coordinate: Coordinate2D { x: 56.25, y: 33.75 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }
2022-02-17T08:34:16.809545Z DEBUG geoengine_operators::pro::executor: Stream progressed too far or results do not cover requested result. Starting new computation for request: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 0.0, y: 56.25 }, lower_right_coordinate: Coordinate2D { x: 11.25, y: 45.0 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }
2022-02-17T08:34:16.810209Z DEBUG geoengine_operators::pro::executor: Computation finished. Notifying consumer streams. Request: RasterTaskDescription { id: WorkflowId(8df9b0e6-e4b4-586e-90a3-6cf0f08c4e62), spatial_bounds: SpatialPartition2D { upper_left_coordinate: Coordinate2D { x: 45.0, y: 22.5 }, lower_right_coordinate: Coordinate2D { x: 56.25, y: 11.25 } }, temporal_bounds: TimeInterval [1396353600000, 1396353600000), _p: PhantomData }
Maybe we need some experiments when it joins and when this does not work. Maybe chunk sizes for vector data are too small 🤷 .
fn slice_result(&self, result: &Self::ResultType) -> Option<Self::ResultType> { | ||
Some(match result { | ||
Ok(wpo) => Ok(wpo.clone()), | ||
Err(_e) => Err(crate::error::Error::NotYetImplemented), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What would be necessary to do in case of an error?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The problem here is that our Error type is not cloneable. So I cannot return the original error received from the computation.
Either we find a way to make our error cloneable (which is impossible due to wrapped errors I think), or we introduce a new error type that contains e.g, a meaningful message .
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I guess this is a huge topic to discuss.
This is a first draft of the executor integration. I implemented a noop executor that is used when pro-feature is inactive.
There is a sample application in the "plots" endpoint.