Skip to content

Commit 5e62844

Browse files
authored
chore: Remove go server references (#3554)
* chore: Remove go server callsites Signed-off-by: Achal Shah <achals@gmail.com> * remove more go traces Signed-off-by: Achal Shah <achals@gmail.com> * remove more go traces Signed-off-by: Achal Shah <achals@gmail.com> --------- Signed-off-by: Achal Shah <achals@gmail.com>
1 parent a76c6d0 commit 5e62844

File tree

8 files changed

+9
-403
lines changed

8 files changed

+9
-403
lines changed

sdk/python/feast/cli.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -684,12 +684,6 @@ def init_command(project_directory, minimal: bool, template: str):
684684
show_default=True,
685685
help="Specify a server type: 'http' or 'grpc'",
686686
)
687-
@click.option(
688-
"--go",
689-
is_flag=True,
690-
show_default=True,
691-
help="Use Go to serve",
692-
)
693687
@click.option(
694688
"--no-access-log",
695689
is_flag=True,
@@ -708,7 +702,6 @@ def serve_command(
708702
host: str,
709703
port: int,
710704
type_: str,
711-
go: bool,
712705
no_access_log: bool,
713706
no_feature_log: bool,
714707
):
@@ -730,10 +723,6 @@ def serve_command(
730723
cli_check_repo(repo, fs_yaml_file)
731724
store = FeatureStore(repo_path=str(repo), fs_yaml_file=fs_yaml_file)
732725

733-
if go:
734-
# Turn on Go feature retrieval.
735-
store.config.go_feature_serving = True
736-
737726
store.serve(host, port, type_, no_access_log, no_feature_log)
738727

739728

sdk/python/feast/feature_store.py

Lines changed: 6 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
from datetime import datetime, timedelta
2020
from pathlib import Path
2121
from typing import (
22-
TYPE_CHECKING,
2322
Any,
2423
Callable,
2524
Dict,
@@ -94,19 +93,13 @@
9493
from feast.request_feature_view import RequestFeatureView
9594
from feast.saved_dataset import SavedDataset, SavedDatasetStorage, ValidationReference
9695
from feast.stream_feature_view import StreamFeatureView
97-
from feast.type_map import (
98-
feast_value_type_to_python_type,
99-
python_values_to_proto_values,
100-
)
96+
from feast.type_map import python_values_to_proto_values
10197
from feast.usage import log_exceptions, log_exceptions_and_usage, set_usage_attribute
10298
from feast.value_type import ValueType
10399
from feast.version import get_version
104100

105101
warnings.simplefilter("once", DeprecationWarning)
106102

107-
if TYPE_CHECKING:
108-
from feast.embedded_go.online_features_service import EmbeddedOnlineFeatureServer
109-
110103

111104
class FeatureStore:
112105
"""
@@ -117,14 +110,12 @@ class FeatureStore:
117110
repo_path: The path to the feature repo.
118111
_registry: The registry for the feature store.
119112
_provider: The provider for the feature store.
120-
_go_server: The (optional) Go feature server for the feature store.
121113
"""
122114

123115
config: RepoConfig
124116
repo_path: Path
125117
_registry: BaseRegistry
126118
_provider: Provider
127-
_go_server: Optional["EmbeddedOnlineFeatureServer"]
128119

129120
@log_exceptions
130121
def __init__(
@@ -179,7 +170,6 @@ def __init__(
179170
self._registry = r
180171

181172
self._provider = get_provider(self.config)
182-
self._go_server = None
183173

184174
@log_exceptions
185175
def version(self) -> str:
@@ -1009,11 +999,6 @@ def apply(
1009999

10101000
self._registry.commit()
10111001

1012-
# go server needs to be reloaded to apply new configuration.
1013-
# we're stopping it here
1014-
# new server will be instantiated on the next online request
1015-
self._teardown_go_server()
1016-
10171002
@log_exceptions_and_usage
10181003
def teardown(self):
10191004
"""Tears down all local and cloud resources for the feature store."""
@@ -1026,7 +1011,6 @@ def teardown(self):
10261011

10271012
self._get_provider().teardown_infra(self.project, tables, entities)
10281013
self._registry.teardown()
1029-
self._teardown_go_server()
10301014

10311015
@log_exceptions_and_usage
10321016
def get_historical_features(
@@ -1603,18 +1587,6 @@ def get_online_features(
16031587
native_entity_values=True,
16041588
)
16051589

1606-
def _lazy_init_go_server(self):
1607-
"""Lazily initialize self._go_server if it hasn't been initialized before."""
1608-
from feast.embedded_go.online_features_service import (
1609-
EmbeddedOnlineFeatureServer,
1610-
)
1611-
1612-
# Lazily start the go server on the first request
1613-
if self._go_server is None:
1614-
self._go_server = EmbeddedOnlineFeatureServer(
1615-
str(self.repo_path.absolute()), self.config, self
1616-
)
1617-
16181590
def _get_online_features(
16191591
self,
16201592
features: Union[List[str], FeatureService],
@@ -1630,35 +1602,6 @@ def _get_online_features(
16301602
for k, v in entity_values.items()
16311603
}
16321604

1633-
# If the embedded Go code is enabled, send request to it instead of going through regular Python logic.
1634-
if self.config.go_feature_retrieval and self._go_server:
1635-
self._lazy_init_go_server()
1636-
1637-
entity_native_values: Dict[str, List[Any]]
1638-
if not native_entity_values:
1639-
# Convert proto types to native types since Go feature server currently
1640-
# only handles native types.
1641-
# TODO(felixwang9817): Remove this logic once native types are supported.
1642-
entity_native_values = {
1643-
k: [
1644-
feast_value_type_to_python_type(proto_value)
1645-
for proto_value in v
1646-
]
1647-
for k, v in entity_value_lists.items()
1648-
}
1649-
else:
1650-
entity_native_values = entity_value_lists
1651-
1652-
return self._go_server.get_online_features(
1653-
features_refs=features if isinstance(features, list) else [],
1654-
feature_service=features
1655-
if isinstance(features, FeatureService)
1656-
else None,
1657-
entities=entity_native_values,
1658-
request_data={}, # TODO: add request data parameter to public API
1659-
full_feature_names=full_feature_names,
1660-
)
1661-
16621605
_feature_refs = self._get_features(features, allow_cache=True)
16631606
(
16641607
requested_feature_views,
@@ -2283,45 +2226,12 @@ def serve(
22832226
) -> None:
22842227
"""Start the feature consumption server locally on a given port."""
22852228
type_ = type_.lower()
2286-
if self.config.go_feature_serving and self._go_server:
2287-
# Start go server instead of python if the flag is enabled
2288-
self._lazy_init_go_server()
2289-
enable_logging = (
2290-
self.config.feature_server
2291-
and self.config.feature_server.feature_logging
2292-
and self.config.feature_server.feature_logging.enabled
2293-
and not no_feature_log
2294-
)
2295-
logging_options = (
2296-
self.config.feature_server.feature_logging
2297-
if enable_logging and self.config.feature_server
2298-
else None
2229+
if type_ != "http":
2230+
raise ValueError(
2231+
f"Python server only supports 'http'. Got '{type_}' instead."
22992232
)
2300-
if type_ == "http":
2301-
self._go_server.start_http_server(
2302-
host,
2303-
port,
2304-
enable_logging=enable_logging,
2305-
logging_options=logging_options,
2306-
)
2307-
elif type_ == "grpc":
2308-
self._go_server.start_grpc_server(
2309-
host,
2310-
port,
2311-
enable_logging=enable_logging,
2312-
logging_options=logging_options,
2313-
)
2314-
else:
2315-
raise ValueError(
2316-
f"Unsupported server type '{type_}'. Must be one of 'http' or 'grpc'."
2317-
)
2318-
else:
2319-
if type_ != "http":
2320-
raise ValueError(
2321-
f"Python server only supports 'http'. Got '{type_}' instead."
2322-
)
2323-
# Start the python server if go server isn't enabled
2324-
feature_server.start_server(self, host, port, no_access_log)
2233+
# Start the python server
2234+
feature_server.start_server(self, host, port, no_access_log)
23252235

23262236
@log_exceptions_and_usage
23272237
def get_feature_server_endpoint(self) -> Optional[str]:
@@ -2367,9 +2277,6 @@ def serve_transformations(self, port: int) -> None:
23672277

23682278
transformation_server.start_server(self, port)
23692279

2370-
def _teardown_go_server(self):
2371-
self._go_server = None
2372-
23732280
@log_exceptions_and_usage
23742281
def write_logged_features(
23752282
self, logs: Union[pa.Table, Path], source: FeatureService

sdk/python/feast/repo_config.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,12 +166,6 @@ class RepoConfig(FeastBaseModel):
166166

167167
repo_path: Optional[Path] = None
168168

169-
go_feature_serving: Optional[bool] = False
170-
""" If True, use the Go feature server instead of the Python feature server. """
171-
172-
go_feature_retrieval: Optional[bool] = False
173-
""" If True, use the embedded Go code to retrieve features instead of the Python SDK. """
174-
175169
entity_key_serialization_version: StrictInt = 1
176170
""" Entity key serialization version: This version is used to control what serialization scheme is
177171
used when writing data to the online store.

sdk/python/tests/conftest.py

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,6 @@ def pytest_configure(config):
8080
"markers", "integration: mark test that has external dependencies"
8181
)
8282
config.addinivalue_line("markers", "benchmark: mark benchmarking tests")
83-
config.addinivalue_line(
84-
"markers", "goserver: mark tests that use the go feature server"
85-
)
8683
config.addinivalue_line(
8784
"markers",
8885
"universal_online_stores: mark tests that can be run against different online stores",
@@ -106,18 +103,11 @@ def pytest_addoption(parser):
106103
default=False,
107104
help="Run benchmark tests",
108105
)
109-
parser.addoption(
110-
"--goserver",
111-
action="store_true",
112-
default=False,
113-
help="Run tests that use the go feature server",
114-
)
115106

116107

117108
def pytest_collection_modifyitems(config, items: List[Item]):
118109
should_run_integration = config.getoption("--integration") is True
119110
should_run_benchmark = config.getoption("--benchmark") is True
120-
should_run_goserver = config.getoption("--goserver") is True
121111

122112
integration_tests = [t for t in items if "integration" in t.keywords]
123113
if not should_run_integration:
@@ -137,15 +127,6 @@ def pytest_collection_modifyitems(config, items: List[Item]):
137127
for t in benchmark_tests:
138128
items.append(t)
139129

140-
goserver_tests = [t for t in items if "goserver" in t.keywords]
141-
if not should_run_goserver:
142-
for t in goserver_tests:
143-
items.remove(t)
144-
else:
145-
items.clear()
146-
for t in goserver_tests:
147-
items.append(t)
148-
149130

150131
@pytest.fixture
151132
def simple_dataset_1() -> pd.DataFrame:
@@ -276,9 +257,6 @@ def pytest_generate_tests(metafunc: pytest.Metafunc):
276257
]
277258
)
278259

279-
if "goserver" in markers:
280-
extra_dimensions.append({"go_feature_serving": True})
281-
282260
configs = []
283261
if offline_stores:
284262
for provider, offline_store_creator in offline_stores:
@@ -291,12 +269,6 @@ def pytest_generate_tests(metafunc: pytest.Metafunc):
291269
"online_store_creator": online_store_creator,
292270
**dim,
293271
}
294-
# temporary Go works only with redis
295-
if config.get("go_feature_serving") and (
296-
not isinstance(online_store, dict)
297-
or online_store["type"] != "redis"
298-
):
299-
continue
300272

301273
# aws lambda works only with dynamo
302274
if (

sdk/python/tests/integration/feature_repos/integration_test_repo_config.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ class IntegrationTestRepoConfig:
3737
full_feature_names: bool = True
3838
infer_features: bool = False
3939
python_feature_server: bool = False
40-
go_feature_serving: bool = False
4140

4241
def __repr__(self) -> str:
4342
if not self.online_store_creator:
@@ -61,7 +60,6 @@ def __repr__(self) -> str:
6160
f"{self.offline_store_creator.__name__.split('.')[-1].replace('DataSourceCreator', '')}",
6261
online_store_type,
6362
f"python_fs:{self.python_feature_server}",
64-
f"go_fs:{self.go_feature_serving}",
6563
]
6664
)
6765

@@ -77,6 +75,5 @@ def __eq__(self, other):
7775
and self.online_store == other.online_store
7876
and self.offline_store_creator == other.offline_store_creator
7977
and self.online_store_creator == other.online_store_creator
80-
and self.go_feature_serving == other.go_feature_serving
8178
and self.python_feature_server == other.python_feature_server
8279
)

sdk/python/tests/integration/feature_repos/repo_configuration.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,6 @@ def construct_test_environment(
460460
batch_engine=test_repo_config.batch_engine,
461461
repo_path=repo_dir_name,
462462
feature_server=feature_server,
463-
go_feature_serving=test_repo_config.go_feature_serving,
464463
entity_key_serialization_version=entity_key_serialization_version,
465464
)
466465

0 commit comments

Comments
 (0)