Skip to content

docker-compose deployment of v0.6-branch #911

@masonlr

Description

@masonlr

Expected Behavior

Deploy feast v0.6-branch using docker-compose without errors (following https://docs.feast.dev/v/v0.6-branch/getting-started/deploying-feast/docker-compose).

Current Behavior

Errors occur when running the cells of feast/examples/basic/basic.ipynb

Steps to reproduce

Create GCP project, service account, bucket.

PROJECT=feast-example-project
SERVICE_ACCOUNT=feast-service-account
BUCKET=feast-bucket-31072020

gcloud projects create $PROJECT
gcloud config set project $PROJECT
gcloud iam service-accounts create $SERVICE_ACCOUNT

gcloud projects add-iam-policy-binding $PROJECT --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com --role roles/editor

gsutil mb gs://$BUCKET

cd infra/docker-compose/gcp-service-accounts
gcloud iam service-accounts keys create credentials.json --iam-account $SERVICE_ACCOUNT@$PROJECT.iam.gserviceaccount.com

Create .env file with:

# General
COMPOSE_PROJECT_NAME=feast
FEAST_VERSION=0.6.1
FEAST_REPOSITORY_VERSION=v0.6-branch

# Feast Core
FEAST_CORE_IMAGE=gcr.io/kf-feast/feast-core
FEAST_CORE_CONFIG=core.yml
FEAST_CORE_GCP_SERVICE_ACCOUNT_KEY=credentials.json

# Feast Serving
FEAST_SERVING_IMAGE=gcr.io/kf-feast/feast-serving
# Feast Serving - Batch (BigQuery)
FEAST_BATCH_SERVING_CONFIG=batch-serving.yml
FEAST_BATCH_SERVING_GCP_SERVICE_ACCOUNT_KEY=credentials.json
# Feast Serving - Online (Redis)
FEAST_ONLINE_SERVING_CONFIG=online-serving.yml

# Jupyter
FEAST_JUPYTER_GCP_SERVICE_ACCOUNT_KEY=credentials.json

Update batch-serving.yaml to:

feast:
  core-host: core
  active-store: historical
  stores:
    - name: historical
      type: BIGQUERY
      # Changes required for batch serving to work
      # Please see https://api.docs.feast.dev/grpc/feast.core.pb.html#Store for configuration options
      config:
        project_id: feast-example-project
        dataset_id: dataset
        staging_location: gs://feast-bucket-31072020/test
        initial_retry_delay_seconds: 1
        total_timeout_seconds: 21600
      subscriptions:
        - name: "*"
          project: "*"
  job_store:
    redis_host: redis
    redis_port: 6379
  
grpc:
  port: 6567

Bring containers up using:

docker container prune -f && docker volume prune -f && docker network prune -f
docker pull gcr.io/kf-feast/feast-serving:0.6.1
docker pull gcr.io/kf-feast/feast-core:0.6.1
docker-compose -f docker-compose.yml -f docker-compose.online.yml -f docker-compose.batch.yml up

A java.lang.IllegalArgumentException error is shown in the core logs upon running client.apply(customer_fs) in the notebook:

$ docker logs feast_core_1
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.

███████╗███████╗ █████╗ ███████╗████████╗
██╔════╝██╔════╝██╔══██╗██╔════╝╚══██╔══╝
█████╗  █████╗  ███████║███████╗   ██║   
██╔══╝  ██╔══╝  ██╔══██║╚════██║   ██║   
██║     ███████╗██║  ██║███████║   ██║   
╚═╝     ╚══════╝╚═╝  ╚═╝╚══════╝   ╚═╝   
                                         
 ██████╗ ██████╗ ██████╗ ███████╗        
██╔════╝██╔═══██╗██╔══██╗██╔════╝        
██║     ██║   ██║██████╔╝█████╗          
██║     ██║   ██║██╔══██╗██╔══╝          
╚██████╗╚██████╔╝██║  ██║███████╗        
 ╚═════╝ ╚═════╝ ╚═╝  ╚═╝╚══════╝        

2020-07-31 14:06:35.558  INFO 12f08993e2f0 --- [           main] f.c.CoreApplication                      : Starting CoreApplication on 12f08993e2f0 with PID 1 (/opt/feast/feast-core.jar started by root in /)
2020-07-31 14:06:35.579 DEBUG 12f08993e2f0 --- [           main] f.c.CoreApplication                      : Running with Spring Boot v2.0.9.RELEASE, Spring v5.0.13.RELEASE
2020-07-31 14:06:35.583  INFO 12f08993e2f0 --- [           main] f.c.CoreApplication                      : No active profile set, falling back to default profiles: default
2020-07-31 14:06:35.926  INFO 12f08993e2f0 --- [           main] ConfigServletWebServerApplicationContext : Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7354b8c5: startup date [Fri Jul 31 14:06:35 UTC 2020]; root of context hierarchy
2020-07-31 14:06:40.170  INFO 12f08993e2f0 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2020-07-31 14:06:40.657  INFO 12f08993e2f0 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.kafka.annotation.KafkaBootstrapConfiguration' of type [org.springframework.kafka.annotation.KafkaBootstrapConfiguration$$EnhancerBySpringCGLIB$$a4fe9a98] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-07-31 14:06:40.764  INFO 12f08993e2f0 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$d14c8915] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-07-31 14:06:41.667  INFO 12f08993e2f0 --- [           main] o.s.b.w.e.t.TomcatWebServer              : Tomcat initialized with port(s): 8080 (http)
2020-07-31 14:06:41.708  INFO 12f08993e2f0 --- [           main] o.a.c.h.Http11NioProtocol                : Initializing ProtocolHandler ["http-nio-8080"]
2020-07-31 14:06:41.749  INFO 12f08993e2f0 --- [           main] o.a.c.c.StandardService                  : Starting service [Tomcat]
2020-07-31 14:06:41.756  INFO 12f08993e2f0 --- [           main] o.a.c.c.StandardEngine                   : Starting Servlet Engine: Apache Tomcat/8.5.39
2020-07-31 14:06:41.778  INFO 12f08993e2f0 --- [ost-startStop-1] o.a.c.c.AprLifecycleListener             : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
2020-07-31 14:06:41.928  INFO 12f08993e2f0 --- [ost-startStop-1] o.a.c.c.C.[.[.[/]                        : Initializing Spring embedded WebApplicationContext
2020-07-31 14:06:41.928  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.w.c.ContextLoader                    : Root WebApplicationContext: initialization completed in 6015 ms
2020-07-31 14:06:43.014  WARN 12f08993e2f0 --- [ost-startStop-1] o.f.c.Flyway                             : Direct configuration of the Flyway object has been deprecated and will be removed in Flyway 6.0. Use Flyway.configure() instead.
2020-07-31 14:06:43.015  WARN 12f08993e2f0 --- [ost-startStop-1] o.f.c.Flyway                             : Direct configuration retrieval from the Flyway object has been deprecated and will be removed in Flyway 6.0. Use Flyway.getConfiguration() instead.
2020-07-31 14:06:43.016  WARN 12f08993e2f0 --- [ost-startStop-1] o.f.c.Flyway                             : Direct configuration retrieval from the Flyway object has been deprecated and will be removed in Flyway 6.0. Use Flyway.getConfiguration() instead.
2020-07-31 14:06:43.016  WARN 12f08993e2f0 --- [ost-startStop-1] o.f.c.Flyway                             : Direct configuration of the Flyway object has been deprecated and will be removed in Flyway 6.0. Use Flyway.configure() instead.
2020-07-31 14:06:43.045  WARN 12f08993e2f0 --- [ost-startStop-1] o.f.c.Flyway                             : Direct configuration of the Flyway object has been deprecated and will be removed in Flyway 6.0. Use Flyway.configure() instead.
2020-07-31 14:06:43.076  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.l.VersionPrinter                 : Flyway Community Edition 5.2.4 by Boxfuse
2020-07-31 14:06:43.107  INFO 12f08993e2f0 --- [ost-startStop-1] c.z.h.HikariDataSource                   : HikariPool-1 - Starting...
2020-07-31 14:06:43.311  INFO 12f08993e2f0 --- [ost-startStop-1] c.z.h.HikariDataSource                   : HikariPool-1 - Start completed.
2020-07-31 14:06:43.327  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.d.DatabaseFactory                : Database: jdbc:postgresql://db:5432/postgres (PostgreSQL 12.3)
2020-07-31 14:06:43.341  WARN 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.d.b.Database                     : Flyway upgrade recommended: PostgreSQL 12.3 is newer than this version of Flyway and support has not been tested.
2020-07-31 14:06:43.513  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbValidate                     : Successfully validated 7 migrations (execution time 00:00.080s)
2020-07-31 14:06:43.529  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.s.JdbcTableSchemaHistory         : Creating Schema History table: "public"."flyway_schema_history"
2020-07-31 14:06:43.563  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Current version of schema "public": << Empty Schema >>
2020-07-31 14:06:43.566  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Migrating schema "public" to version 1 - Baseline
2020-07-31 14:06:43.643  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Migrating schema "public" to version 2 - RELEASE 0.6 Generalizing Source AND Extending FeatureSetJobStatus AND Feature Statistics
2020-07-31 14:06:43.690  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Migrating schema "public" to version 2.1 - Many Stores Per Job
2020-07-31 14:06:43.713  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Migrating schema "public" to version 2.2 - Subscription Migration
2020-07-31 14:06:43.724  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Migrating schema "public" to version 2.3 - Fix Primary Keys
2020-07-31 14:06:43.740  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Migrating schema "public" to version 2.4 - Store proto
2020-07-31 14:06:43.751  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Migrating schema "public" to version 2.5 - Fix Subscription MIgration
2020-07-31 14:06:43.764  INFO 12f08993e2f0 --- [ost-startStop-1] o.f.c.i.c.DbMigrate                      : Successfully applied 7 migrations to schema "public" (execution time 00:00.235s)
2020-07-31 14:06:44.314  INFO 12f08993e2f0 --- [ost-startStop-1] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2020-07-31 14:06:44.349  INFO 12f08993e2f0 --- [ost-startStop-1] o.h.j.i.u.LogHelper                      : HHH000204: Processing PersistenceUnitInfo [
	name: default
	...]
2020-07-31 14:06:44.508  INFO 12f08993e2f0 --- [ost-startStop-1] o.h.Version                              : HHH000412: Hibernate Core {5.3.6.Final}
2020-07-31 14:06:44.512  INFO 12f08993e2f0 --- [ost-startStop-1] o.h.c.Environment                        : HHH000206: hibernate.properties not found
2020-07-31 14:06:44.890  INFO 12f08993e2f0 --- [ost-startStop-1] o.h.a.c.Version                          : HCANN000001: Hibernate Commons Annotations {5.0.4.Final}
2020-07-31 14:06:45.711  INFO 12f08993e2f0 --- [ost-startStop-1] o.h.d.Dialect                            : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQL95Dialect
2020-07-31 14:06:45.951  INFO 12f08993e2f0 --- [ost-startStop-1] o.h.e.j.e.i.LobCreatorBuilderImpl        : HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
2020-07-31 14:06:45.967  INFO 12f08993e2f0 --- [ost-startStop-1] o.h.t.BasicTypeRegistry                  : HHH000270: Type registration [java.util.UUID] overrides previous : org.hibernate.type.UUIDBinaryType@573f34e5
2020-07-31 14:06:48.313  INFO 12f08993e2f0 --- [ost-startStop-1] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2020-07-31 14:06:49.694  INFO 12f08993e2f0 --- [ost-startStop-1] o.h.h.i.QueryTranslatorFactoryInitiator  : HHH000397: Using ASTQueryTranslatorFactory
2020-07-31 14:06:51.060  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.b.w.s.FilterRegistrationBean         : Mapping filter: 'characterEncodingFilter' to: [/*]
2020-07-31 14:06:51.060  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.b.w.s.FilterRegistrationBean         : Mapping filter: 'webMvcMetricsFilter' to: [/*]
2020-07-31 14:06:51.061  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.b.w.s.FilterRegistrationBean         : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2020-07-31 14:06:51.061  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.b.w.s.FilterRegistrationBean         : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2020-07-31 14:06:51.061  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.b.w.s.FilterRegistrationBean         : Mapping filter: 'requestContextFilter' to: [/*]
2020-07-31 14:06:51.062  INFO 12f08993e2f0 --- [ost-startStop-1] .s.DelegatingFilterProxyRegistrationBean : Mapping filter: 'springSecurityFilterChain' to: [/*]
2020-07-31 14:06:51.062  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.b.w.s.FilterRegistrationBean         : Mapping filter: 'httpTraceFilter' to: [/*]
2020-07-31 14:06:51.063  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.b.w.s.ServletRegistrationBean        : Servlet metricsServlet mapped to [/metrics]
2020-07-31 14:06:51.068  INFO 12f08993e2f0 --- [ost-startStop-1] o.s.b.w.s.ServletRegistrationBean        : Servlet dispatcherServlet mapped to [/]
2020-07-31 14:06:51.712  INFO 12f08993e2f0 --- [           main] .s.s.UserDetailsServiceAutoConfiguration : 

Using generated security password: e2917407-3725-45d4-9e7a-e1772dcc4092

2020-07-31 14:06:51.993  INFO 12f08993e2f0 --- [           main] o.s.s.w.DefaultSecurityFilterChain       : Creating filter chain: any request, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@a565cbd, org.springframework.security.web.context.SecurityContextPersistenceFilter@481e91b6, org.springframework.security.web.header.HeaderWriterFilter@1daf3b44, org.springframework.security.web.authentication.logout.LogoutFilter@6f139fc9, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@3cbf1ba4, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@383864d5, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@6fc29daa, org.springframework.security.web.session.SessionManagementFilter@8a2a6a, org.springframework.security.web.access.ExceptionTranslationFilter@3ee69ad8, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@3cb8c8ce]
2020-07-31 14:06:52.253  INFO 12f08993e2f0 --- [           main] o.s.w.s.h.SimpleUrlHandlerMapping        : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2020-07-31 14:06:52.531  INFO 12f08993e2f0 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7354b8c5: startup date [Fri Jul 31 14:06:35 UTC 2020]; root of context hierarchy
2020-07-31 14:06:52.616  WARN 12f08993e2f0 --- [           main] aWebConfiguration$JpaWebMvcConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2020-07-31 14:06:52.680  INFO 12f08993e2f0 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2020-07-31 14:06:52.681  INFO 12f08993e2f0 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2020-07-31 14:06:52.737  INFO 12f08993e2f0 --- [           main] o.s.w.s.h.SimpleUrlHandlerMapping        : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2020-07-31 14:06:52.737  INFO 12f08993e2f0 --- [           main] o.s.w.s.h.SimpleUrlHandlerMapping        : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2020-07-31 14:06:54.006  INFO 12f08993e2f0 --- [           main] o.s.b.a.e.w.EndpointLinksResolver        : Exposing 2 endpoint(s) beneath base path '/actuator'
2020-07-31 14:06:54.039  INFO 12f08993e2f0 --- [           main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/actuator/health],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
2020-07-31 14:06:54.040  INFO 12f08993e2f0 --- [           main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/actuator/info],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(javax.servlet.http.HttpServletRequest,java.util.Map<java.lang.String, java.lang.String>)
2020-07-31 14:06:54.042  INFO 12f08993e2f0 --- [           main] s.b.a.e.w.s.WebMvcEndpointHandlerMapping : Mapped "{[/actuator],methods=[GET],produces=[application/vnd.spring-boot.actuator.v2+json || application/json]}" onto protected java.util.Map<java.lang.String, java.util.Map<java.lang.String, org.springframework.boot.actuate.endpoint.web.Link>> org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping.links(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2020-07-31 14:06:54.239  INFO 12f08993e2f0 --- [           main] o.a.k.c.a.AdminClientConfig              : AdminClientConfig values: 
	bootstrap.servers = [kafka:9092, localhost:9094]
	client.dns.lookup = default
	client.id = 
	connections.max.idle.ms = 300000
	metadata.max.age.ms = 300000
	metric.reporters = []
	metrics.num.samples = 2
	metrics.recording.level = INFO
	metrics.sample.window.ms = 30000
	receive.buffer.bytes = 65536
	reconnect.backoff.max.ms = 1000
	reconnect.backoff.ms = 50
	request.timeout.ms = 15000
	retries = 5
	retry.backoff.ms = 100
	sasl.client.callback.handler.class = null
	sasl.jaas.config = null
	sasl.kerberos.kinit.cmd = /usr/bin/kinit
	sasl.kerberos.min.time.before.relogin = 60000
	sasl.kerberos.service.name = null
	sasl.kerberos.ticket.renew.jitter = 0.05
	sasl.kerberos.ticket.renew.window.factor = 0.8
	sasl.login.callback.handler.class = null
	sasl.login.class = null
	sasl.login.refresh.buffer.seconds = 300
	sasl.login.refresh.min.period.seconds = 60
	sasl.login.refresh.window.factor = 0.8
	sasl.login.refresh.window.jitter = 0.05
	sasl.mechanism = GSSAPI
	security.protocol = PLAINTEXT
	send.buffer.bytes = 131072
	ssl.cipher.suites = null
	ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
	ssl.endpoint.identification.algorithm = https
	ssl.key.password = null
	ssl.keymanager.algorithm = SunX509
	ssl.keystore.location = null
	ssl.keystore.password = null
	ssl.keystore.type = JKS
	ssl.protocol = TLS
	ssl.provider = null
	ssl.secure.random.implementation = null
	ssl.trustmanager.algorithm = PKIX
	ssl.truststore.location = null
	ssl.truststore.password = null
	ssl.truststore.type = JKS

2020-07-31 14:06:54.344  INFO 12f08993e2f0 --- [           main] o.a.k.c.u.AppInfoParser                  : Kafka version: 2.3.0
2020-07-31 14:06:54.344  INFO 12f08993e2f0 --- [           main] o.a.k.c.u.AppInfoParser                  : Kafka commitId: fc1aaa116b661c8a
2020-07-31 14:06:54.344  INFO 12f08993e2f0 --- [           main] o.a.k.c.u.AppInfoParser                  : Kafka startTimeMs: 1596204414340
2020-07-31 14:06:54.892 ERROR 12f08993e2f0 --- [           main] o.s.k.c.KafkaAdmin                       : Failed to create topics
org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
2020-07-31 14:06:54.903  INFO 12f08993e2f0 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2020-07-31 14:06:54.908  INFO 12f08993e2f0 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Bean with name 'dataSource' has been autodetected for JMX exposure
2020-07-31 14:06:54.932  INFO 12f08993e2f0 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]
2020-07-31 14:06:55.019  INFO 12f08993e2f0 --- [           main] o.s.c.s.DefaultLifecycleProcessor        : Starting beans in phase 2147483547
2020-07-31 14:06:55.049  INFO 12f08993e2f0 --- [           main] o.a.k.c.c.ConsumerConfig                 : ConsumerConfig values: 
	allow.auto.create.topics = true
	auto.commit.interval.ms = 5000
	auto.offset.reset = latest
	bootstrap.servers = [kafka:9092, localhost:9094]
	check.crcs = true
	client.dns.lookup = default
	client.id = 
	client.rack = 
	connections.max.idle.ms = 540000
	default.api.timeout.ms = 60000
	enable.auto.commit = true
	exclude.internal.topics = true
	fetch.max.bytes = 52428800
	fetch.max.wait.ms = 500
	fetch.min.bytes = 1
	group.id = core-service-null
	group.instance.id = null
	heartbeat.interval.ms = 3000
	interceptor.classes = []
	internal.leave.group.on.close = true
	isolation.level = read_uncommitted
	key.deserializer = class org.apache.kafka.common.serialization.StringDeserializer
	max.partition.fetch.bytes = 1048576
	max.poll.interval.ms = 300000
	max.poll.records = 500
	metadata.max.age.ms = 300000
	metric.reporters = []
	metrics.num.samples = 2
	metrics.recording.level = INFO
	metrics.sample.window.ms = 30000
	partition.assignment.strategy = [class org.apache.kafka.clients.consumer.RangeAssignor]
	receive.buffer.bytes = 65536
	reconnect.backoff.max.ms = 1000
	reconnect.backoff.ms = 50
	request.timeout.ms = 30000
	retry.backoff.ms = 100
	sasl.client.callback.handler.class = null
	sasl.jaas.config = null
	sasl.kerberos.kinit.cmd = /usr/bin/kinit
	sasl.kerberos.min.time.before.relogin = 60000
	sasl.kerberos.service.name = null
	sasl.kerberos.ticket.renew.jitter = 0.05
	sasl.kerberos.ticket.renew.window.factor = 0.8
	sasl.login.callback.handler.class = null
	sasl.login.class = null
	sasl.login.refresh.buffer.seconds = 300
	sasl.login.refresh.min.period.seconds = 60
	sasl.login.refresh.window.factor = 0.8
	sasl.login.refresh.window.jitter = 0.05
	sasl.mechanism = GSSAPI
	security.protocol = PLAINTEXT
	send.buffer.bytes = 131072
	session.timeout.ms = 10000
	ssl.cipher.suites = null
	ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
	ssl.endpoint.identification.algorithm = https
	ssl.key.password = null
	ssl.keymanager.algorithm = SunX509
	ssl.keystore.location = null
	ssl.keystore.password = null
	ssl.keystore.type = JKS
	ssl.protocol = TLS
	ssl.provider = null
	ssl.secure.random.implementation = null
	ssl.trustmanager.algorithm = PKIX
	ssl.truststore.location = null
	ssl.truststore.password = null
	ssl.truststore.type = JKS
	value.deserializer = class feast.core.util.KafkaSerialization$ProtoDeserializer

2020-07-31 14:06:55.119  INFO 12f08993e2f0 --- [           main] o.a.k.c.u.AppInfoParser                  : Kafka version: 2.3.0
2020-07-31 14:06:55.119  INFO 12f08993e2f0 --- [           main] o.a.k.c.u.AppInfoParser                  : Kafka commitId: fc1aaa116b661c8a
2020-07-31 14:06:55.119  INFO 12f08993e2f0 --- [           main] o.a.k.c.u.AppInfoParser                  : Kafka startTimeMs: 1596204415119
2020-07-31 14:06:55.124  INFO 12f08993e2f0 --- [           main] o.a.k.c.c.KafkaConsumer                  : [Consumer clientId=consumer-1, groupId=core-service-null] Subscribed to topic(s): feast-specs-ack
2020-07-31 14:06:55.130  INFO 12f08993e2f0 --- [           main] o.s.s.c.ThreadPoolTaskScheduler          : Initializing ExecutorService
2020-07-31 14:06:55.139  INFO 12f08993e2f0 --- [           main] o.s.c.s.DefaultLifecycleProcessor        : Starting beans in phase 2147483647
2020-07-31 14:06:55.151  WARN 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.NetworkClient                    : [Consumer clientId=consumer-1, groupId=core-service-null] Connection to node -2 (localhost/127.0.0.1:9094) could not be established. Broker may not be available.
2020-07-31 14:06:55.175  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.Metadata                         : [Consumer clientId=consumer-1, groupId=core-service-null] Cluster ID: Rlqi6O23SFai-FI3_al8Sg
2020-07-31 14:06:55.195  INFO 12f08993e2f0 --- [           main] n.d.b.g.s.s.AbstractGrpcServerFactory    : Registered gRPC service: feast.core.CoreService, bean: coreServiceImpl, class: feast.core.grpc.CoreServiceImpl
2020-07-31 14:06:55.202  INFO 12f08993e2f0 --- [           main] n.d.b.g.s.s.AbstractGrpcServerFactory    : Registered gRPC service: grpc.health.v1.Health, bean: healthServiceImpl, class: feast.core.grpc.HealthServiceImpl
2020-07-31 14:06:55.673  INFO 12f08993e2f0 --- [           main] n.d.b.g.s.s.GrpcServerLifecycle          : gRPC Server started, listening on address: *, port: 6565
2020-07-31 14:06:55.713  INFO 12f08993e2f0 --- [           main] s.a.ScheduledAnnotationBeanPostProcessor : No TaskScheduler/ScheduledExecutorService bean found for scheduled processing
2020-07-31 14:06:55.749  INFO 12f08993e2f0 --- [           main] o.a.c.h.Http11NioProtocol                : Starting ProtocolHandler ["http-nio-8080"]
2020-07-31 14:06:55.751  INFO 12f08993e2f0 --- [pool-3-thread-1] f.c.s.JobCoordinatorService              : Polling for new jobs...
2020-07-31 14:06:55.762  INFO 12f08993e2f0 --- [           main] o.a.t.u.n.NioSelectorPool                : Using a shared selector for servlet write/read
2020-07-31 14:06:55.925  INFO 12f08993e2f0 --- [pool-3-thread-1] f.c.s.JobCoordinatorService              : No jobs found.
2020-07-31 14:06:55.964  INFO 12f08993e2f0 --- [           main] o.s.b.w.e.t.TomcatWebServer              : Tomcat started on port(s): 8080 (http) with context path ''
2020-07-31 14:06:55.969  INFO 12f08993e2f0 --- [           main] f.c.CoreApplication                      : Started CoreApplication in 21.761 seconds (JVM running for 24.3)
2020-07-31 14:06:56.246  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.c.i.AbstractCoordinator          : [Consumer clientId=consumer-1, groupId=core-service-null] Discovered group coordinator kafka:9092 (id: 2147482646 rack: null)
2020-07-31 14:06:56.222  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.c.i.ConsumerCoordinator          : [Consumer clientId=consumer-1, groupId=core-service-null] Revoking previously assigned partitions []
2020-07-31 14:06:56.222  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.s.k.l.KafkaMessageListenerContainer    : partitions revoked: []
2020-07-31 14:06:56.223  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.c.i.AbstractCoordinator          : [Consumer clientId=consumer-1, groupId=core-service-null] (Re-)joining group
2020-07-31 14:06:56.263  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.c.i.AbstractCoordinator          : [Consumer clientId=consumer-1, groupId=core-service-null] (Re-)joining group
2020-07-31 14:06:59.390  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.c.i.AbstractCoordinator          : [Consumer clientId=consumer-1, groupId=core-service-null] Successfully joined group with generation 1
2020-07-31 14:06:59.399  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.c.i.ConsumerCoordinator          : [Consumer clientId=consumer-1, groupId=core-service-null] Setting newly assigned partitions: feast-specs-ack-0
2020-07-31 14:06:59.424  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.c.i.ConsumerCoordinator          : [Consumer clientId=consumer-1, groupId=core-service-null] Found no committed offset for partition feast-specs-ack-0
2020-07-31 14:06:59.456  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.a.k.c.c.i.SubscriptionState            : [Consumer clientId=consumer-1, groupId=core-service-null] Resetting offset for partition feast-specs-ack-0 to offset 0.
2020-07-31 14:06:59.461  INFO 12f08993e2f0 --- [ntainer#0-0-C-1] o.s.k.l.KafkaMessageListenerContainer    : partitions assigned: [feast-specs-ack-0]
2020-07-31 14:07:25.894  INFO 12f08993e2f0 --- [pool-3-thread-1] f.c.s.JobCoordinatorService              : Polling for new jobs...
2020-07-31 14:07:25.922  INFO 12f08993e2f0 --- [pool-3-thread-1] f.c.s.JobCoordinatorService              : Creating/Updating 2 jobs...
2020-07-31 14:07:25.926 AUDIT 12f08993e2f0 --- [pool-4-thread-1] f.c.l.AuditLogger                        : {action=SUBMIT, detail=Building graph and submitting to DirectRunner, id=kafka-2111741832-to-historical-1596204445910, resource=JOB, timestamp=Fri Jul 31 14:07:25 UTC 2020}
2020-07-31 14:07:25.926 AUDIT 12f08993e2f0 --- [pool-4-thread-2] f.c.l.AuditLogger                        : {action=SUBMIT, detail=Building graph and submitting to DirectRunner, id=kafka-2111741832-to-online-1596204445919, resource=JOB, timestamp=Fri Jul 31 14:07:25 UTC 2020}
2020-07-31 14:07:26.866  INFO 12f08993e2f0 --- [pool-4-thread-2] f.i.ImportJob                            : Starting import job with settings: 
Current Settings:
  appName: DirectRunnerJobManager
  blockOnRun: false
  defaultFeastProject: default
  enforceEncodability: true
  enforceImmutability: true
  gcsPerformanceMetrics: false
  jobName: kafka-2111741832-to-online-1596204445919
  optionsId: 1
  project: 
  runner: class org.apache.beam.runners.direct.DirectRunner
  sourceJson: {
  "type": "KAFKA",
  "kafkaSourceConfig": {
    "bootstrapServers": "kafka:9092,localhost:9094",
    "topic": "feast-features"
  }
}
  specsStreamingUpdateConfigJson: {
  "source": {
    "bootstrapServers": "kafka:9092,localhost:9094",
    "topic": "feast-specs"
  },
  "ack": {
    "bootstrapServers": "kafka:9092,localhost:9094",
    "topic": "feast-specs-ack"
  }
}
  stableUniqueNames: WARNING
  storesJson: [{
  "name": "online",
  "type": "REDIS",
  "subscriptions": [{
    "name": "*",
    "project": "*"
  }],
  "redisConfig": {
    "host": "redis",
    "port": 6379
  }
}]

2020-07-31 14:07:26.866  INFO 12f08993e2f0 --- [pool-4-thread-1] f.i.ImportJob                            : Starting import job with settings: 
Current Settings:
  appName: DirectRunnerJobManager
  blockOnRun: false
  defaultFeastProject: default
  enforceEncodability: true
  enforceImmutability: true
  gcsPerformanceMetrics: false
  jobName: kafka-2111741832-to-historical-1596204445910
  optionsId: 0
  project: 
  runner: class org.apache.beam.runners.direct.DirectRunner
  sourceJson: {
  "type": "KAFKA",
  "kafkaSourceConfig": {
    "bootstrapServers": "kafka:9092,localhost:9094",
    "topic": "feast-features"
  }
}
  specsStreamingUpdateConfigJson: {
  "source": {
    "bootstrapServers": "kafka:9092,localhost:9094",
    "topic": "feast-specs"
  },
  "ack": {
    "bootstrapServers": "kafka:9092,localhost:9094",
    "topic": "feast-specs-ack"
  }
}
  stableUniqueNames: WARNING
  storesJson: [{
  "name": "historical",
  "type": "BIGQUERY",
  "subscriptions": [{
    "name": "*",
    "project": "*"
  }],
  "bigqueryConfig": {
    "projectId": "feast-example-project",
    "datasetId": "dataset",
    "stagingLocation": "gs://feast-bucket-31072020/test",
    "initialRetryDelaySeconds": 1,
    "totalTimeoutSeconds": 21600
  }
}]

2020-07-31 14:07:27.685 ERROR 12f08993e2f0 --- [pool-4-thread-1] f.c.j.d.DirectRunnerJobManager           : Error submitting job
java.lang.IllegalArgumentException: FixedWindows WindowingStrategies must have 0 <= offset < size
	at org.apache.beam.sdk.transforms.windowing.FixedWindows.<init>(FixedWindows.java:65)
	at org.apache.beam.sdk.transforms.windowing.FixedWindows.of(FixedWindows.java:50)
	at feast.storage.connectors.bigquery.writer.BigQueryWrite.expand(BigQueryWrite.java:135)
	at feast.storage.connectors.bigquery.writer.BigQueryWrite.expand(BigQueryWrite.java:49)
	at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:539)
	at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:490)
	at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:368)
	at feast.ingestion.ImportJob.runPipeline(ImportJob.java:167)
	at feast.core.job.direct.DirectRunnerJobManager.runPipeline(DirectRunnerJobManager.java:164)
	at feast.core.job.direct.DirectRunnerJobManager.startJob(DirectRunnerJobManager.java:83)
	at feast.core.job.CreateJobTask.call(CreateJobTask.java:48)
	at feast.core.job.CreateJobTask.call(CreateJobTask.java:29)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
2020-07-31 14:07:27.686 ERROR 12f08993e2f0 --- [pool-4-thread-1] f.c.j.CreateJobTask                      : Error running ingestion job: java.lang.IllegalArgumentException: FixedWindows WindowingStrategies must have 0 <= offset < size
2020-07-31 14:07:27.686 AUDIT 12f08993e2f0 --- [pool-4-thread-1] f.c.l.AuditLogger                        : {action=STATUS_CHANGE, detail=Job failed to be submitted to runner DirectRunner. Job status changed to ERROR., id=kafka-2111741832-to-historical-1596204445910, resource=JOB, timestamp=Fri Jul 31 14:07:27 UTC 2020}
2020-07-31 14:07:27.939  INFO 12f08993e2f0 --- [pool-4-thread-2] i.l.c.EpollProvider                      : Starting without optional epoll library
2020-07-31 14:07:27.943  INFO 12f08993e2f0 --- [pool-4-thread-2] i.l.c.KqueueProvider                     : Starting without optional kqueue library
2020-07-31 14:07:28.971  INFO 12f08993e2f0 --- [pool-4-thread-2] o.a.k.c.c.ConsumerConfig                 : ConsumerConfig values: 

Specifications

docker desktop v2.2.0.4 on macOS 10.15.5

Possible Solution

Include write_triggering_frequency_seconds in batch-serving.yaml:

feast:
  core-host: core
  active-store: historical
  stores:
    - name: historical
      type: BIGQUERY
      # Changes required for batch serving to work
      # Please see https://api.docs.feast.dev/grpc/feast.core.pb.html#Store for configuration options
      config:
        project_id: feast-example-project
        dataset_id: dataset
        staging_location: gs://feast-bucket-31072020/test
        initial_retry_delay_seconds: 1
        total_timeout_seconds: 21600
        write_triggering_frequency_seconds: 1
      subscriptions:
        - name: "*"
          project: "*"
  job_store:
    redis_host: redis
    redis_port: 6379
  
grpc:
  port: 6567

Adding the trigger frequency setting changes the error to:

$ docker logs feast_core_1

...

2020-07-31 14:15:13.157 ERROR d70f6bada002 --- [pool-4-thread-2] f.c.j.d.DirectRunnerJobManager           : Error submitting job
java.util.ConcurrentModificationException
	at java.base/java.util.HashMap.computeIfAbsent(Unknown Source)
	at org.apache.beam.sdk.schemas.utils.ReflectUtils.getMethods(ReflectUtils.java:77)
	at org.apache.beam.sdk.schemas.AutoValueSchema$AbstractGetterTypeSupplier.get(AutoValueSchema.java:46)
	at org.apache.beam.sdk.schemas.utils.StaticSchemaInference.schemaFromClass(StaticSchemaInference.java:83)
	at org.apache.beam.sdk.schemas.utils.JavaBeanUtils.schemaFromJavaBeanClass(JavaBeanUtils.java:63)
	at org.apache.beam.sdk.schemas.AutoValueSchema.schemaFor(AutoValueSchema.java:114)
	at org.apache.beam.sdk.schemas.annotations.DefaultSchema$DefaultSchemaProvider.schemaFor(DefaultSchema.java:131)
	at org.apache.beam.sdk.schemas.SchemaRegistry.lambda$getSchema$0(SchemaRegistry.java:256)
	at org.apache.beam.sdk.schemas.SchemaRegistry.getProviderResult(SchemaRegistry.java:239)
	at org.apache.beam.sdk.schemas.SchemaRegistry.getSchema(SchemaRegistry.java:256)
	at org.apache.beam.sdk.values.PCollection.inferCoderOrFail(PCollection.java:159)
	at org.apache.beam.sdk.values.PCollection.finishSpecifyingOutput(PCollection.java:94)
	at org.apache.beam.sdk.runners.TransformHierarchy.setOutput(TransformHierarchy.java:210)
	at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:540)
	at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:490)
	at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:368)
	at feast.ingestion.transform.ReadFromSource.expand(ReadFromSource.java:91)
	at feast.ingestion.transform.ReadFromSource.expand(ReadFromSource.java:37)
	at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:539)
	at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:490)
	at org.apache.beam.sdk.values.PBegin.apply(PBegin.java:56)
	at org.apache.beam.sdk.Pipeline.apply(Pipeline.java:184)
	at feast.ingestion.ImportJob.runPipeline(ImportJob.java:117)
	at feast.core.job.direct.DirectRunnerJobManager.runPipeline(DirectRunnerJobManager.java:164)
	at feast.core.job.direct.DirectRunnerJobManager.startJob(DirectRunnerJobManager.java:83)
	at feast.core.job.CreateJobTask.call(CreateJobTask.java:48)
	at feast.core.job.CreateJobTask.call(CreateJobTask.java:29)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
	at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
2020-07-31 14:15:13.157 ERROR d70f6bada002 --- [pool-4-thread-2] f.c.j.CreateJobTask                      : Error running ingestion job: java.util.ConcurrentModificationException

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions