From 599dbbbd8ef10bf42eec6df3b0d74503438d5ed2 Mon Sep 17 00:00:00 2001 From: Kevin Zhang Date: Mon, 7 Mar 2022 16:16:04 -0800 Subject: [PATCH 1/7] fix: Fix spark docs (#2382) * Fix spark docs Signed-off-by: Kevin Zhang * Fix readme.md Signed-off-by: Kevin Zhang * Fix md Signed-off-by: Kevin Zhang Co-authored-by: Danny Chiao (cherry picked from commit d4a606ad68fedeb12839038a956043a66e6f518f) --- docs/SUMMARY.md | 2 ++ docs/getting-started/architecture-and-components/README.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index deec3e9eed..45fc264087 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -60,11 +60,13 @@ * [Snowflake](reference/data-sources/snowflake.md) * [BigQuery](reference/data-sources/bigquery.md) * [Redshift](reference/data-sources/redshift.md) + * [Spark](reference/data-sources/spark.md) * [Offline stores](reference/offline-stores/README.md) * [File](reference/offline-stores/file.md) * [Snowflake](reference/offline-stores/snowflake.md) * [BigQuery](reference/offline-stores/bigquery.md) * [Redshift](reference/offline-stores/redshift.md) + * [Spark](reference/offline-stores/spark.md) * [Online stores](reference/online-stores/README.md) * [SQLite](reference/online-stores/sqlite.md) * [Redis](reference/online-stores/redis.md) diff --git a/docs/getting-started/architecture-and-components/README.md b/docs/getting-started/architecture-and-components/README.md index c5a9aea9a1..c3286b8315 100644 --- a/docs/getting-started/architecture-and-components/README.md +++ b/docs/getting-started/architecture-and-components/README.md @@ -4,7 +4,7 @@ {% page-ref page="feature-repository.md" %} -{% page-ref page="untitled.md" %} +{% page-ref page="registry.md" %} {% page-ref page="offline-store.md" %} From a6211cfd46fe095ab3118b46ad5d2991151f44cf Mon Sep 17 00:00:00 2001 From: Achal Shah Date: Mon, 7 Mar 2022 12:12:16 -0800 Subject: [PATCH 2/7] fix: Use the correct dockerhub image tag when building feature servers (#2372) * fix: Use the correct dockerhub image tag when building feature servers Signed-off-by: Achal Shah * Print attempt Signed-off-by: Achal Shah * Increase sleep interval Signed-off-by: Achal Shah * More logging and sleep Signed-off-by: Achal Shah * change logging to debug Signed-off-by: Achal Shah * Change the dockerimage name Signed-off-by: Achal Shah * Change version to have periods Signed-off-by: Achal Shah * Change version entirely Signed-off-by: Achal Shah * Undo unintended changes Signed-off-by: Achal Shah * Remove dead branch Signed-off-by: Achal Shah --- sdk/python/feast/infra/aws.py | 8 ++++---- .../tests/integration/feature_repos/repo_configuration.py | 8 ++++---- .../integration/online_store/test_universal_online.py | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/sdk/python/feast/infra/aws.py b/sdk/python/feast/infra/aws.py index 104e20388a..b7cc61de0e 100644 --- a/sdk/python/feast/infra/aws.py +++ b/sdk/python/feast/infra/aws.py @@ -119,6 +119,8 @@ def _deploy_feature_server(self, project: str, image_uri: str): lambda_client = boto3.client("lambda") api_gateway_client = boto3.client("apigatewayv2") function = aws_utils.get_lambda_function(lambda_client, resource_name) + _logger.debug("Using function name: %s", resource_name) + _logger.debug("Found function: %s", function) if function is None: # If the Lambda function does not exist, create it. @@ -309,7 +311,7 @@ def _create_or_get_repository_uri(self, ecr_client): def _get_lambda_name(project: str): lambda_prefix = AWS_LAMBDA_FEATURE_SERVER_REPOSITORY - lambda_suffix = f"{project}-{_get_docker_image_version()}" + lambda_suffix = f"{project}-{_get_docker_image_version().replace('.', '_')}" # AWS Lambda name can't have the length greater than 64 bytes. # This usually occurs during integration tests where feast version is long if len(lambda_prefix) + len(lambda_suffix) >= 63: @@ -338,7 +340,7 @@ def _get_docker_image_version() -> str: else: version = get_version() if "dev" in version: - version = version[: version.find("dev") - 1].replace(".", "_") + version = version[: version.find("dev") - 1] _logger.warning( "You are trying to use AWS Lambda feature server while Feast is in a development mode. " f"Feast will use a docker image version {version} derived from Feast SDK " @@ -347,8 +349,6 @@ def _get_docker_image_version() -> str: "> git fetch --all --tags\n" "> pip install -e sdk/python" ) - else: - version = version.replace(".", "_") return version diff --git a/sdk/python/tests/integration/feature_repos/repo_configuration.py b/sdk/python/tests/integration/feature_repos/repo_configuration.py index 89aea727a6..7381c76d0c 100644 --- a/sdk/python/tests/integration/feature_repos/repo_configuration.py +++ b/sdk/python/tests/integration/feature_repos/repo_configuration.py @@ -70,7 +70,6 @@ if os.getenv("FEAST_IS_LOCAL_TEST", "False") != "True": DEFAULT_FULL_REPO_CONFIGS.extend( [ - # Redis configurations IntegrationTestRepoConfig(online_store=REDIS_CONFIG), IntegrationTestRepoConfig(online_store=REDIS_CLUSTER_CONFIG), # GCP configurations @@ -263,7 +262,7 @@ def values(self): def construct_universal_feature_views( - data_sources: UniversalDataSources, + data_sources: UniversalDataSources, with_odfv: bool = True, ) -> UniversalFeatureViews: driver_hourly_stats = create_driver_hourly_stats_feature_view(data_sources.driver) return UniversalFeatureViews( @@ -275,7 +274,9 @@ def construct_universal_feature_views( "driver": driver_hourly_stats, "input_request": create_conv_rate_request_data_source(), } - ), + ) + if with_odfv + else None, driver_age_request_fv=create_driver_age_request_feature_view(), order=create_order_feature_view(data_sources.orders), location=create_location_stats_feature_view(data_sources.location), @@ -358,7 +359,6 @@ def construct_test_environment( registry = RegistryConfig( path=str(Path(repo_dir_name) / "registry.db"), cache_ttl_seconds=1, ) - config = RepoConfig( registry=registry, project=project, diff --git a/sdk/python/tests/integration/online_store/test_universal_online.py b/sdk/python/tests/integration/online_store/test_universal_online.py index bdbdfb3555..c85d320d70 100644 --- a/sdk/python/tests/integration/online_store/test_universal_online.py +++ b/sdk/python/tests/integration/online_store/test_universal_online.py @@ -271,7 +271,7 @@ def _get_online_features_dict_remotely( if response.get("message") != "Internal Server Error": break # Sleep between retries to give the server some time to start - time.sleep(1) + time.sleep(15) else: raise Exception("Failed to get online features from remote feature server") if "metadata" not in response: From 993b8cc1af2b73cde72ad2713120436e84c5659e Mon Sep 17 00:00:00 2001 From: Danny Chiao Date: Mon, 7 Mar 2022 16:58:15 -0500 Subject: [PATCH 3/7] fix: Making a name for data sources not a breaking change (#2379) * fix: Making a name for data sources not a breaking change Signed-off-by: Danny Chiao * fix test Signed-off-by: Danny Chiao --- .../infra/offline_stores/bigquery_source.py | 16 ++++++++------ .../feast/infra/offline_stores/file_source.py | 4 ++-- .../infra/offline_stores/redshift_source.py | 21 ++++++++++--------- .../infra/offline_stores/snowflake_source.py | 16 ++++++++------ .../registration/test_inference.py | 13 +++++++++--- 5 files changed, 43 insertions(+), 27 deletions(-) diff --git a/sdk/python/feast/infra/offline_stores/bigquery_source.py b/sdk/python/feast/infra/offline_stores/bigquery_source.py index 6c5be2b5f4..92b6939fc3 100644 --- a/sdk/python/feast/infra/offline_stores/bigquery_source.py +++ b/sdk/python/feast/infra/offline_stores/bigquery_source.py @@ -3,7 +3,7 @@ from feast import type_map from feast.data_source import DataSource -from feast.errors import DataSourceNoNameException, DataSourceNotFoundException +from feast.errors import DataSourceNotFoundException from feast.protos.feast.core.DataSource_pb2 import DataSource as DataSourceProto from feast.protos.feast.core.SavedDataset_pb2 import ( SavedDatasetStorage as SavedDatasetStorageProto, @@ -16,7 +16,6 @@ class BigQuerySource(DataSource): def __init__( self, - name: Optional[str] = None, event_timestamp_column: Optional[str] = "", table: Optional[str] = None, table_ref: Optional[str] = None, @@ -24,11 +23,11 @@ def __init__( field_mapping: Optional[Dict[str, str]] = None, date_partition_column: Optional[str] = "", query: Optional[str] = None, + name: Optional[str] = None, ): """Create a BigQuerySource from an existing table or query. Args: - name (optional): Name for the source. Defaults to the table_ref if not specified. table (optional): The BigQuery table where features can be found. table_ref (optional): (Deprecated) The BigQuery table where features can be found. event_timestamp_column: Event timestamp column used for point in time joins of feature values. @@ -37,13 +36,13 @@ def __init__( or view. Only used for feature columns, not entities or timestamp columns. date_partition_column (optional): Timestamp column used for partitioning. query (optional): SQL query to execute to generate data for this data source. - + name (optional): Name for the source. Defaults to the table_ref if not specified. Example: >>> from feast import BigQuerySource >>> my_bigquery_source = BigQuerySource(table="gcp_project:bq_dataset.bq_table") """ if table is None and table_ref is None and query is None: - raise ValueError('No "table" argument provided.') + raise ValueError('No "table" or "query" argument provided.') if not table and table_ref: warnings.warn( ( @@ -63,7 +62,12 @@ def __init__( elif table_ref: _name = table_ref else: - raise DataSourceNoNameException() + warnings.warn( + ( + "Starting in Feast 0.21, Feast will require either a name for a data source (if using query) or `table`." + ), + DeprecationWarning, + ) super().__init__( _name if _name else "", diff --git a/sdk/python/feast/infra/offline_stores/file_source.py b/sdk/python/feast/infra/offline_stores/file_source.py index 59e703dd6f..756ec2a65e 100644 --- a/sdk/python/feast/infra/offline_stores/file_source.py +++ b/sdk/python/feast/infra/offline_stores/file_source.py @@ -20,19 +20,18 @@ class FileSource(DataSource): def __init__( self, path: str, - name: Optional[str] = "", event_timestamp_column: Optional[str] = "", file_format: Optional[FileFormat] = None, created_timestamp_column: Optional[str] = "", field_mapping: Optional[Dict[str, str]] = None, date_partition_column: Optional[str] = "", s3_endpoint_override: Optional[str] = None, + name: Optional[str] = "", ): """Create a FileSource from a file containing feature data. Only Parquet format supported. Args: - name (optional): Name for the file source. Defaults to the path. path: File path to file containing feature data. Must contain an event_timestamp column, entity columns and feature columns. event_timestamp_column: Event timestamp column used for point in time joins of feature values. @@ -42,6 +41,7 @@ def __init__( or view. Only used for feature columns, not entities or timestamp columns. date_partition_column (optional): Timestamp column used for partitioning. s3_endpoint_override (optional): Overrides AWS S3 enpoint with custom S3 storage + name (optional): Name for the file source. Defaults to the path. Examples: >>> from feast import FileSource diff --git a/sdk/python/feast/infra/offline_stores/redshift_source.py b/sdk/python/feast/infra/offline_stores/redshift_source.py index fbc42e31fe..8573396aca 100644 --- a/sdk/python/feast/infra/offline_stores/redshift_source.py +++ b/sdk/python/feast/infra/offline_stores/redshift_source.py @@ -1,12 +1,9 @@ +import warnings from typing import Callable, Dict, Iterable, Optional, Tuple from feast import type_map from feast.data_source import DataSource -from feast.errors import ( - DataSourceNoNameException, - DataSourceNotFoundException, - RedshiftCredentialsError, -) +from feast.errors import DataSourceNotFoundException, RedshiftCredentialsError from feast.protos.feast.core.DataSource_pb2 import DataSource as DataSourceProto from feast.protos.feast.core.SavedDataset_pb2 import ( SavedDatasetStorage as SavedDatasetStorageProto, @@ -19,7 +16,6 @@ class RedshiftSource(DataSource): def __init__( self, - name: Optional[str] = None, event_timestamp_column: Optional[str] = "", table: Optional[str] = None, schema: Optional[str] = None, @@ -27,12 +23,12 @@ def __init__( field_mapping: Optional[Dict[str, str]] = None, date_partition_column: Optional[str] = "", query: Optional[str] = None, + name: Optional[str] = None, ): """ Creates a RedshiftSource object. Args: - name (optional): Name for the source. Defaults to the table_ref if not specified. event_timestamp_column (optional): Event timestamp column used for point in time joins of feature values. table (optional): Redshift table where the features are stored. @@ -43,6 +39,7 @@ def __init__( source to column names in a feature table or view. date_partition_column (optional): Timestamp column used for partitioning. query (optional): The query to be executed to obtain the features. + name (optional): Name for the source. Defaults to the table_ref if not specified. """ if table is None and query is None: raise ValueError('No "table" argument provided.') @@ -51,11 +48,15 @@ def __init__( if table: _name = table else: - raise DataSourceNoNameException() + warnings.warn( + ( + "Starting in Feast 0.21, Feast will require either a name for a data source (if using query) or `table`." + ), + DeprecationWarning, + ) - # TODO(adchia): figure out what to do if user uses the query to start super().__init__( - _name, + _name if _name else "", event_timestamp_column, created_timestamp_column, field_mapping, diff --git a/sdk/python/feast/infra/offline_stores/snowflake_source.py b/sdk/python/feast/infra/offline_stores/snowflake_source.py index 825190b474..6ca5df7d6f 100644 --- a/sdk/python/feast/infra/offline_stores/snowflake_source.py +++ b/sdk/python/feast/infra/offline_stores/snowflake_source.py @@ -1,8 +1,8 @@ +import warnings from typing import Callable, Dict, Iterable, Optional, Tuple from feast import type_map from feast.data_source import DataSource -from feast.errors import DataSourceNoNameException from feast.protos.feast.core.DataSource_pb2 import DataSource as DataSourceProto from feast.protos.feast.core.SavedDataset_pb2 import ( SavedDatasetStorage as SavedDatasetStorageProto, @@ -15,7 +15,6 @@ class SnowflakeSource(DataSource): def __init__( self, - name: Optional[str] = None, database: Optional[str] = None, schema: Optional[str] = None, table: Optional[str] = None, @@ -24,12 +23,12 @@ def __init__( created_timestamp_column: Optional[str] = "", field_mapping: Optional[Dict[str, str]] = None, date_partition_column: Optional[str] = "", + name: Optional[str] = None, ): """ Creates a SnowflakeSource object. Args: - name (optional): Name for the source. Defaults to the table if not specified. database (optional): Snowflake database where the features are stored. schema (optional): Snowflake schema in which the table is located. table (optional): Snowflake table where the features are stored. @@ -41,7 +40,7 @@ def __init__( field_mapping (optional): A dictionary mapping of column names in this data source to column names in a feature table or view. date_partition_column (optional): Timestamp column used for partitioning. - + name (optional): Name for the source. Defaults to the table if not specified. """ if table is None and query is None: raise ValueError('No "table" argument provided.') @@ -52,10 +51,15 @@ def __init__( if table: _name = table else: - raise DataSourceNoNameException() + warnings.warn( + ( + "Starting in Feast 0.21, Feast will require either a name for a data source (if using query) or `table`." + ), + DeprecationWarning, + ) super().__init__( - _name, + _name if _name else "", event_timestamp_column, created_timestamp_column, field_mapping, diff --git a/sdk/python/tests/integration/registration/test_inference.py b/sdk/python/tests/integration/registration/test_inference.py index c334013b51..2582e69ea3 100644 --- a/sdk/python/tests/integration/registration/test_inference.py +++ b/sdk/python/tests/integration/registration/test_inference.py @@ -22,6 +22,9 @@ update_data_sources_with_inferred_event_timestamp_col, update_entities_with_inferred_types_from_feature_views, ) +from feast.infra.offline_stores.contrib.spark_offline_store.spark_source import ( + SparkSource, +) from feast.on_demand_feature_view import on_demand_feature_view from tests.utils.data_source_utils import ( prep_file_source, @@ -83,7 +86,7 @@ def test_infer_datasource_names_file(): def test_infer_datasource_names_dwh(): table = "project.table" - dwh_classes = [BigQuerySource, RedshiftSource, SnowflakeSource] + dwh_classes = [BigQuerySource, RedshiftSource, SnowflakeSource, SparkSource] for dwh_class in dwh_classes: data_source = dwh_class(table=table) @@ -98,9 +101,13 @@ def test_infer_datasource_names_dwh(): assert data_source_with_query.name == source_name # If we have a query and no name, throw an error - with pytest.raises(DataSourceNoNameException): - print(f"Testing dwh {dwh_class}") + if dwh_class == SparkSource: + with pytest.raises(DataSourceNoNameException): + print(f"Testing dwh {dwh_class}") + data_source = dwh_class(query="test_query") + else: data_source = dwh_class(query="test_query") + assert data_source.name == "" @pytest.mark.integration From 7a9315284f49ad30b27a632c8fe12d8ee2517995 Mon Sep 17 00:00:00 2001 From: ptoman-pa <95256508+ptoman-pa@users.noreply.github.com> Date: Tue, 8 Mar 2022 10:38:16 -0800 Subject: [PATCH 4/7] fix: Closes threadpool resources upon datastore online_write_batch completion (#2386) Signed-off-by: Pamela Toman --- sdk/python/feast/infra/online_stores/datastore.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sdk/python/feast/infra/online_stores/datastore.py b/sdk/python/feast/infra/online_stores/datastore.py index a29a8393e2..e7621ab88f 100644 --- a/sdk/python/feast/infra/online_stores/datastore.py +++ b/sdk/python/feast/infra/online_stores/datastore.py @@ -159,11 +159,13 @@ def online_write_batch( write_batch_size = online_config.write_batch_size feast_project = config.project - pool = ThreadPool(processes=write_concurrency) - pool.map( - lambda b: self._write_minibatch(client, feast_project, table, b, progress), - self._to_minibatches(data, batch_size=write_batch_size), - ) + with ThreadPool(processes=write_concurrency) as pool: + pool.map( + lambda b: self._write_minibatch( + client, feast_project, table, b, progress + ), + self._to_minibatches(data, batch_size=write_batch_size), + ) @staticmethod def _to_minibatches(data: ProtoBatch, batch_size) -> Iterator[ProtoBatch]: From e7a3b3f7fc364b3b11912e42935282e2509dadc2 Mon Sep 17 00:00:00 2001 From: Danny Chiao Date: Tue, 8 Mar 2022 23:42:00 -0500 Subject: [PATCH 5/7] fix: Fixing Spark template to include source name (#2381) Signed-off-by: Danny Chiao --- sdk/python/feast/templates/spark/example.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/python/feast/templates/spark/example.py b/sdk/python/feast/templates/spark/example.py index ddda73b787..11a25e1be2 100644 --- a/sdk/python/feast/templates/spark/example.py +++ b/sdk/python/feast/templates/spark/example.py @@ -23,12 +23,14 @@ # Sources driver_hourly_stats = SparkSource( + name="driver_hourly_stats", path=f"{CURRENT_DIR}/data/driver_hourly_stats", file_format="parquet", event_timestamp_column="event_timestamp", created_timestamp_column="created", ) customer_daily_profile = SparkSource( + name="customer_daily_profile", path=f"{CURRENT_DIR}/data/customer_daily_profile", file_format="parquet", event_timestamp_column="event_timestamp", From d877d276fd16e0c4e8ddd2226619d6b30b9cb713 Mon Sep 17 00:00:00 2001 From: Danny Chiao Date: Wed, 9 Mar 2022 17:58:00 -0500 Subject: [PATCH 6/7] fix: Fix Spark template to work correctly on feast init -t spark (#2393) Signed-off-by: Danny Chiao --- sdk/python/feast/templates/spark/bootstrap.py | 63 ++++++++----------- sdk/python/feast/templates/spark/example.py | 4 +- 2 files changed, 27 insertions(+), 40 deletions(-) diff --git a/sdk/python/feast/templates/spark/bootstrap.py b/sdk/python/feast/templates/spark/bootstrap.py index 155a86bf48..b57387d3d7 100644 --- a/sdk/python/feast/templates/spark/bootstrap.py +++ b/sdk/python/feast/templates/spark/bootstrap.py @@ -1,48 +1,35 @@ -from datetime import datetime, timedelta -from pathlib import Path - -from pyspark.sql import SparkSession - -from feast.driver_test_data import ( - create_customer_daily_profile_df, - create_driver_hourly_stats_df, -) - -CURRENT_DIR = Path(__file__).parent -DRIVER_ENTITIES = [1001, 1002, 1003] -CUSTOMER_ENTITIES = [201, 202, 203] -START_DATE = datetime.strptime("2022-01-01", "%Y-%m-%d") -END_DATE = START_DATE + timedelta(days=7) - - def bootstrap(): # Bootstrap() will automatically be called from the init_repo() during `feast init` - generate_example_data( - spark_session=SparkSession.builder.getOrCreate(), base_dir=str(CURRENT_DIR), - ) - + import pathlib + from datetime import datetime, timedelta -def example_data_exists(base_dir: str) -> bool: - for path in [ - Path(base_dir) / "data" / "driver_hourly_stats", - Path(base_dir) / "data" / "customer_daily_profile", - ]: - if not path.exists(): - return False - return True + from feast.driver_test_data import ( + create_customer_daily_profile_df, + create_driver_hourly_stats_df, + ) + repo_path = pathlib.Path(__file__).parent.absolute() + data_path = repo_path / "data" + data_path.mkdir(exist_ok=True) -def generate_example_data(spark_session: SparkSession, base_dir: str) -> None: - spark_session.createDataFrame( - data=create_driver_hourly_stats_df(DRIVER_ENTITIES, START_DATE, END_DATE) - ).write.parquet( - path=str(Path(base_dir) / "data" / "driver_hourly_stats"), mode="overwrite", + driver_entities = [1001, 1002, 1003] + end_date = datetime.now().replace(microsecond=0, second=0, minute=0) + start_date = end_date - timedelta(days=15) + driver_stats_df = create_driver_hourly_stats_df( + driver_entities, start_date, end_date + ) + driver_stats_df.to_parquet( + path=str(data_path / "driver_hourly_stats.parquet"), + allow_truncated_timestamps=True, ) - spark_session.createDataFrame( - data=create_customer_daily_profile_df(CUSTOMER_ENTITIES, START_DATE, END_DATE) - ).write.parquet( - path=str(Path(base_dir) / "data" / "customer_daily_profile"), mode="overwrite", + customer_entities = [201, 202, 203] + customer_profile_df = create_customer_daily_profile_df( + customer_entities, start_date, end_date + ) + customer_profile_df.to_parquet( + path=str(data_path / "customer_daily_profile.parquet"), + allow_truncated_timestamps=True, ) diff --git a/sdk/python/feast/templates/spark/example.py b/sdk/python/feast/templates/spark/example.py index 11a25e1be2..2b738c4337 100644 --- a/sdk/python/feast/templates/spark/example.py +++ b/sdk/python/feast/templates/spark/example.py @@ -24,14 +24,14 @@ # Sources driver_hourly_stats = SparkSource( name="driver_hourly_stats", - path=f"{CURRENT_DIR}/data/driver_hourly_stats", + path=f"{CURRENT_DIR}/data/driver_hourly_stats.parquet", file_format="parquet", event_timestamp_column="event_timestamp", created_timestamp_column="created", ) customer_daily_profile = SparkSource( name="customer_daily_profile", - path=f"{CURRENT_DIR}/data/customer_daily_profile", + path=f"{CURRENT_DIR}/data/customer_daily_profile.parquet", file_format="parquet", event_timestamp_column="event_timestamp", created_timestamp_column="created", From 0384bb9f139c1cb39f017dba1f9100b564ec520d Mon Sep 17 00:00:00 2001 From: feast-ci-bot Date: Wed, 9 Mar 2022 23:43:10 +0000 Subject: [PATCH 7/7] chore(release): release 0.19.3 ## [0.19.3](https://github.com/feast-dev/feast/compare/v0.19.2...v0.19.3) (2022-03-09) ### Bug Fixes * Closes threadpool resources upon datastore online_write_batch completion ([#2386](https://github.com/feast-dev/feast/issues/2386)) ([7a93152](https://github.com/feast-dev/feast/commit/7a9315284f49ad30b27a632c8fe12d8ee2517995)) * Fix spark docs ([#2382](https://github.com/feast-dev/feast/issues/2382)) ([599dbbb](https://github.com/feast-dev/feast/commit/599dbbbd8ef10bf42eec6df3b0d74503438d5ed2)) * Fix Spark template to work correctly on feast init -t spark ([#2393](https://github.com/feast-dev/feast/issues/2393)) ([d877d27](https://github.com/feast-dev/feast/commit/d877d276fd16e0c4e8ddd2226619d6b30b9cb713)) * Fixing Spark template to include source name ([#2381](https://github.com/feast-dev/feast/issues/2381)) ([e7a3b3f](https://github.com/feast-dev/feast/commit/e7a3b3f7fc364b3b11912e42935282e2509dadc2)) * Making a name for data sources not a breaking change ([#2379](https://github.com/feast-dev/feast/issues/2379)) ([993b8cc](https://github.com/feast-dev/feast/commit/993b8cc1af2b73cde72ad2713120436e84c5659e)) * Use the correct dockerhub image tag when building feature servers ([#2372](https://github.com/feast-dev/feast/issues/2372)) ([a6211cf](https://github.com/feast-dev/feast/commit/a6211cfd46fe095ab3118b46ad5d2991151f44cf)) --- CHANGELOG.md | 12 ++++++++++++ infra/charts/feast-python-server/Chart.yaml | 2 +- infra/charts/feast-python-server/README.md | 2 +- infra/charts/feast/Chart.yaml | 2 +- infra/charts/feast/README.md | 6 +++--- infra/charts/feast/charts/feature-server/Chart.yaml | 4 ++-- infra/charts/feast/charts/feature-server/README.md | 4 ++-- infra/charts/feast/charts/feature-server/values.yaml | 2 +- .../feast/charts/transformation-service/Chart.yaml | 4 ++-- .../feast/charts/transformation-service/README.md | 4 ++-- .../feast/charts/transformation-service/values.yaml | 2 +- infra/charts/feast/requirements.yaml | 4 ++-- java/pom.xml | 2 +- 13 files changed, 31 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f24eefbb0..3c2dcf53d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.19.3](https://github.com/feast-dev/feast/compare/v0.19.2...v0.19.3) (2022-03-09) + + +### Bug Fixes + +* Closes threadpool resources upon datastore online_write_batch completion ([#2386](https://github.com/feast-dev/feast/issues/2386)) ([7a93152](https://github.com/feast-dev/feast/commit/7a9315284f49ad30b27a632c8fe12d8ee2517995)) +* Fix spark docs ([#2382](https://github.com/feast-dev/feast/issues/2382)) ([599dbbb](https://github.com/feast-dev/feast/commit/599dbbbd8ef10bf42eec6df3b0d74503438d5ed2)) +* Fix Spark template to work correctly on feast init -t spark ([#2393](https://github.com/feast-dev/feast/issues/2393)) ([d877d27](https://github.com/feast-dev/feast/commit/d877d276fd16e0c4e8ddd2226619d6b30b9cb713)) +* Fixing Spark template to include source name ([#2381](https://github.com/feast-dev/feast/issues/2381)) ([e7a3b3f](https://github.com/feast-dev/feast/commit/e7a3b3f7fc364b3b11912e42935282e2509dadc2)) +* Making a name for data sources not a breaking change ([#2379](https://github.com/feast-dev/feast/issues/2379)) ([993b8cc](https://github.com/feast-dev/feast/commit/993b8cc1af2b73cde72ad2713120436e84c5659e)) +* Use the correct dockerhub image tag when building feature servers ([#2372](https://github.com/feast-dev/feast/issues/2372)) ([a6211cf](https://github.com/feast-dev/feast/commit/a6211cfd46fe095ab3118b46ad5d2991151f44cf)) + ## [0.19.2](https://github.com/feast-dev/feast/compare/v0.19.1...v0.19.2) (2022-03-06) diff --git a/infra/charts/feast-python-server/Chart.yaml b/infra/charts/feast-python-server/Chart.yaml index 43cdb031c7..96ba2653b7 100644 --- a/infra/charts/feast-python-server/Chart.yaml +++ b/infra/charts/feast-python-server/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: feast-python-server description: Feast Feature Server in Python type: application -version: 0.19.2 +version: 0.19.3 keywords: - machine learning - big data diff --git a/infra/charts/feast-python-server/README.md b/infra/charts/feast-python-server/README.md index cd2e6652e4..75f8913073 100644 --- a/infra/charts/feast-python-server/README.md +++ b/infra/charts/feast-python-server/README.md @@ -1,6 +1,6 @@ # feast-python-server -![Version: 0.19.2](https://img.shields.io/badge/Version-0.19.2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) +![Version: 0.19.3](https://img.shields.io/badge/Version-0.19.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) Feast Feature Server in Python diff --git a/infra/charts/feast/Chart.yaml b/infra/charts/feast/Chart.yaml index 3514855cf1..f32c8ce928 100644 --- a/infra/charts/feast/Chart.yaml +++ b/infra/charts/feast/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 description: Feature store for machine learning name: feast -version: 0.19.2 +version: 0.19.3 keywords: - machine learning - big data diff --git a/infra/charts/feast/README.md b/infra/charts/feast/README.md index 10c4457ab4..5afd84be13 100644 --- a/infra/charts/feast/README.md +++ b/infra/charts/feast/README.md @@ -8,7 +8,7 @@ This repo contains Helm charts for Feast components that are being installed on ## Chart: Feast -Feature store for machine learning Current chart version is `0.19.2` +Feature store for machine learning Current chart version is `0.19.3` ## Installation @@ -55,8 +55,8 @@ For more details, please see: https://docs.feast.dev/how-to-guides/running-feast | Repository | Name | Version | |------------|------|---------| | https://charts.helm.sh/stable | redis | 10.5.6 | -| https://feast-helm-charts.storage.googleapis.com | feature-server(feature-server) | 0.19.2 | -| https://feast-helm-charts.storage.googleapis.com | transformation-service(transformation-service) | 0.19.2 | +| https://feast-helm-charts.storage.googleapis.com | feature-server(feature-server) | 0.19.3 | +| https://feast-helm-charts.storage.googleapis.com | transformation-service(transformation-service) | 0.19.3 | ## Values diff --git a/infra/charts/feast/charts/feature-server/Chart.yaml b/infra/charts/feast/charts/feature-server/Chart.yaml index 8a90ec3de5..40d13481c5 100644 --- a/infra/charts/feast/charts/feature-server/Chart.yaml +++ b/infra/charts/feast/charts/feature-server/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 description: "Feast Feature Server: Online feature serving service for Feast" name: feature-server -version: 0.19.2 -appVersion: v0.19.2 +version: 0.19.3 +appVersion: v0.19.3 keywords: - machine learning - big data diff --git a/infra/charts/feast/charts/feature-server/README.md b/infra/charts/feast/charts/feature-server/README.md index 3dca0248a7..01a645bc1e 100644 --- a/infra/charts/feast/charts/feature-server/README.md +++ b/infra/charts/feast/charts/feature-server/README.md @@ -1,6 +1,6 @@ # feature-server -![Version: 0.19.2](https://img.shields.io/badge/Version-0.19.2-informational?style=flat-square) ![AppVersion: v0.19.2](https://img.shields.io/badge/AppVersion-v0.19.2-informational?style=flat-square) +![Version: 0.19.3](https://img.shields.io/badge/Version-0.19.3-informational?style=flat-square) ![AppVersion: v0.19.3](https://img.shields.io/badge/AppVersion-v0.19.3-informational?style=flat-square) Feast Feature Server: Online feature serving service for Feast @@ -17,7 +17,7 @@ Feast Feature Server: Online feature serving service for Feast | envOverrides | object | `{}` | Extra environment variables to set | | image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | | image.repository | string | `"feastdev/feature-server-java"` | Docker image for Feature Server repository | -| image.tag | string | `"0.19.2"` | Image tag | +| image.tag | string | `"0.19.3"` | Image tag | | ingress.grpc.annotations | object | `{}` | Extra annotations for the ingress | | ingress.grpc.auth.enabled | bool | `false` | Flag to enable auth | | ingress.grpc.class | string | `"nginx"` | Which ingress controller to use | diff --git a/infra/charts/feast/charts/feature-server/values.yaml b/infra/charts/feast/charts/feature-server/values.yaml index be27b2e39c..e0c18dd7ac 100644 --- a/infra/charts/feast/charts/feature-server/values.yaml +++ b/infra/charts/feast/charts/feature-server/values.yaml @@ -5,7 +5,7 @@ image: # image.repository -- Docker image for Feature Server repository repository: feastdev/feature-server-java # image.tag -- Image tag - tag: 0.19.2 + tag: 0.19.3 # image.pullPolicy -- Image pull policy pullPolicy: IfNotPresent diff --git a/infra/charts/feast/charts/transformation-service/Chart.yaml b/infra/charts/feast/charts/transformation-service/Chart.yaml index 291e192da1..934e6ee465 100644 --- a/infra/charts/feast/charts/transformation-service/Chart.yaml +++ b/infra/charts/feast/charts/transformation-service/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 description: "Transformation service: to compute on-demand features" name: transformation-service -version: 0.19.2 -appVersion: v0.19.2 +version: 0.19.3 +appVersion: v0.19.3 keywords: - machine learning - big data diff --git a/infra/charts/feast/charts/transformation-service/README.md b/infra/charts/feast/charts/transformation-service/README.md index 547a87e528..b70991e60d 100644 --- a/infra/charts/feast/charts/transformation-service/README.md +++ b/infra/charts/feast/charts/transformation-service/README.md @@ -1,6 +1,6 @@ # transformation-service -![Version: 0.19.2](https://img.shields.io/badge/Version-0.19.2-informational?style=flat-square) ![AppVersion: v0.19.2](https://img.shields.io/badge/AppVersion-v0.19.2-informational?style=flat-square) +![Version: 0.19.3](https://img.shields.io/badge/Version-0.19.3-informational?style=flat-square) ![AppVersion: v0.19.3](https://img.shields.io/badge/AppVersion-v0.19.3-informational?style=flat-square) Transformation service: to compute on-demand features @@ -13,7 +13,7 @@ Transformation service: to compute on-demand features | envOverrides | object | `{}` | Extra environment variables to set | | image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | | image.repository | string | `"feastdev/feature-transformation-server"` | Docker image for Transformation Server repository | -| image.tag | string | `"0.19.2"` | Image tag | +| image.tag | string | `"0.19.3"` | Image tag | | nodeSelector | object | `{}` | Node labels for pod assignment | | podLabels | object | `{}` | Labels to be added to Feast Serving pods | | replicaCount | int | `1` | Number of pods that will be created | diff --git a/infra/charts/feast/charts/transformation-service/values.yaml b/infra/charts/feast/charts/transformation-service/values.yaml index fdf0230fbd..f7d910df65 100644 --- a/infra/charts/feast/charts/transformation-service/values.yaml +++ b/infra/charts/feast/charts/transformation-service/values.yaml @@ -5,7 +5,7 @@ image: # image.repository -- Docker image for Transformation Server repository repository: feastdev/feature-transformation-server # image.tag -- Image tag - tag: 0.19.2 + tag: 0.19.3 # image.pullPolicy -- Image pull policy pullPolicy: IfNotPresent diff --git a/infra/charts/feast/requirements.yaml b/infra/charts/feast/requirements.yaml index 9ec5ab221c..d08eff92e4 100644 --- a/infra/charts/feast/requirements.yaml +++ b/infra/charts/feast/requirements.yaml @@ -1,12 +1,12 @@ dependencies: - name: feature-server alias: feature-server - version: 0.19.2 + version: 0.19.3 condition: feature-server.enabled repository: https://feast-helm-charts.storage.googleapis.com - name: transformation-service alias: transformation-service - version: 0.19.2 + version: 0.19.3 condition: transformation-service.enabled repository: https://feast-helm-charts.storage.googleapis.com - name: redis diff --git a/java/pom.xml b/java/pom.xml index 3bfa939ac4..db39e9d9e8 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -38,7 +38,7 @@ - 0.19.2 + 0.19.3 https://github.com/feast-dev/feast UTF-8