static BigQueryError fromPb(ErrorProto errorPb) { return new BigQueryError( errorPb.getReason(), errorPb.getLocation(), errorPb.getMessage(), errorPb.getDebugInfo()); } }
public BigQueryException(IOException exception) { super(exception, true, RETRYABLE_ERRORS); BigQueryError error = null; if (getReason() != null) { error = new BigQueryError(getReason(), getLocation(), getMessage(), getDebugInfo()); } this.error = error; }
assertFalse(exception.isRetryable()); BigQueryError error = new BigQueryError("reason", null, null); exception = new BigQueryException(504, "message", error); assertEquals(504, exception.getCode());
static BigQueryError fromPb(ErrorProto errorPb) { return new BigQueryError( errorPb.getReason(), errorPb.getLocation(), errorPb.getMessage(), errorPb.getDebugInfo()); } }
static BigQueryError fromPb(ErrorProto errorPb) { return new BigQueryError(errorPb.getReason(), errorPb.getLocation(), errorPb.getMessage(), errorPb.getDebugInfo()); } }
public BigQueryException(IOException exception) { super(exception, true, RETRYABLE_ERRORS); BigQueryError error = null; if (getReason() != null) { error = new BigQueryError(getReason(), getLocation(), getMessage(), getDebugInfo()); } this.error = error; }
public BigQueryException(IOException exception) { super(exception, true); BigQueryError error = null; if (reason() != null) { error = new BigQueryError(reason(), location(), getMessage(), debugInfo()); } this.error = error; }
@Test(expected = BigQueryConnectException.class) public void testBigQueryRetryExceeded() { final String topic = "test_topic"; final String dataset = "scratch"; Map<String, String> properties = propertiesFactory.getProperties(); properties.put(BigQuerySinkTaskConfig.BIGQUERY_RETRY_CONFIG, "1"); properties.put(BigQuerySinkTaskConfig.BIGQUERY_RETRY_WAIT_CONFIG, "2000"); properties.put(BigQuerySinkConfig.TOPICS_CONFIG, topic); properties.put(BigQuerySinkConfig.DATASETS_CONFIG, String.format(".*=%s", dataset)); BigQuery bigQuery = mock(BigQuery.class); Storage storage = mock(Storage.class); InsertAllResponse insertAllResponse = mock(InsertAllResponse.class); BigQueryError quotaExceededError = new BigQueryError("quotaExceeded", null, null); when(bigQuery.insertAll(anyObject())) .thenThrow(new BigQueryException(403, "mock quota exceeded", quotaExceededError)); when(insertAllResponse.hasErrors()).thenReturn(false); SinkTaskContext sinkTaskContext = mock(SinkTaskContext.class); BigQuerySinkTask testTask = new BigQuerySinkTask(bigQuery, null, storage); testTask.initialize(sinkTaskContext); testTask.start(properties); testTask.put(Collections.singletonList(spoofSinkRecord(topic))); testTask.flush(Collections.emptyMap()); }
@Test public void testBigQuery403Retry() { final String topic = "test_topic"; final String dataset = "scratch"; Map<String, String> properties = propertiesFactory.getProperties(); properties.put(BigQuerySinkTaskConfig.BIGQUERY_RETRY_CONFIG, "2"); properties.put(BigQuerySinkTaskConfig.BIGQUERY_RETRY_WAIT_CONFIG, "2000"); properties.put(BigQuerySinkConfig.TOPICS_CONFIG, topic); properties.put(BigQuerySinkConfig.DATASETS_CONFIG, String.format(".*=%s", dataset)); BigQuery bigQuery = mock(BigQuery.class); Storage storage = mock(Storage.class); InsertAllResponse insertAllResponse = mock(InsertAllResponse.class); BigQueryError quotaExceededError = new BigQueryError("quotaExceeded", null, null); BigQueryError rateLimitExceededError = new BigQueryError("rateLimitExceeded", null, null); when(bigQuery.insertAll(anyObject())) .thenThrow(new BigQueryException(403, "mock quota exceeded", quotaExceededError)) .thenThrow(new BigQueryException(403, "mock rate limit exceeded", rateLimitExceededError)) .thenReturn(insertAllResponse); when(insertAllResponse.hasErrors()).thenReturn(false); SinkTaskContext sinkTaskContext = mock(SinkTaskContext.class); BigQuerySinkTask testTask = new BigQuerySinkTask(bigQuery, null, storage); testTask.initialize(sinkTaskContext); testTask.start(properties); testTask.put(Collections.singletonList(spoofSinkRecord(topic))); testTask.flush(Collections.emptyMap()); verify(bigQuery, times(3)).insertAll(anyObject()); }