airbytehq / airbyte

The leading data integration platform for ETL / ELT data pipelines from APIs, databases & files to data warehouses, data lakes & data lakehouses. Both self-hosted and Cloud-hosted.
https://airbyte.com
Other
15.96k stars 4.1k forks source link

sync error when using external MINIO #34512

Closed hengzi52125 closed 9 months ago

hengzi52125 commented 9 months ago

Helm Chart Version

0.50.44

What step the error happened?

During the Sync

Revelant information

I want to use external MINIO. Here is my values.yaml

global:
  state:
    storage:
      type: "MINIO"
  logs:
    accessKey:
      password: "xxx"
    secretKey:
      password: "xxx"
    storage:
      type: "MINIO"
    minio:
      enabled: false
    externalMinio:
      enabled: true
      host: 192.168.3.226
      port: 9000
    s3:
      enabled: false
      bucket: airbyte-log
      bucketRegion: ""

minio:
  enabled: false
  auth:
    rootUser: xxx
    rootPassword: xxx

postgresql:
  enabled: false

externalDatabase:
  host: xxx
  port: 5432
  user: xxx
  password: "xxx"
  database: xxx

When I sync a connection, airbyte-server pod and airbyte-worker pod all throw the error: "java.lang.IllegalArgumentException: Cannot create enum from ${env:S3_LOG_BUCKET_REGION} value!"

So, I added "global.logs.s3.bucketRegion" into the values.yaml.

global:
  state:
    storage:
      type: "MINIO"
  logs:
    accessKey:
      password: "xxx"
    secretKey:
      password: "xxx"
    storage:
      type: "MINIO"
    minio:
      enabled: false
    externalMinio:
      enabled: true
      host: 192.168.3.226
      port: 9000
    s3:
      enabled: false
      bucket: airbyte-log
      bucketRegion: "us-east-1"

minio:
  enabled: false
  auth:
    rootUser: xxx
    rootPassword: xxx

postgresql:
  enabled: false

externalDatabase:
  host: xxx
  port: 5432
  user: xxx
  password: "xxx"
  database: xxx

airbyte-server and airbyte-worker throw error: java.lang.IllegalStateException: Only one of Region or EndpointConfiguration may be set.

Relevant log output

2024-01-25 08:42:55 platform > kubectl cp /tmp/26931181-df95-4d9b-9752-a414c6dc67e2/application.txt airbyte-test/orchestrator-repl-job-1-attempt-1:/config/application.txt -c init
ERROR StatusConsoleListener Could not create plugin of type class com.van.logging.log4j2.Log4j2Appender for element Log4j2Appender: java.lang.RuntimeException: Cannot build appender due to errors
 java.lang.RuntimeException: Cannot build appender due to errors
    at com.van.logging.log4j2.Log4j2AppenderBuilder.build(Log4j2AppenderBuilder.java:147)
    at com.van.logging.log4j2.Log4j2AppenderBuilder.build(Log4j2AppenderBuilder.java:25)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:124)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1162)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1083)
    at org.apache.logging.log4j.core.appender.routing.RoutingAppender.createAppender(RoutingAppender.java:323)
    at org.apache.logging.log4j.core.appender.routing.RoutingAppender.getControl(RoutingAppender.java:295)
    at org.apache.logging.log4j.core.appender.routing.RoutingAppender.append(RoutingAppender.java:253)
    at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
    at org.apache.logging.log4j.core.appender.rewrite.RewriteAppender.append(RewriteAppender.java:89)
    at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
    at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:705)
    at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:663)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:639)
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:575)
    at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
    at org.apache.logging.log4j.core.Logger.log(Logger.java:169)
    at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2933)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2886)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2868)
    at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2652)
    at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2400)
    at org.apache.logging.slf4j.Log4jLogger.info(Log4jLogger.java:179)
    at io.airbyte.workers.process.AsyncOrchestratorPodProcess.copyFilesToKubeConfigVolumeMain(AsyncOrchestratorPodProcess.java:622)
    at io.airbyte.workers.process.AsyncOrchestratorPodProcess.create(AsyncOrchestratorPodProcess.java:583)
    at io.airbyte.workers.sync.LauncherWorker.run(LauncherWorker.java:217)
    at io.airbyte.workers.temporal.TemporalAttemptExecution.get(TemporalAttemptExecution.java:142)
    at io.airbyte.workers.temporal.sync.ReplicationActivityImpl.lambda$replicateV2$2(ReplicationActivityImpl.java:190)
    at io.airbyte.commons.temporal.HeartbeatUtils.withBackgroundHeartbeat(HeartbeatUtils.java:57)
    at io.airbyte.workers.temporal.sync.ReplicationActivityImpl.replicateV2(ReplicationActivityImpl.java:158)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at io.temporal.internal.activity.RootActivityInboundCallsInterceptor$POJOActivityInboundCallsInterceptor.executeActivity(RootActivityInboundCallsInterceptor.java:64)
    at io.temporal.internal.activity.RootActivityInboundCallsInterceptor.execute(RootActivityInboundCallsInterceptor.java:43)
    at io.temporal.internal.activity.ActivityTaskExecutors$BaseActivityTaskExecutor.execute(ActivityTaskExecutors.java:107)
    at io.temporal.internal.activity.ActivityTaskHandlerImpl.handle(ActivityTaskHandlerImpl.java:124)
    at io.temporal.internal.worker.ActivityWorker$TaskHandlerImpl.handleActivity(ActivityWorker.java:278)
    at io.temporal.internal.worker.ActivityWorker$TaskHandlerImpl.handle(ActivityWorker.java:243)
    at io.temporal.internal.worker.ActivityWorker$TaskHandlerImpl.handle(ActivityWorker.java:216)
    at io.temporal.internal.worker.PollTaskExecutor.lambda$process$0(PollTaskExecutor.java:105)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
    at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.IllegalArgumentException: Cannot create enum from ${env:S3_LOG_BUCKET_REGION} value!
    at com.amazonaws.regions.Regions.fromName(Regions.java:105)
    at com.van.logging.aws.S3Configuration.resolveRegion(S3Configuration.java:204)
    at com.van.logging.aws.S3Configuration.setRegion(S3Configuration.java:125)
    at com.van.logging.log4j2.Log4j2AppenderBuilder.getS3ConfigIfEnabled(Log4j2AppenderBuilder.java:172)
    at com.van.logging.log4j2.Log4j2AppenderBuilder.createCachePublisher(Log4j2AppenderBuilder.java:271)
    at com.van.logging.log4j2.Log4j2AppenderBuilder.build(Log4j2AppenderBuilder.java:140)
