Issues with Feast stack when deployed via Operator - due to using remote provider type
Expected Behavior
When deployed with the Operator, Feast should be fully functional.
Current Behavior
Several methods failing... e.g.
$ feast apply No project found in the repository. Using project name sample defined in feature_store.yaml Applying changes for project sample /feast/sdk/python/feast/feature_store.py:575: RuntimeWarning: On demand feature view is an experimental feature. This API is stable, but the functionality does not scale well for offline retrieval warnings.warn( 12/05/2024 02:35:01 PM feast.errors WARNING: Invalid error detail: : Expecting value: line 1 column 1 (char 0) Traceback (most recent call last): File "/usr/local/bin/feast", line 8, in <module> sys.exit(cli()) ^^^^^ File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1157, in __call__ return self.main(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1078, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1688, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/click/core.py", line 1434, in invoke return ctx.invoke(self.callback, **ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/click/core.py", line 783, in invoke return __callback(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func return f(get_current_context(), *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/cli.py", line 760, in apply_total_command apply_total(repo_config, repo, skip_source_validation) File "/feast/sdk/python/feast/repo_operations.py", line 404, in apply_total apply_total_with_repo_instance( File "/feast/sdk/python/feast/repo_operations.py", line 351, in apply_total_with_repo_instance store.apply(all_to_apply, objects_to_delete=all_to_delete, partial=False) File "/feast/sdk/python/feast/feature_store.py", line 933, in apply self._make_inferences( File "/feast/sdk/python/feast/feature_store.py", line 613, in _make_inferences update_feature_views_with_inferred_features_and_entities( File "/feast/sdk/python/feast/inference.py", line 180, in update_feature_views_with_inferred_features_and_entities _infer_features_and_entities( File "/feast/sdk/python/feast/inference.py", line 230, in _infer_features_and_entities provider.get_table_column_names_and_types_from_data_source( File "/feast/sdk/python/feast/infra/passthrough_provider.py", line 524, in get_table_column_names_and_types_from_data_source return self.offline_store.get_table_column_names_and_types_from_data_source( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/infra/offline_stores/remote.py", line 420, in get_table_column_names_and_types_from_data_source table = _send_retrieve_remote( ^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/infra/offline_stores/remote.py", line 494, in _send_retrieve_remote return _call_get(client, command_descriptor) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/infra/offline_stores/remote.py", line 503, in _call_get reader = client.do_get(ticket) ^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/arrow_error_handler.py", line 20, in wrapper raise e File "/feast/sdk/python/feast/arrow_error_handler.py", line 15, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/infra/offline_stores/remote.py", line 53, in do_get return super().do_get(ticket, options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "pyarrow/_flight.pyx", line 1633, in pyarrow._flight.FlightClient.do_get File "pyarrow/_flight.pyx", line 58, in pyarrow._flight.check_flight_status pyarrow._flight.FlightServerError: FlightServerBase.do_get must return a FlightDataStream. Detail: Python exception: Traceback (most recent call last): File "pyarrow/_flight.pyx", line 2185, in pyarrow._flight._do_get TypeError: FlightServerBase.do_get must return a FlightDataStream . gRPC client debug context: UNKNOWN:Error received from peer ipv4:172.30.141.142:80 {grpc_message:"FlightServerBase.do_get must return a FlightDataStream. Detail: Python exception: Traceback (most recent call last):\n File \"pyarrow/_flight.pyx\", line 2185, in pyarrow._flight._do_get\nTypeError: FlightServerBase.do_get must return a FlightDataStream\n", grpc_status:2, created_time:"2024-12-05T14:35:01.244475681+00:00"}. Client context: IOError: Server never sent a data message. Detail: Internal
$ python3 test_workflow.py --- Run feast apply to setup feature store on Postgres --- No project found in the repository. Using project name sample defined in feature_store.yaml Applying changes for project sample /feast/sdk/python/feast/feature_store.py:575: RuntimeWarning: On demand feature view is an experimental feature. This API is stable, but the functionality does not scale well for offline retrieval warnings.warn( Deploying infrastructure for driver_hourly_stats_fresh Deploying infrastructure for driver_hourly_stats--- Historical features for training --- driver_id event_timestamp label_driver_reported_satisfaction val_to_add val_to_add_2 conv_rate acc_rate avg_daily_trips 0 1001 2021-04-12 10:59:42 1 1 10 0.654609 0.089119 56 1 1002 2021-04-12 08:12:10 5 2 20 0.628438 0.045928 642 2 1003 2021-04-12 16:40:26 3 3 30 0.597835 0.370411 682--- Historical features for batch scoring --- driver_id event_timestamp label_driver_reported_satisfaction val_to_add val_to_add_2 conv_rate acc_rate avg_daily_trips 0 1001 2024-12-05 14:45:02.856623 1 1 10 0.258632 0.935114 59 1 1002 2024-12-05 14:45:02.856623 5 2 20 0.294726 0.869369 341 2 1003 2024-12-05 14:45:02.856623 3 3 30 0.759920 0.541704 69--- Load features into online store --- Materializing 2 feature views to 2024-12-05 14:45:03+00:00 into the remote online store.driver_hourly_stats from 2024-12-05 14:44:04+00:00 to 2024-12-05 14:45:03+00:00: 0it [00:00, ?it/s] driver_hourly_stats_fresh from 2024-12-05 14:44:04+00:00 to 2024-12-05 14:45:03+00:00: 0it [00:00, ?it/s]--- Online features --- Traceback (most recent call last): File "/feast-init/sample/feature_repo/test_workflow.py", line 131, in <module> run_demo() File "/feast-init/sample/feature_repo/test_workflow.py", line 26, in run_demo fetch_online_features(store) File "/feast-init/sample/feature_repo/test_workflow.py", line 122, in fetch_online_features returned_features = store.get_online_features( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/feature_store.py", line 1696, in get_online_features return provider.get_online_features( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/infra/passthrough_provider.py", line 249, in get_online_features return self.online_store.get_online_features( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/infra/online_stores/online_store.py", line 179, in get_online_features ) = utils._prepare_entities_to_read_from_online_store( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/utils.py", line 1036, in _prepare_entities_to_read_from_online_store ) = _get_online_request_context(registry, project, features, full_feature_names) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/utils.py", line 959, in _get_online_request_context ) = _get_feature_views_to_use( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/utils.py", line 907, in _get_feature_views_to_use fv = registry.get_any_feature_view(name, project, allow_cache) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/feast/sdk/python/feast/infra/registry/remote.py", line 290, in get_any_feature_view
Specifications
- Version: 0.42.0
- Platform: Kubernetes
- Subsystem: Feast deployed via Go Operator
Possible Solution
Move away from using remote provider for service interaction.