Commit b987d37
authored
Add table information to BigQueryStorageApiInsertError (#36832)
* Add table information to BigQueryStorageApiInsertError
This change adds table identification (project, dataset, table) to
BigQueryStorageApiInsertError to help users identify which table
failed during Storage Write API operations.
Changes:
- Add tableUrn field to BigQueryStorageApiInsertError
- Add getProjectId(), getDatasetId(), getTableId() convenience methods
that parse the tableUrn on first access (lazy initialization with caching)
- Update StorageApiWriteUnshardedRecords to pass tableUrn to error objects
- Update StorageApiWritesShardedRecords to pass tableUrn to error objects
- Update StorageApiConvertMessages to pass tableUrn to error objects
- Update BigQueryStorageApiInsertErrorCoder to serialize/deserialize tableUrn
This makes the API consistent with BigQueryInsertError (used by
STREAMING_INSERTS method), which provides table information via
TableReference.
The tableUrn uses the format:
"projects/{project}/datasets/{dataset}/tables/{table}"
which is the standard format returned by TableDestination.getTableUrn().
Tested:
- All StorageApi-related tests pass
- Verified table information is correctly captured in error outputs
* Use TableReference instead of String for table identification in BigQueryStorageApiInsertError
Following reviewer feedback, this change updates BigQueryStorageApiInsertError
to use TableReference instead of String tableUrn for better consistency with
BigQueryInsertError.
Changes:
- Changed BigQueryStorageApiInsertError to use TableReference field instead of String tableUrn
- Updated BigQueryStorageApiInsertErrorCoder to use BigQueryHelpers.toTableSpec() and parseTableSpec()
- Added null safety checks in coder to prevent NullPointerException when table is unknown
- Updated all calling sites to pass TableReference from TableDestination.getTableReference():
- StorageApiWriteUnshardedRecords.java (3 locations)
- StorageApiWritesShardedRecords.java (3 locations + added tableReference variable)
- StorageApiConvertMessages.java (1 location)
- Added TableReference imports to modified files
The null checks in the coder ensure job stability even when table information
is unavailable during error handling, preventing pipeline failures in error
reporting scenarios.
* Add table field to toString in BigQueryStorageApiInsertError
Added the table field to the toString() method for better debugging
and logging visibility. This ensures all fields are represented in
the string output, making error investigation easier.
Change:
- Updated toString() to include ", table=" + table
* Add unit tests for BigQueryStorageApiInsertErrorCoder
Added comprehensive unit tests for BigQueryStorageApiInsertErrorCoder
to verify encode/decode functionality:
- testDecodeEncodeEqual: all fields populated
- testDecodeEncodeWithNullTable: table is null
- testDecodeEncodeWithNullErrorMessage: errorMessage is null
- testDecodeEncodeWithAllNullableFieldsNull: both nullable fields are null
These tests ensure the coder correctly handles all combinations of
nullable fields (errorMessage and table).1 parent 87de10f commit b987d37
6 files changed
Lines changed: 172 additions & 10 deletions
File tree
- sdks/java/io/google-cloud-platform/src
- main/java/org/apache/beam/sdk/io/gcp/bigquery
- test/java/org/apache/beam/sdk/io/gcp/bigquery
Lines changed: 17 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| 29 | + | |
| 30 | + | |
28 | 31 | | |
29 | | - | |
| 32 | + | |
30 | 33 | | |
31 | 34 | | |
32 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
33 | 41 | | |
34 | 42 | | |
| 43 | + | |
35 | 44 | | |
36 | 45 | | |
37 | 46 | | |
| |||
43 | 52 | | |
44 | 53 | | |
45 | 54 | | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
46 | 60 | | |
47 | 61 | | |
48 | 62 | | |
| |||
51 | 65 | | |
52 | 66 | | |
53 | 67 | | |
| 68 | + | |
| 69 | + | |
54 | 70 | | |
55 | 71 | | |
56 | 72 | | |
Lines changed: 9 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
42 | 43 | | |
43 | 44 | | |
44 | 45 | | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
45 | 49 | | |
46 | 50 | | |
47 | 51 | | |
48 | 52 | | |
49 | 53 | | |
50 | | - | |
51 | | - | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
52 | 59 | | |
53 | 60 | | |
Lines changed: 7 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
186 | 187 | | |
187 | 188 | | |
188 | 189 | | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
189 | 195 | | |
190 | 196 | | |
191 | 197 | | |
192 | | - | |
| 198 | + | |
193 | 199 | | |
194 | 200 | | |
195 | 201 | | |
| |||
Lines changed: 8 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
608 | 608 | | |
609 | 609 | | |
610 | 610 | | |
611 | | - | |
| 611 | + | |
| 612 | + | |
612 | 613 | | |
613 | 614 | | |
614 | 615 | | |
| |||
668 | 669 | | |
669 | 670 | | |
670 | 671 | | |
671 | | - | |
| 672 | + | |
| 673 | + | |
| 674 | + | |
672 | 675 | | |
673 | 676 | | |
674 | 677 | | |
| |||
753 | 756 | | |
754 | 757 | | |
755 | 758 | | |
756 | | - | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
757 | 762 | | |
758 | 763 | | |
759 | 764 | | |
| |||
Lines changed: 10 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
24 | 25 | | |
25 | 26 | | |
26 | 27 | | |
| |||
481 | 482 | | |
482 | 483 | | |
483 | 484 | | |
| 485 | + | |
484 | 486 | | |
485 | 487 | | |
486 | 488 | | |
| |||
619 | 621 | | |
620 | 622 | | |
621 | 623 | | |
622 | | - | |
| 624 | + | |
| 625 | + | |
623 | 626 | | |
624 | 627 | | |
625 | 628 | | |
| |||
739 | 742 | | |
740 | 743 | | |
741 | 744 | | |
742 | | - | |
| 745 | + | |
| 746 | + | |
| 747 | + | |
743 | 748 | | |
744 | 749 | | |
745 | 750 | | |
| |||
910 | 915 | | |
911 | 916 | | |
912 | 917 | | |
913 | | - | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
914 | 921 | | |
915 | 922 | | |
916 | 923 | | |
| |||
Lines changed: 121 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
0 commit comments