Skip to content

Commit

Permalink
Fix branch inconsistency (#472)
Browse files Browse the repository at this point in the history
* Update Changelog (#423)

* Initial commit of changelog up to 0.4.3

* Remove unreleased changes on master

* Add missing changelog manually

Co-authored-by: Khor Shu Heng <32997938+khorshuheng@users.noreply.github.com>

* Introduce datatypes/java module for proto generation (#391)

Rather than the Maven protobuf plugin running on the same symlinked
definitions in several Java modules, localize this process into one
module that the others depend on.

This provides a single module that can be depended on by third-party
extensions with the bare minimum of dependencies.

Also removes proto files that are no longer used.

* Update basic Feast example to Feast 0.4 (#424)

* Add documentation for bigquery batch retrieval (#428)

* Add documentation for bigquery batch retrieval

* Fix formatting for multiline comments

* Bump hibernate-validator from 6.0.13.Final to 6.1.0.Final in /ingestion (#421)

Bumps [hibernate-validator](https://github.com/hibernate/hibernate-validator) from 6.0.13.Final to 6.1.0.Final.
- [Release notes](https://github.com/hibernate/hibernate-validator/releases)
- [Changelog](https://github.com/hibernate/hibernate-validator/blob/master/changelog.txt)
- [Commits](hibernate/hibernate-validator@6.0.13.Final...6.1.0.Final)

Signed-off-by: dependabot[bot] <support@github.com>

* Publish datatypes/java along with sdk/java (#426)

This forward-ports a straggling commit from #407: it was missed when
initially creating the datatypes module because Sonatype publishing
setup was added concurrently.

* Remove "resource" concept and the need to specify a kind in feature sets (#432)

* Update GKE installation and chart values to work with 0.4.3 (#434)

* Fix logging (#430)

Allow log level to be set via environmental variable.
Add ability to set appender type in serving.
Remove logback-classic from ingestion as it is a library so should not bring its own impl.
Upgrade log4j to 2.12.1 to support objectMessageAsJsonObject.
Fix logger config targeting feast package in serving an add same concept for core.

* Bump chart version

* Update Changelog (#447)

* Update Changelog

* Remove closed issues

Co-authored-by: Willem Pienaar <6728866+woop@users.noreply.github.com>
Co-authored-by: Ches Martin <ches@whiskeyandgrits.net>
Co-authored-by: Chen Zhiling <chnzhlng@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Lionel Vital <lgvital@gmail.com>
Co-authored-by: Iain Rauch <Yanson@users.noreply.github.com>
  • Loading branch information
7 people authored Feb 13, 2020
1 parent cc884b4 commit 2a704ac
Show file tree
Hide file tree
Showing 39 changed files with 577 additions and 269 deletions.
2 changes: 1 addition & 1 deletion .prow/scripts/publish-java-sdk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,4 @@ gpg --import --batch --yes $GPG_KEY_IMPORT_DIR/private-key
echo "============================================================"
echo "Deploying Java SDK with revision: $REVISION"
echo "============================================================"
mvn --projects sdk/java -Drevision=$REVISION --batch-mode clean deploy
mvn --projects datatypes/java,sdk/java -Drevision=$REVISION --batch-mode clean deploy
159 changes: 159 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,164 @@
# Changelog

## [v0.4.4](https://github.com/gojek/feast/tree/v0.4.4) (2020-01-28)

[Full Changelog](https://github.com/gojek/feast/compare/v0.4.3...v0.4.4)

**Merged pull requests:**

- Change RedisBackedJobService to use a connection pool [\#439](https://github.com/gojek/feast/pull/439) ([zhilingc](https://github.com/zhilingc))
- Update protos with Tensorflow data validation schema [\#438](https://github.com/gojek/feast/pull/438) ([davidheryanto](https://github.com/davidheryanto))
- Update GKE installation and chart values to work with 0.4.3 [\#434](https://github.com/gojek/feast/pull/434) ([lgvital](https://github.com/lgvital))
- Parameterize end-to-end test scripts [\#433](https://github.com/gojek/feast/pull/433) ([Yanson](https://github.com/Yanson))
- Remove "resource" concept and the need to specify a kind in feature sets [\#432](https://github.com/gojek/feast/pull/432) ([woop](https://github.com/woop))
- Add retry options to BigQuery [\#431](https://github.com/gojek/feast/pull/431) ([Yanson](https://github.com/Yanson))
- Fix logging [\#430](https://github.com/gojek/feast/pull/430) ([Yanson](https://github.com/Yanson))
- Add documentation for bigquery batch retrieval [\#428](https://github.com/gojek/feast/pull/428) ([zhilingc](https://github.com/zhilingc))
- Publish datatypes/java along with sdk/java [\#426](https://github.com/gojek/feast/pull/426) ([ches](https://github.com/ches))
- Update basic Feast example to Feast 0.4 [\#424](https://github.com/gojek/feast/pull/424) ([woop](https://github.com/woop))
- Unserializable FluentBackoff cause null pointer exception in Dataflow Runner [\#417](https://github.com/gojek/feast/pull/417) ([khorshuheng](https://github.com/khorshuheng))
- Introduce datatypes/java module for proto generation [\#391](https://github.com/gojek/feast/pull/391) ([ches](https://github.com/ches))
- Allow user to override job options [\#377](https://github.com/gojek/feast/pull/377) ([khorshuheng](https://github.com/khorshuheng))

## [v0.4.3](https://github.com/gojek/feast/tree/v0.4.3) (2020-01-08)

[Full Changelog](https://github.com/gojek/feast/compare/v0.4.2...v0.4.3)

**Fixed bugs:**

- Bugfix for redis ingestion retries throwing NullPointerException on remote runners [\#417](https://github.com/gojek/feast/pull/417) ([khorshuheng](https://github.com/khorshuheng))

## [v0.4.2](https://github.com/gojek/feast/tree/v0.4.2) (2020-01-07)

[Full Changelog](https://github.com/gojek/feast/compare/v0.4.1...v0.4.2)

**Fixed bugs:**

- Missing argument in error string in ValidateFeatureRowDoFn [\#401](https://github.com/gojek/feast/issues/401)

**Merged pull requests:**

- Define maven revision property when packaging jars in Dockerfile so the images are built successfully [\#410](https://github.com/gojek/feast/pull/410) ([davidheryanto](https://github.com/davidheryanto))
- Deduplicate rows in subquery [\#409](https://github.com/gojek/feast/pull/409) ([zhilingc](https://github.com/zhilingc))
- Filter out extra fields, deduplicate fields in ingestion [\#404](https://github.com/gojek/feast/pull/404) ([zhilingc](https://github.com/zhilingc))
- Automatic documentation generation for gRPC API [\#403](https://github.com/gojek/feast/pull/403) ([woop](https://github.com/woop))
- Update feast core default values to include hibernate merge strategy [\#400](https://github.com/gojek/feast/pull/400) ([zhilingc](https://github.com/zhilingc))
- Move cli into feast package [\#398](https://github.com/gojek/feast/pull/398) ([zhilingc](https://github.com/zhilingc))
- Use Nexus staging plugin for deployment [\#394](https://github.com/gojek/feast/pull/394) ([khorshuheng](https://github.com/khorshuheng))
- Handle retry for redis io flow [\#274](https://github.com/gojek/feast/pull/274) ([khorshuheng](https://github.com/khorshuheng))

## [v0.4.1](https://github.com/gojek/feast/tree/v0.4.1) (2019-12-30)

[Full Changelog](https://github.com/gojek/feast/compare/v0.4.0...v0.4.1)

**Merged pull requests:**

- Add project-related commands to CLI [\#397](https://github.com/gojek/feast/pull/397) ([zhilingc](https://github.com/zhilingc))

## [v0.4.0](https://github.com/gojek/feast/tree/v0.4.0) (2019-12-28)

[Full Changelog](https://github.com/gojek/feast/compare/v0.3.5...v0.4.0)

**Implemented enhancements:**

- Edit description in feature specification to also reflect in BigQuery schema description. [\#239](https://github.com/gojek/feast/issues/239)
- Allow for disabling of metrics pushing [\#57](https://github.com/gojek/feast/issues/57)

**Merged pull requests:**

- Java SDK release script [\#406](https://github.com/gojek/feast/pull/406) ([davidheryanto](https://github.com/davidheryanto))
- Use fixed 'dev' revision for test-e2e-batch [\#395](https://github.com/gojek/feast/pull/395) ([davidheryanto](https://github.com/davidheryanto))
- Project Namespacing [\#393](https://github.com/gojek/feast/pull/393) ([woop](https://github.com/woop))
- \<docs\>\(concepts\): change data types to upper case because lower case … [\#389](https://github.com/gojek/feast/pull/389) ([david30907d](https://github.com/david30907d))
- Remove alpha v1 from java package name [\#387](https://github.com/gojek/feast/pull/387) ([khorshuheng](https://github.com/khorshuheng))
- Minor bug fixes for Python SDK [\#383](https://github.com/gojek/feast/pull/383) ([voonhous](https://github.com/voonhous))
- Allow user to override job options [\#377](https://github.com/gojek/feast/pull/377) ([khorshuheng](https://github.com/khorshuheng))
- Add documentation to default values.yaml in Feast chart [\#376](https://github.com/gojek/feast/pull/376) ([davidheryanto](https://github.com/davidheryanto))
- Add support for file paths for providing entity rows during batch retrieval [\#375](https://github.com/gojek/feast/pull/375) ([voonhous](https://github.com/voonhous))
- Update sync helm chart script to ensure requirements.lock in in sync with requirements.yaml [\#373](https://github.com/gojek/feast/pull/373) ([davidheryanto](https://github.com/davidheryanto))
- Catch errors thrown by BQ during entity table loading [\#371](https://github.com/gojek/feast/pull/371) ([zhilingc](https://github.com/zhilingc))
- Async job management [\#361](https://github.com/gojek/feast/pull/361) ([zhilingc](https://github.com/zhilingc))
- Infer schema of PyArrow table directly [\#355](https://github.com/gojek/feast/pull/355) ([voonhous](https://github.com/voonhous))
- Add readiness checks for Feast services in end to end test [\#337](https://github.com/gojek/feast/pull/337) ([davidheryanto](https://github.com/davidheryanto))
- Create CHANGELOG.md [\#321](https://github.com/gojek/feast/pull/321) ([woop](https://github.com/woop))

## [v0.3.6](https://github.com/gojek/feast/tree/v0.3.6) (2020-01-03)

**Merged pull requests:**

[Full Changelog](https://github.com/gojek/feast/compare/v0.3.5...v0.3.6)

- Add support for file paths for providing entity rows during batch retrieval [\#375](https://github.com/gojek/feast/pull/376) ([voonhous](https://github.com/voonhous))

## [v0.3.5](https://github.com/gojek/feast/tree/v0.3.5) (2019-12-26)

[Full Changelog](https://github.com/gojek/feast/compare/v0.3.4...v0.3.5)

**Merged pull requests:**

- Always set destination table in BigQuery query config in Feast Batch Serving so it can handle large results [\#392](https://github.com/gojek/feast/pull/392) ([davidheryanto](https://github.com/davidheryanto))

## [v0.3.4](https://github.com/gojek/feast/tree/v0.3.4) (2019-12-23)

[Full Changelog](https://github.com/gojek/feast/compare/v0.3.3...v0.3.4)

**Merged pull requests:**

- Make redis key creation more determinisitic [\#380](https://github.com/gojek/feast/pull/380) ([zhilingc](https://github.com/zhilingc))

## [v0.3.3](https://github.com/gojek/feast/tree/v0.3.3) (2019-12-18)

[Full Changelog](https://github.com/gojek/feast/compare/v0.3.2...v0.3.3)

**Implemented enhancements:**

- Added Docker Compose for Feast [\#272](https://github.com/gojek/feast/issues/272)
- Added ability to check import job status and cancel job through Python SDK [\#194](https://github.com/gojek/feast/issues/194)
- Added basic customer transactions example [\#354](https://github.com/gojek/feast/pull/354) ([woop](https://github.com/woop))

**Merged pull requests:**

- Added Prow jobs to automate the release of Docker images and Python SDK [\#369](https://github.com/gojek/feast/pull/369) ([davidheryanto](https://github.com/davidheryanto))
- Fixed installation link in README.md [\#368](https://github.com/gojek/feast/pull/368) ([Jeffwan](https://github.com/Jeffwan))
- Fixed Java SDK tests not actually running \(missing dependencies\) [\#366](https://github.com/gojek/feast/pull/366) ([woop](https://github.com/woop))
- Added more batch retrieval tests [\#357](https://github.com/gojek/feast/pull/357) ([zhilingc](https://github.com/zhilingc))
- Python SDK and Feast Core Bug Fixes [\#353](https://github.com/gojek/feast/pull/353) ([woop](https://github.com/woop))
- Updated buildFeatureSets method in Golang SDK [\#351](https://github.com/gojek/feast/pull/351) ([davidheryanto](https://github.com/davidheryanto))
- Python SDK cleanup [\#348](https://github.com/gojek/feast/pull/348) ([woop](https://github.com/woop))
- Broke up queries for point in time correctness joins [\#347](https://github.com/gojek/feast/pull/347) ([zhilingc](https://github.com/zhilingc))
- Exports gRPC call metrics and Feast resource metrics in Core [\#345](https://github.com/gojek/feast/pull/345) ([davidheryanto](https://github.com/davidheryanto))
- Fixed broken Google Group link on Community page [\#343](https://github.com/gojek/feast/pull/343) ([ches](https://github.com/ches))
- Ensured ImportJobTest is not flaky by checking WriteToStore metric and requesting adequate resources for testing [\#332](https://github.com/gojek/feast/pull/332) ([davidheryanto](https://github.com/davidheryanto))
- Added docker-compose file with Jupyter notebook [\#328](https://github.com/gojek/feast/pull/328) ([khorshuheng](https://github.com/khorshuheng))
- Added minimal implementation of ingesting Parquet and CSV files [\#327](https://github.com/gojek/feast/pull/327) ([voonhous](https://github.com/voonhous))

## [v0.3.2](https://github.com/gojek/feast/tree/v0.3.2) (2019-11-29)

[Full Changelog](https://github.com/gojek/feast/compare/v0.3.1...v0.3.2)

**Merged pull requests:**

- Fixed incorrect BigQuery schema creation from FeatureSetSpec [\#340](https://github.com/gojek/feast/pull/340) ([davidheryanto](https://github.com/davidheryanto))
- Filtered out feature sets that dont share the same source [\#339](https://github.com/gojek/feast/pull/339) ([zhilingc](https://github.com/zhilingc))
- Changed latency calculation method to not use Timer [\#338](https://github.com/gojek/feast/pull/338) ([zhilingc](https://github.com/zhilingc))
- Moved Prometheus annotations to pod template for serving [\#336](https://github.com/gojek/feast/pull/336) ([zhilingc](https://github.com/zhilingc))
- Removed metrics windowing, cleaned up step names for metrics writing [\#334](https://github.com/gojek/feast/pull/334) ([zhilingc](https://github.com/zhilingc))
- Set BigQuery table time partition inside get table function [\#333](https://github.com/gojek/feast/pull/333) ([zhilingc](https://github.com/zhilingc))
- Added unit test in Redis to return values with no max age set [\#329](https://github.com/gojek/feast/pull/329) ([smadarasmi](https://github.com/smadarasmi))
- Consolidated jobs into single steps instead of branching out [\#326](https://github.com/gojek/feast/pull/326) ([zhilingc](https://github.com/zhilingc))
- Pinned Python SDK to minor versions for dependencies [\#322](https://github.com/gojek/feast/pull/322) ([woop](https://github.com/woop))
- Added Auto format to Google style with Spotless [\#317](https://github.com/gojek/feast/pull/317) ([ches](https://github.com/ches))

## [v0.3.1](https://github.com/gojek/feast/tree/v0.3.1) (2019-11-25)

[Full Changelog](https://github.com/gojek/feast/compare/v0.3.0...v0.3.1)

**Merged pull requests:**

- Added Prometheus metrics to serving [\#316](https://github.com/gojek/feast/pull/316) ([zhilingc](https://github.com/zhilingc))
- Changed default job metrics sink to Statsd [\#315](https://github.com/gojek/feast/pull/315) ([zhilingc](https://github.com/zhilingc))
- Fixed module import error in Feast CLI [\#314](https://github.com/gojek/feast/pull/314) ([davidheryanto](https://github.com/davidheryanto))

## [v0.3.0](https://github.com/gojek/feast/tree/v0.3.0) (2019-11-19)

[Full Changelog](https://github.com/gojek/feast/compare/v0.1.8...v0.3.0)
Expand Down
4 changes: 0 additions & 4 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,6 @@
<skip>false</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

Expand Down
1 change: 0 additions & 1 deletion core/src/main/proto/feast

This file was deleted.

1 change: 0 additions & 1 deletion core/src/main/proto/third_party

This file was deleted.

12 changes: 8 additions & 4 deletions core/src/main/resources/log4j2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@
%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex
</Property>
<Property name="APPENDER_TYPE">${env:LOG_TYPE:-Console}</Property>
<Property name="LOG_LEVEL">${env:LOG_LEVEL:-info}</Property>
</Properties>
<CustomLevels>
<CustomLevel name="AUDIT" intLevel="350" />
<CustomLevel name="AUDIT" intLevel="350"/>
</CustomLevels>
<Appenders>
<Console name="ConsoleAppender" target="SYSTEM_OUT" follow="true">
Expand All @@ -35,8 +36,11 @@
</Console>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="${APPENDER_TYPE}Appender" />
</Root>
<Logger name="feast.core" level="debug" additivity="false">
<AppenderRef ref="${APPENDER_TYPE}Appender"/>
</Logger>
<Root level="${LOG_LEVEL}">
<AppenderRef ref="${APPENDER_TYPE}Appender"/>
</Root>
</Loggers>
</Configuration>
55 changes: 55 additions & 0 deletions datatypes/java/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
Feast Data Types for Java
=========================

This module produces Java class files for Feast's data type and gRPC service
definitions, from Protobuf IDL. These are used across Feast components for wire
interchange, contracts, etc.

End users of Feast will be best served by our Java SDK which adds higher-level
conveniences, but the data types are published independently for custom needs,
without any additional dependencies the SDK may add.

Dependency Coordinates
----------------------

```xml
<dependency>
<groupId>dev.feast</groupId>
<artifactId>datatypes-java</artifactId>
<version>0.4.0-SNAPSHOT</version>
</dependency>
```

Use the version corresponding to the Feast release you have deployed in your
environment—see the [Feast release notes] for details.

[Feast release notes]: ../../CHANGELOG.md

Using the `.proto` Definitions
------------------------------

The `.proto` definitions are packaged as resources within the Maven artifact,
which may be useful to `include` them in dependent Protobuf definitions in a
downstream project, or for other JVM languages to consume from their builds to
generate more idiomatic bindings.

Google's Gradle plugin, for instance, [can use protos in dependencies][Gradle]
either for `include` or to compile with a different `protoc` plugin than Java.

[sbt-protoc] offers similar functionality for sbt/Scala.

[Gradle]: https://github.com/google/protobuf-gradle-plugin#protos-in-dependencies
[sbt-protoc]: https://github.com/thesamet/sbt-protoc

Releases
--------

The module is published to Maven Central upon each release of Feast (since
v0.3.7).

For developers, the publishing process is automated along with the Java SDK by
[the `publish-java-sdk` build task in Prow][prow task], where you can see how
it works. Artifacts are staged to Sonatype where a maintainer needs to take a
release action for them to go live on Maven Central.

[prow task]: https://github.com/gojek/feast/blob/17e7dca8238aae4dcbf0ff9f0db5d80ef8e035cf/.prow/config.yaml#L166-L192
72 changes: 72 additions & 0 deletions datatypes/java/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright 2019 The Feast Authors
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ https://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
~
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<name>Feast Data Types for Java</name>
<description>
Data types and service contracts used throughout Feast components and
their interchanges. These are generated from Protocol Buffers and gRPC
definitions included in the package.
</description>
<artifactId>datatypes-java</artifactId>

<parent>
<groupId>dev.feast</groupId>
<artifactId>feast-parent</artifactId>
<version>${revision}</version>
<relativePath>../..</relativePath>
</parent>

<build>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<configuration>
<checkStaleness>true</checkStaleness>
<protocArtifact>
com.google.protobuf:protoc:${protocVersion}:exe:${os.detected.classifier}
</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>
io.grpc:protoc-gen-grpc-java:${grpcVersion}:exe:${os.detected.classifier}
</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-services</artifactId>
</dependency>
</dependencies>
</project>
File renamed without changes.
1 change: 1 addition & 0 deletions datatypes/java/src/main/proto/third_party
Loading

0 comments on commit 2a704ac

Please sign in to comment.