2024-01-25 06:18:10 platform > 2024-01-25 06:18:10 INFO i.a.c.i.b.IntegrationRunner(runInternal):231 - Completed integration: io.airbyte.cdk.integrations.base.ssh.SshWrappedSource
ERROR StatusConsoleListener Could not create plugin of type class com.van.logging.log4j2.Log4j2Appender for element Log4j2Appender: java.lang.RuntimeException: Cannot build appender due to errors
 java.lang.RuntimeException: Cannot build appender due to errors
  at com.van.logging.log4j2.Log4j2AppenderBuilder.build(Log4j2AppenderBuilder.java:147)
  at com.van.logging.log4j2.Log4j2AppenderBuilder.build(Log4j2AppenderBuilder.java:25)
  at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:124)
  at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1162)
  at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:1083)
  at org.apache.logging.log4j.core.appender.routing.RoutingAppender.createAppender(RoutingAppender.java:323)
  at org.apache.logging.log4j.core.appender.routing.RoutingAppender.getControl(RoutingAppender.java:295)
  at org.apache.logging.log4j.core.appender.routing.RoutingAppender.append(RoutingAppender.java:253)
  at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
  at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
  at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
  at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
  at org.apache.logging.log4j.core.appender.rewrite.RewriteAppender.append(RewriteAppender.java:89)
  at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
  at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:133)
  at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:124)
  at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:88)
  at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:705)
  at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:663)
  at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:639)
  at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:575)
  at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:92)
  at org.apache.logging.log4j.core.Logger.log(Logger.java:169)
  at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2933)
  at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2886)
  at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2868)
  at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2652)
  at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:2400)
  at org.apache.logging.slf4j.Log4jLogger.info(Log4jLogger.java:179)
  at io.airbyte.workers.internal.VersionedAirbyteStreamFactory.handleCannotDeserialize(VersionedAirbyteStreamFactory.java:426)
  at io.airbyte.workers.internal.VersionedAirbyteStreamFactory.toAirbyteMessage(VersionedAirbyteStreamFactory.java:380)
  at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273)
  at java.base/java.util.stream.ReferencePipeline$15$1.accept(ReferencePipeline.java:541)
  at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
  at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
  at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
  at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
  at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
  at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
  at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
  at io.airbyte.workers.WorkerUtils.getMessagesByType(WorkerUtils.java:205)
  at io.airbyte.workers.general.DefaultCheckConnectionWorker.run(DefaultCheckConnectionWorker.java:81)
  at io.airbyte.workers.general.DefaultCheckConnectionWorker.run(DefaultCheckConnectionWorker.java:44)
  at io.airbyte.workers.temporal.TemporalAttemptExecution.get(TemporalAttemptExecution.java:142)
  at io.airbyte.workers.temporal.check.connection.CheckConnectionActivityImpl.lambda$runWithJobOutput$1(CheckConnectionActivityImpl.java:214)
  at io.airbyte.commons.temporal.HeartbeatUtils.withBackgroundHeartbeat(HeartbeatUtils.java:57)
  at io.airbyte.workers.temporal.check.connection.CheckConnectionActivityImpl.runWithJobOutput(CheckConnectionActivityImpl.java:199)
  at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
  at java.base/java.lang.reflect.Method.invoke(Method.java:580)
  at io.temporal.internal.activity.RootActivityInboundCallsInterceptor$POJOActivityInboundCallsInterceptor.executeActivity(RootActivityInboundCallsInterceptor.java:64)
  at io.temporal.internal.activity.RootActivityInboundCallsInterceptor.execute(RootActivityInboundCallsInterceptor.java:43)
  at io.temporal.internal.activity.ActivityTaskExecutors$BaseActivityTaskExecutor.execute(ActivityTaskExecutors.java:107)
  at io.temporal.internal.activity.ActivityTaskHandlerImpl.handle(ActivityTaskHandlerImpl.java:124)
  at io.temporal.internal.worker.ActivityWorker$TaskHandlerImpl.handleActivity(ActivityWorker.java:278)
  at io.temporal.internal.worker.ActivityWorker$TaskHandlerImpl.handle(ActivityWorker.java:243)
  at io.temporal.internal.worker.ActivityWorker$TaskHandlerImpl.handle(ActivityWorker.java:216)
  at io.temporal.internal.worker.PollTaskExecutor.lambda$process$0(PollTaskExecutor.java:105)
  at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
  at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
  at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.IllegalStateException: Only one of Region or EndpointConfiguration may be set.
  at com.amazonaws.client.builder.AwsClientBuilder.setRegion(AwsClientBuilder.java:450)
  at com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:424)
  at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:46)
  at com.van.logging.aws.AwsClientHelpers.buildClient(AwsClientHelpers.java:88)
  at com.van.logging.aws.S3PublishHelper.<init>(S3PublishHelper.java:52)
  at com.van.logging.log4j2.Log4j2AppenderBuilder.lambda$createCachePublisher$0(Log4j2AppenderBuilder.java:276)
