{"record":{"id":"36312cb2713e364c","repo":"prestodb/presto","slug":"error-creating-bigqueryreadclient","errorCode":null,"errorMessage":"Error creating BigQueryReadClient","messagePattern":"Error creating BigQueryReadClient","errorType":"exception","errorClass":"UncheckedIOException","httpStatus":null,"severity":"error","filePath":"presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/BigQueryReadClientFactory.java","lineNumber":57,"sourceCode":"    {\n        this.credentials = bigQueryCredentialsSupplier.getCredentials();\n        this.headerProvider = headerProvider;\n    }\n\n    BigQueryReadClient createBigQueryReadClient()\n    {\n        try {\n            BigQueryReadSettings.Builder clientSettings = BigQueryReadSettings.newBuilder()\n                    .setTransportChannelProvider(\n                            BigQueryReadSettings.defaultGrpcTransportProviderBuilder()\n                                    .setHeaderProvider(headerProvider)\n                                    .build());\n            credentials.ifPresent(credentials ->\n                    clientSettings.setCredentialsProvider(FixedCredentialsProvider.create(credentials)));\n            return BigQueryReadClient.create(clientSettings.build());\n        }\n        catch (IOException e) {\n            throw new UncheckedIOException(\"Error creating BigQueryReadClient\", e);\n        }\n    }\n}\n","sourceCodeStart":39,"sourceCodeEnd":61,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-bigquery/src/main/java/com/facebook/presto/plugin/bigquery/BigQueryReadClientFactory.java#L39-L61","documentation":"Thrown by BigQueryReadClientFactory.createBigQueryReadClient when BigQueryReadClient.create(clientSettings) throws an IOException while constructing the BigQuery Storage Read API client. The wrapper preserves the cause; typically the failure is in client settings resolution (endpoint, credentials provider, transport) rather than in the read itself. It prevents BigQueryResultPageSource from starting streamed reads.","triggerScenarios":"BigQueryReadClient.create(clientSettings.build()) throws IOException, commonly because credentials were absent/invalid (no FixedCredentialsProvider applied and no Application Default Credentials available), an invalid custom endpoint, or transport/TLS initialization failure.","commonSituations":"bigquery.credentials-key not configured and the Presto host has no Application Default Credentials (no metadata server / GOOGLE_APPLICATION_CREDENTIALS); corrupt key file producing unusable credentials; network egress blocked to bigquerystorage.googleapis.com; a bad bigquery.storage-endpoint override.","solutions":["Configure bigquery.credentials-key with a valid service-account key, or ensure Application Default Credentials are available (GOOGLE_APPLICATION_CREDENTIALS / GCE metadata server)","Check the wrapped IOException cause for the root reason (credential fetch vs endpoint vs network)","Verify network/TLS access from Presto nodes to the BigQuery Storage endpoint (bigquerystorage.googleapis.com)","If bigquery.storage-endpoint was overridden, revert it to the default or correct the hostname","Confirm the service account has BigQuery Read Session User / Data Viewer roles"],"exampleFix":"// before (no credentials configured on non-GCE host)\n# catalog properties missing credentials-key\n// after\nbigquery.credentials-key=/etc/presto/sa.json\nbigquery.credentials-keyfile-password=not-needed-for-json","handlingStrategy":"validation","validationCode":"// verify ADC/credentials resolvable before creating the client\nGoogleCredentials creds = GoogleCredentials.getApplicationDefault(); // throws if none\ncs.ifPresent(c -> clientSettings.setCredentialsProvider(FixedCredentialsProvider.create(c)));\n// ensure endpoint reachable\nInetAddress.getByName(\"bigquerystorage.googleapis.com\");","typeGuard":null,"tryCatchPattern":"try {\n    readClient = factory.createBigQueryReadClient(credentials);\n} catch (UncheckedIOException e) {\n    if (e.getMessage().contains(\"Error creating BigQueryReadClient\")) {\n        // inspect e.getCause() for credential vs endpoint vs network failure\n        throw new PrestoException(BIGQUERY_READ_SESSION_ERROR, \"Read client init failed: \" + e.getCause().getMessage(), e);\n    }\n    throw e;\n}","preventionTips":["Configure bigquery.credentials-key or ensure GOOGLE_APPLICATION_CREDENTIALS/metadata server is available on all worker nodes","Test Storage API connectivity (DNS/TLS to bigquerystorage.googleapis.com) in node bootstrap","Avoid overriding bigquery.storage-endpoint unless required and verified","Grant the service account BigQuery Read Session User and Data Viewer roles"],"tags":["bigquery","storage-read-api","client-init","google-credentials"],"backgroundTag":"client-creation-failed","analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}