{"record":{"id":"60f027d10d91bcfb","repo":"apache/seatunnel","slug":"client-create-failed","errorCode":"CLIENT_CREATE_FAILED","errorMessage":"Failed to create BigQueryWriteClient","messagePattern":"Failed to create BigQueryWriteClient","errorType":"error_code","errorClass":"BigQueryConnectorException","httpStatus":null,"severity":"critical","filePath":"seatunnel-connectors-v2/connector-bigquery/src/main/java/org/apache/seatunnel/connectors/bigquery/client/BigQueryClientFactory.java","lineNumber":84,"sourceCode":"                BigQueryWriteClient bigQueryWriteClient = BigQueryWriteClient.create(settings);\n                log.info(\"Created BigQueryWriteClient for emulator at {}\", emulatorHost);\n\n                return bigQueryWriteClient;\n            }\n\n            GoogleCredentials credentials = getCredentials(config);\n\n            BigQueryWriteSettings.Builder settingsBuilder =\n                    BigQueryWriteSettings.newBuilder()\n                            .setCredentialsProvider(FixedCredentialsProvider.create(credentials));\n\n            if (config.get(BigQuerySinkOptions.UNIVERSE_DOMAIN) != null) {\n                settingsBuilder.setUniverseDomain(config.get(BigQuerySinkOptions.UNIVERSE_DOMAIN));\n            }\n\n            return BigQueryWriteClient.create(settingsBuilder.build());\n        } catch (IOException e) {\n            throw new BigQueryConnectorException(\n                    BigQueryConnectorErrorCode.CLIENT_CREATE_FAILED,\n                    \"Failed to create BigQueryWriteClient\",\n                    e);\n        }\n    }\n\n    public static BigQuery getBigQuery(ReadonlyConfig config) {\n        String projectId = config.get(BigQuerySinkOptions.PROJECT_ID);\n        if (config.get(BigQuerySinkOptions.EMULATOR_HOST) != null) {\n            return BigQueryOptions.newBuilder()\n                    .setHost(\"http://\" + config.get(BigQuerySinkOptions.EMULATOR_HOST))\n                    .setProjectId(projectId)\n                    .setCredentials(NoCredentials.getInstance())\n                    .build()\n                    .getService();\n        }\n\n        GoogleCredentials credentials = getCredentials(config);","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-connectors-v2/connector-bigquery/src/main/java/org/apache/seatunnel/connectors/bigquery/client/BigQueryClientFactory.java#L66-L102","documentation":"This BigQueryConnectorException with code CLIENT_CREATE_FAILED is thrown by BigQueryClientFactory.getWriteClient when BigQueryWriteClient.create(settings) fails with an IOException. The BigQueryWrite client requires gRPC channel setup and credential loading; failure typically means credentials could not be resolved or the transport settings are invalid. The resulting sink cannot obtain a write client, failing the whole task.","triggerScenarios":"Building BigQueryWriteSettings with invalid/missing credentials, unreadable service-account key file, wrong universe domain or endpoint, or a network/DNS failure during client construction when getWriteClient is first invoked (lazy singleton init).","commonSituations":"GOOGLE_APPLICATION_CREDENTIALS not set in the worker environment; key file path typo or missing file in the container image; invalid 'universe-domain' option (e.g. non-Google domain); private connectivity misconfiguration; credentials lacking BigQuery scopes.","solutions":["Check the wrapped IOException cause — usually 'Your default credentials were not found' or a file-read error","Set/verify GOOGLE_APPLICATION_CREDENTIALS or inline credentials options in the sink config; ensure the key file exists on every worker node","Validate the UNIVERSE_DOMAIN option matches your GCP universe (default googleapis.com)","Confirm network egress/DNS to bigquerystorage.googleapis.com and required OAuth scopes"],"exampleFix":"// before\nBigQuerySinkOptions.UNIVERSE_DOMAIN -> \"mydomain.com\"  // wrong custom domain\n// after\n// remove UNIVERSE_DOMAIN option (defaults to googleapis.com) or set the correct universe domain\nBigQuerySinkOptions.UNIVERSE_DOMAIN -> \"googleapis.com\"","handlingStrategy":"try-catch","validationCode":"// before building the sink, ensure credentials resolve\nString creds = System.getenv(\"GOOGLE_APPLICATION_CREDENTIALS\");\nif (creds == null || !new java.io.File(creds).canRead()) {\n    throw new IllegalStateException(\"BigQuery credentials not set or unreadable: \" + creds);\n}","typeGuard":null,"tryCatchPattern":"try {\n    BigQueryWriteClient client = factory.getWriteClient();\n} catch (BigQueryConnectorException e) {\n    if (\"CLIENT_CREATE_FAILED\".equals(e.getErrorCode().getCode())) {\n        LOG.error(\"Write client init failed; check credentials/network: \" + e.getCause(), e);\n    }\n    throw e;\n}","preventionTips":["Ensure GOOGLE_APPLICATION_CREDENTIALS (or inline credentials option) is set on every worker node and file is readable","Do not set UNIVERSE_DOMAIN unless using a real custom universe; default is googleapis.com","Verify network/DNS egress to bigquerystorage.googleapis.com from the cluster","Include the key file in container images and validate scopes"],"tags":["bigquery","client-initialization","credentials","gcp"],"backgroundTag":"module-init-failed","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}