michaelefisher commented 9 months ago

We are seeing this on the latest chart without external minio set. We have no values outside of the default chart-supplised values (at least in terms of logging configs).

We are also no longer seeing logs printed in the UI. Unsure if this is totally related, but it only started on the latest chart.

Screenshot 2024-01-25 at 12 48 05

We're on GKE, so we're still seeing all of our logs in Stackdriver/Google Logging, of course.

Here's our configmap - nothing secret in there, so I'm just sharing the entire thing:

kubectl -n airbyte get configmap cta-airbyte-airbyte-env -o yaml
apiVersion: v1
data:
  ACTIVITY_INITIAL_DELAY_BETWEEN_ATTEMPTS_SECONDS: ""
  ACTIVITY_MAX_ATTEMPT: ""
  ACTIVITY_MAX_DELAY_BETWEEN_ATTEMPTS_SECONDS: ""
  AIRBYTE_API_HOST: cta-airbyte-airbyte-api-server-svc:80
  AIRBYTE_EDITION: community
  AIRBYTE_VERSION: 0.50.44
  API_URL: /api/v1/
  AUTO_DETECT_SCHEMA: "true"
  CONFIG_API_HOST: http://cta-airbyte-airbyte-server-svc:8001
  CONFIG_ROOT: /configs
  CONFIGS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION: 0.35.15.001
  CONNECTOR_BUILDER_API_HOST: cta-airbyte-airbyte-connector-builder-server-svc:80
  CONNECTOR_BUILDER_API_URL: /connector-builder-api
  CONNECTOR_BUILDER_SERVER_API_HOST: http://cta-airbyte-airbyte-connector-builder-server-svc:80
  CONTAINER_ORCHESTRATOR_IMAGE: ""
  CRON_MICRONAUT_ENVIRONMENTS: control-plane
  DATA_DOCKER_MOUNT: airbyte_data
  DATABASE_DB: db-airbyte
  DATABASE_HOST: airbyte-db-svc
  DATABASE_PORT: "5432"
  DATABASE_URL: jdbc:postgresql://airbyte-db-svc:5432/db-airbyte
  DB_DOCKER_MOUNT: airbyte_db
  GCS_LOG_BUCKET: ""
  GOOGLE_APPLICATION_CREDENTIALS: ""
  INTERNAL_API_HOST: cta-airbyte-airbyte-server-svc:8001
  JOB_MAIN_CONTAINER_CPU_LIMIT: ""
  JOB_MAIN_CONTAINER_CPU_REQUEST: ""
  JOB_MAIN_CONTAINER_MEMORY_LIMIT: ""
  JOB_MAIN_CONTAINER_MEMORY_REQUEST: ""
  JOBS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION: 0.29.15.001
  KEYCLOAK_DATABASE_URL: jdbc:postgresql://airbyte-db-svc:5432/db-airbyte?currentSchema=keycloak
  KEYCLOAK_INTERNAL_HOST: localhost
  LAUNCHER_MICRONAUT_ENVIRONMENTS: control-plane,oss
  LOCAL_ROOT: /tmp/airbyte_local
  MAX_NOTIFY_WORKERS: "5"
  METRIC_CLIENT: ""
  MICROMETER_METRICS_ENABLED: "false"
  MICROMETER_METRICS_STATSD_FLAVOR: datadog
  OTEL_COLLECTOR_ENDPOINT: ""
  RUN_DATABASE_MIGRATION_ON_STARTUP: "true"
  S3_LOG_BUCKET: airbyte-dev-logs
  S3_LOG_BUCKET_REGION: us-west-2
  S3_MINIO_ENDPOINT: http://airbyte-minio-svc:9000
  S3_PATH_STYLE_ACCESS: "true"
  SEGMENT_WRITE_KEY: XXXXXXXXX
  SHOULD_RUN_NOTIFY_WORKFLOWS: "true"
  STATE_STORAGE_MINIO_BUCKET_NAME: state-storage
  STATE_STORAGE_MINIO_ENDPOINT: http://airbyte-minio-svc:9000
  STATSD_HOST: localhost
  STATSD_PORT: "8125"
  TEMPORAL_HOST: cta-airbyte-temporal:7233
  TEMPORAL_WORKER_PORTS: 9001,9002,9003,9004,9005,9006,9007,9008,9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019,9020,9021,9022,9023,9024,9025,9026,9027,9028,9029,9030,9031,9032,9033,9034,9035,9036,9037,9038,9039,9040
  TRACKING_STRATEGY: segment
  WEBAPP_URL: http://cta-airbyte-airbyte-webapp-svc:80
  WORKER_ENVIRONMENT: kubernetes
  WORKER_LOGS_STORAGE_TYPE: MINIO
  WORKER_STATE_STORAGE_TYPE: MINIO
  WORKERS_MICRONAUT_ENVIRONMENTS: control-plane
  WORKFLOW_FAILURE_RESTART_DELAY_SECONDS: ""
  WORKLOAD_API_HOST: http://localhost
  WORKLOAD_LAUNCHER_PARALLELISM: "10"
  WORKSPACE_DOCKER_MOUNT: airbyte_workspace
  WORKSPACE_ROOT: /workspace
kind: ConfigMap
metadata:
  annotations:
    helm.sh/hook: pre-install,pre-upgrade
    helm.sh/hook-weight: "-1"
  creationTimestamp: "2024-01-25T17:37:22Z"
  labels:
    app.kubernetes.io/instance: cta-airbyte
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: airbyte
    app.kubernetes.io/version: 0.50.44
    helm.sh/chart: airbyte-0.50.55
  name: cta-airbyte-airbyte-env
  namespace: airbyte
  resourceVersion: "164567339"
  uid: 39e8b2c2-cade-4e2b-b011-38428fd3905c
leonardo-lages-hyperflow commented 9 months ago

same here

hengzi52125 commented 9 months ago

Yes, no logs were being displayed in the UI. I checked the MINIO buckets, and the “state-storage” bucket contained objects, but the “airbyte-log” bucket (I customized the log bucket) was empty.

marcosmarxm commented 9 months ago

Hello team is working to release a fix, this is a duplicate of https://github.com/airbytehq/airbyte/issues/34539 thanks for reporting the prolem @hengzi52125