Skip to content

[feature](storage) Support native GCP IAM authentication - #68540

Merged
sollhui merged 58 commits into
apache:masterfrom
sollhui:feature/gcp-native-iam-master
Oct 26, 2026
Merged

sollhui merged 58 commits into
apache:masterfrom
sollhui:feature/gcp-native-iam-master

Conversation

@sollhui

@sollhui sollhui commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

What problem does this PR solve?

GCS access currently relies on HMAC keys or unsigned requests. This PR adds native GCP IAM authentication across FE, BE, and Cloud, allowing Doris to access GCS using Application Default Credentials (ADC), a Compute Engine service account, or an impersonated service account.

Authentication and configuration

provider=GCP
gs.credential_provider_type=DEFAULT
# Optional: access GCS as this service account
gs.impersonation_service_account=target@project.iam.gserviceaccount.com
  • DEFAULT uses Google's Application Default Credentials chain.
  • COMPUTE_ENGINE uses the service account attached to the VM.
  • gs.impersonation_service_account optionally selects a target service account using the source identity's impersonation permissions.
  • GCP configurations without HMAC credentials or an explicit authentication mode default to ADC. Public-bucket access requires explicit ANONYMOUS.

Existing GCS HMAC authentication remains supported. Native IAM authentication rejects conflicting HMAC or AWS credential properties and requires a supported Google Storage HTTPS service endpoint.

How it works

  • FE: The GCS filesystem plugin resolves authentication properties and creates refreshable Google OAuth credentials. Object operations use bearer-authenticated GCS XML API requests; namespace operations use the Hadoop GCS connector. The Iceberg connector applies the same GCP identity to GCS storage access.
  • BE and Cloud: Typed GCP identity settings are carried through Thrift, Protobuf, and Cloud object metadata. The C++ storage client uses google-cloud-cpp OAuth credentials to authenticate GCS requests and refresh access tokens.
  • Resources and storage vaults: Persist and propagate the authentication mode and optional impersonation target. Partial credential updates preserve omitted settings and allow impersonation to be cleared explicitly. Anonymous GCS storage vaults are rejected.
  • Data and error-log access: Integrate IAM authentication with GCS-backed catalogs, TVFs, load, export, outfile, and backup/restore. EXPORT and OUTFILE accept gs:// paths. Backend error-log downloads use GCS V4 URLs signed through IAM signBlob.

FE/Iceberg package the Hadoop GCS connector; BE/Cloud package the google-cloud-cpp OAuth libraries. The participating FE, BE, and MetaService processes must support the new credential fields before native IAM is enabled. Native IAM support for Paimon/Hudi and FE presigned uploads is outside this PR's scope.

Release note

Support native GCP IAM authentication for GCS using ADC, Compute Engine service accounts, and optional service-account impersonation. GCP configurations without HMAC credentials default to ADC; anonymous access must be selected explicitly.

Validation

  • Added unit and regression coverage for authentication selection, credential conflicts, GCS operations, resources, and storage vaults.
  • Latest focused run: 78 MinIO, S3, and GCS unit tests passed; Checkstyle and git diff --check passed.
  • The full local FE test run is blocked by installed Thrift 0.16.0 versus required 0.24.0. Full BE/Cloud, Iceberg integration, and live GCP IAM regression validation remain outstanding.

Check List (For Author)

  • Test:
    • Unit and regression coverage included.
    • Focused unit tests and style checks passed.
    • Full FE, Iceberg, BE/Cloud, and live GCP IAM validation completed.
  • Behavior changed:
    • Native GCP IAM authentication, ADC default, explicit anonymous access, and GCP credential updates.
  • Does this need documentation?
    • Yes: authentication properties, ADC setup, impersonation permissions, supported endpoints, and deployment requirements.

### What problem does this PR solve?

Problem Summary:

GCS access currently depends on HMAC credentials or unsigned requests. A deployment using Application Default Credentials or a Compute Engine service account cannot consistently use the same identity for object reads and writes, Iceberg metadata operations, storage vaults, and backend error-log downloads.

Add native GCP OAuth authentication across FE, BE, and Cloud using `gs.credential_provider_type=DEFAULT` or `COMPUTE_ENGINE`, with optional `gs.impersonation_service_account`. GCP storage without explicit authentication defaults to Application Default Credentials. Public-bucket access requires explicit `ANONYMOUS`; existing HMAC configuration remains supported. Reject conflicting native, HMAC, and AWS-only authentication properties before creating clients.

The implementation follows the current master architecture:

- Keep credential resolution in the filesystem API, OAuth client construction in the GCS plugin, and Iceberg client integration in the Iceberg connector. Use the native Hadoop GCS connector for namespace operations and bearer-authenticated S3 XML clients for object operations.
- Carry typed credentials through additive Thrift and Protobuf fields, Cloud object information, and the shared C++ S3 client factory. Preserve AWS authentication, client caching, and rate limiting.
- Normalize GCS aliases for resources, serialize resource ALTER operations, and validate effective properties before publication. Preserve omitted vault credential fields during partial ALTER, support clearing impersonation explicitly, and reject anonymous storage vaults. Apply vault changes to candidate metadata so a failed update does not persist a partial rename.
- Support `gs://` in EXPORT and OUTFILE while preserving HTTP paths. Generate backend GCS V4 error-log URLs through IAM `signBlob`, falling back to the local error-log path if signing fails.
- Add unit coverage and IAM regression suites for catalogs, TVFs, load, export, outfile, backup/restore, resources, vaults, property validation, and anonymous access. Export tests read back the written data and isolate cleanup by run directory.

Example native authentication properties:

```properties
provider=GCP
gs.credential_provider_type=DEFAULT
gs.impersonation_service_account=target@project.iam.gserviceaccount.com
```

The impersonation property is optional. Use `COMPUTE_ENGINE` to select the attached VM identity explicitly, or `ANONYMOUS` for public object access.

Compatibility and deployment:

- Existing AWS/HMAC protocol fields and authentication paths remain available. Native GCP credentials require updated consumers; upgrade MetaService and the relevant FE/BE processes before enabling the feature during a rolling upgrade.
- Package google-cloud-cpp OAuth libraries for BE/Cloud and the shaded Hadoop GCS connector for FE/Iceberg.
- FE presigned uploads with native OAuth remain unsupported and fail explicitly. Backend error-log downloads use the dedicated GCS V4 signing path.
- Native OAuth uses the existing configurable object-store endpoint, so this remains an outbound-request/SSRF surface. Catalog creation requires catalog CREATE privilege; vault creation requires global ADMIN privilege. Google token and signing operations use the credential library and Google IAM APIs. No remote code-loading path is introduced.

### Release note

Add native GCP IAM authentication with Application Default Credentials, Compute Engine identities, and optional service-account impersonation for GCS-backed storage. GCP configurations without HMAC or an explicit authentication mode now use ADC; public access must select `ANONYMOUS`. Improve resource/vault credential updates and support GCS error-log signing.

### Validation

Passed locally:

- GCS filesystem reactor unit tests, including 88 filesystem API tests, 152 S3-base tests, and 36 GCS tests; zero failures, errors, or skips in these modules.
- FE Core and Iceberg Checkstyle, plus the GCS reactor's style checks.
- clang-format 16 checks for all 33 changed C++ files, BE build hygiene, connector import boundaries, and FE metadata-funnel checks.
- Parsing of all 41 changed Java files; Protobuf descriptor generation and Thrift C++ generation for the changed definitions.
- `git diff --check`.

Not completed locally:

- Full FE unit tests: the standard runner requires JDK 17; the available test runtime is JDK 20.
- Iceberg reactor tests: generation stops because the installed Thrift compiler is 0.16.0 while master requires 0.24.0. The standalone Thrift syntax check above does not replace this build.
- BE/Cloud compilation, unit tests, and clang-tidy: the installed thirdparty bundle lacks the required google-cloud-cpp libraries.
- Live IAM regression suites: no configured Doris cluster or GCP test environment was available.

### Check List (For Author)

- Test:
  - [x] Unit tests added; filesystem API/S3/GCS tests executed successfully.
  - [x] Regression tests added.
  - [ ] Full FE, Iceberg, BE/Cloud, and live IAM tests completed.
- Behavior changed:
  - [x] Yes: native GCP authentication, ADC default, explicit anonymous mode, and validated partial credential updates as described above.
- Does this need documentation?
  - [x] Yes: document credential properties, ADC deployment, impersonation permissions, explicit anonymous access, and upgrade requirements.
@hello-stephen

Copy link
Copy Markdown
Contributor

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

…ures

### What problem does this PR solve?

Related PR: apache#68540

Problem Summary: Native GCP Hadoop access ignored the configured endpoint and
HadoopCatalog selected S3A for s3/s3a warehouse aliases. Propagate the endpoint
to the Google connector and normalize native HadoopCatalog warehouses to gs.
The C++ client also sent anonymous object requests when token acquisition
failed. Acquire bearer tokens before each object-storage SDK operation and
return a non-retryable authentication error on missing or empty tokens.
Add endpoint, warehouse alias, and authentication-failure coverage.

### Release note

Native GCP catalogs honor custom endpoints and compatible warehouse schemes.
Missing GCP tokens now fail locally instead of issuing anonymous requests.

### Check List (For Author)

- Test: GCS module and upstream unit tests passed (37 GCS tests); FE Checkstyle,
  clang-format 16 on changed C++ files, build hygiene, and git diff --check passed.
  Iceberg tests stopped at the Thrift 0.16/0.24 mismatch; BE test setup stopped
  at the JDK 17 requirement. Further compilation and tests skipped at user request.
  Live GCP regression tests were not run.
- Behavior changed: Yes, native Hadoop endpoint/scheme routing and token failure handling.
- Does this need documentation: No
### What problem does this PR solve?

Related PR: apache#68540

Problem Summary: Resources saved before GCS alias normalization can retain
old gs.* properties. Normalizing only after merging an ALTER lets an old
alias override a new s3.* value, silently ignoring credential rotation or
restoring a session token that the user cleared. Normalize stored properties
and the patch separately before merging, so the patch takes precedence while
preserving gs.* priority within the same input map. Update the regression
unit test to expect the new access/secret keys and the cleared session token.

### Release note

GCP resource ALTER updates now override persisted gs.* aliases correctly.

### Check List (For Author)

- Test: FE Core Checkstyle and git diff --check passed. Updated unit coverage
  for credential replacement, token clearing, unchanged properties, and
  same-input alias precedence. Compilation and tests skipped at user request.
- Behavior changed: Yes, explicit resource updates override old alias values.
- Does this need documentation: No
@sollhui

sollhui commented Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

run buildall

@sollhui

sollhui commented Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

/review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes: five inline findings remain after two static review rounds. Three affect native GCP identity across Cloud stage retrieval, COPY INTO scan planning, and legacy instance AK/SK updates; two break IAM regression suites. The stage findings are independent: repairing the stage response alone does not repair COPY's separately built broker map. There was no additional user-provided review focus.

Critical checkpoints (code-review skill 1.3):

  • Goal and proof: Native GCP OAuth is wired through FE, BE, Cloud, Iceberg, and error-log signing, but the three credential handoffs above prevent consistent identity use. Added builder and validation tests do not cover these end-to-end paths.
  • Scope and clarity: The broad cross-module change generally reuses shared credential adapters. The Syncer helper removal also breaks an unchanged AWS suite.
  • Concurrency: FE resource ALTER serializes snapshot and publication; the C++ token provider protects its cached generator. I found no separate lock-order, thread-context, or atomic-order defect.
  • Lifecycle: Cached clients include the credential configuration and release the signing callback with the client. No cross-translation-unit static initialization or ownership-cycle issue was found.
  • Configuration: The new GCP mode and impersonation properties are carried as persisted or transport fields. Vault partial ALTER preserves omitted fields; legacy instance key updates retain the native envelope incorrectly (inline finding). No new dynamic configuration knob needs a refresh path.
  • Compatibility: The new Thrift and Protobuf fields are optional, and the PR declares that updated consumers are required before enabling native mode. The removed regression helper is an incompatible test-framework symbol (inline finding).
  • Parallel paths and conditionals: MetaService's stage response and COPY's broker map each lose credential settings; both instance AK/SK update entry points retain native auth. Other auth conflict and anonymous-mode checks matched their documented behavior on static trace.
  • Test coverage and results: Unit tests cover direct adapters, token/header behavior, and vault patching; no stage RPC/COPY scan or native-to-AK/SK instance transition test covers the findings. Two regression suites have deterministic failures under their supported AWS configurations. Builds, tests, and live IAM requests were prohibited by the review prompt, so this review makes no runtime validation claim; author-reported checks were not independently rerun.
  • Observability and errors: Token and IAM signing failures are propagated or logged, with a local error-log fallback. I found no separate ignored Status, exception-boundary, or metric defect; wrong identity selection in the inline findings can still surface only downstream.
  • Persistence, writes, and crashes: Vault ALTER validates a candidate and commits vault/instance metadata together. Legacy instance key updates persist a mixed auth state (inline finding). No other new write-atomicity or crash-recovery defect was substantiated.
  • FE/BE propagation: Optional credential fields reach the regular adapters, but COPY's manually built scan map drops GCP mode and impersonation. The provider-less resource concern raised during review was dismissed after tracing GcpCredentialAdapter's downstream Thrift setter.
  • Performance, memory, and BE nullable handling: No material new hot-path cost or memory ownership/reservation issue was substantiated. Vectorized ColumnNullable and MoW/versioned-read code are untouched by this PR.

Review complete after the final changed-file and duplicate sweep. Five distinct issues are left inline; no unresolved candidate remains. Static inspection only.

gavinchou
gavinchou previously approved these changes Sep 30, 2026
### What problem does this PR solve?

Related PR: apache#68540

Problem Summary: Clearing s3.role_arn previously erased static keys and native
GCP credentials before persisting the vault. Only replace other credentials
when selecting a nonempty AWS role or an explicit AWS credential provider.
Cover encrypted static credentials, native GCP credentials, and repeated clears
at the RPC/persistence boundary. Also use TableNameInfo in ExportCommandTest
and restore the role repository helper still used by the legacy AWS suite.

### Release note

Clearing an unused AWS role preserves the vault's active static or GCP credentials.

### Check List (For Author)

- Test: clang-format 16 check, build hygiene, Java Checkstyle (JDK 20),
  git diff --check, and Groovy helper smoke checks passed.
  Added cloud RPC/persistence regression coverage. FE UT and cloud build
  could not start because the configured JDK 17 lacks lib/modules;
  cloud third-party build dependencies and a live Doris/AWS environment
  are also unavailable. Full unit/integration tests were not run.
- Behavior changed: Yes, clearing an unused role preserves existing credentials.
- Does this need documentation: No
…keys

### What problem does this PR solve?

Related PR: apache#68540

Problem Summary: Legacy instance key updates retained native GCP credentials,
so clients kept using OAuth after a successful AK/SK update. Clear the native
envelope in both instance update helpers, including both user-id branches,
and allow unchanged keys to repair an already persisted mixed auth state.
Reject empty replacement keys before removing native authentication.
Add RPC/persistence coverage for native-to-key transitions, mixed-state repair,
and rejection without mutation. Guard optional AWS external-ID assertions so
an omitted external ID does not fail the resource ALTER regression suite.

### Release note

Replacing native GCP authentication with instance access keys now makes the
new keys effective. AWS IAM resource regression tests accept an omitted
external ID.

### Check List (For Author)

- Test: Added regression coverage; compilation and test execution skipped at
  user request. Applied repository clang-format 16; git diff --check passed.
- Behavior changed: Yes, instance key updates remove native authentication.
- Does this need documentation: No
### What problem does this PR solve?

Related PR: apache#68540

Problem Summary: Merge apache/doris master at 7ac0eb2 into the GCP IAM
branch. Resolve concurrent test additions in OutFileTest and
ExternalFileTableValuedFunctionTest by retaining both the GCP credential
coverage and upstream UUID coverage as separate methods. Preserve the
previous credential-transition and regression fixes.

### Release note

None

### Check List (For Author)

- Test: Targeted Java Checkstyle passed with zero violations. Verified both
  parents' test methods remain, no unresolved merge entries, and prior repair
  patches still apply in reverse. Conflict-file whitespace checks passed;
  upstream generated .out whitespace was retained. Compilation and test
  execution skipped at user request.
- Behavior changed: No additional behavior change beyond merging master.
- Does this need documentation: No
@sollhui

sollhui commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

run buildall

@sollhui

sollhui commented Oct 7, 2026

Copy link
Copy Markdown
Contributor Author

/review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review outcome: request changes. This exact-head static review found six distinct new issues in the inline comments: two P1 and four P2. Existing P1 comments 4119930342 (internal-stage credential lost in get_stage) and 4119930347 (COPY INTO broker properties omit native GCP credentials) still apply and are carried as blockers without reposting. The other three existing threads were rechecked and their issues are fixed at this head.

Goal and test evidence: The change adds native GCP OAuth across FE, BE, Cloud object storage, Iceberg, export, and signed URLs. The implementation does not yet meet that goal on the token-boundary and Cloud mutation paths identified inline. Added BE, Cloud, FE, and regression test sources were inspected; builds and tests were prohibited by this review contract and were not run, so their results are not independently verified.

Scope, configuration, and compatibility: The change mostly uses the existing storage adapters and factories, and no unrelated edit was substantiated as an issue. The inspected FE-to-BE and FE-to-Cloud mappings retain native credential fields for supported Resource, Vault, Iceberg, LOAD, TVF, OUTFILE, EXPORT, and recycler paths. The role-only ADD_S3_VAULT RPC loses its previous default-provider compatibility. No new dynamically reloaded process setting was identified. Native credential protocol compatibility during rolling upgrades remains dependent on updated consumers as described in the PR; this static review cannot validate a mixed-version deployment.

Concurrency and lifecycle: Client cache misses construct outside the factory lock, and the new GCP consumers read the shared CA path without its lock. Token refresh ownership and synchronization, presigning callbacks, release paths, and cross-translation-unit initialization were inspected; no other substantiated lifecycle issue remained. Heavy client construction occurs outside the cache lock, and no new lock-order issue was found.

Validation, errors, and observability: The auth-mode predicates and caller-selected endpoint boundary were traced through request construction, including the concrete path-style SQL case. Cloud admission conditions are inconsistent for native ADD_OBJ_INFO and role-only vault ADD. Signed URL error handling, IAM response parsing, and existing logging were inspected; no further distinct status-propagation or observability issue was substantiated.

Persistence, writes, and parallel paths: Cloud root and derived credential changes use separate transactions; a derived failure followed by the same request cannot finish the cascade. The two existing stage/COPY paths still drop native credentials. Other inspected vault persistence, recycler reads, and FE/BE transport paths preserve the selected identity. Table visible-version, MoW delete bitmap, and rowset publication logic are not changed by this PR. No additional confirmed memory-accounting or hot-path performance issue was found; final glibc 2.17 binary compatibility cannot be established without a build artifact.

Completion: All 107 changed paths, the prior inline threads, and the unresolved-candidate list were swept after two review rounds; all round-two agents returned NO_NEW_VALUABLE_FINDINGS. The user focus file specified no additional focus.

Existing P0/P1 findings confirmed for this head: #68540 (comment), #68540 (comment)

Comment thread be/src/util/s3_util.cpp Resolved
### What problem does this PR solve?

Related PR: apache#68540

Problem Summary: Native GCP clients attached process bearer tokens to arbitrary
storage endpoints. Require Google Cloud Storage HTTPS endpoints on port 443 in
FE properties and request interception, and in the shared BE/Cloud client before
fetching tokens. Keep TLS verification enabled, disable native-client redirects,
and reject AWS access-point ARNs in GCS bucket fields. HMAC and anonymous endpoint
handling retain their existing behavior.

Exclude the Doris cluster Auth-Token header from IAM signBlob and metadata HTTP
requests. Admit validated native credentials for legacy ADD_OBJ_INFO requests,
preserve role-only ADD_S3_VAULT requests with an omitted provider type, and pass
the locked CA-path snapshot to both GCP consumers.

### Release note

Native GCP OAuth requires a Google Cloud Storage HTTPS endpoint on port 443;
untrusted custom endpoints and plaintext endpoints are rejected. Legacy object
storage ADD accepts native GCP credentials, and role-only vault ADD continues to
default to INSTANCE_PROFILE.

### Check List (For Author)

- Test: Added FE, BE, and Cloud unit coverage. Java Checkstyle, clang-format 16,
  build hygiene, and git diff --check passed. An isolated check compiled the
  actual C++ endpoint validator and passed 14 endpoint cases. Full unit tests
  and BE/Cloud builds were not run: standard FE/BE test entry points stopped
  because JDK 17 is unavailable, and this checkout has no thirdparty bundle.
- Behavior changed: Yes, endpoint restrictions and corrected credential admission.
- Does this need documentation: Yes, native OAuth endpoint restrictions are
  described in the release note above.
### What problem does this PR solve?

Related PR: apache#68540

Problem Summary: The pinned AWS SDK does not expose the four-argument constructor on S3Error, so GCP authentication failures prevent BE compilation. Construct AWSError<S3Errors> first and convert it to S3Error, preserving the error details and response codes. FE test compilation also fails because new S3 resource and vault tests use removed JMockit APIs. Migrate those mocks to scoped Mockito instances and retain the credential and no-RPC assertions.

### Release note

None

### Check List (For Author)

- Test: FE-core Checkstyle, clang-format 16, git diff --check, and PR-wide legacy JMockit scan passed. Constructor APIs verified against AWS SDK 1.11.221 headers. Full build and unit tests unavailable locally because JDK 17 and thirdparty dependencies are missing.
- Behavior changed: No
- Does this need documentation: No
@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 84.18% (266/316) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 76.94% (2099/2728)
Line Coverage 66.12% (38688/58515)
Region Coverage 53.76% (36315/67549)
Branch Coverage 57.33% (11821/20618)

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 86.67% (208/240) 🎉
Increment coverage report
Complete coverage report

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 28355 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 0505a9fd63ee0926bda7107909ebc5d111f43bd8, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17613	5206	5053	5053
q2	2152	297	252	252
q3	10195	1369	817	817
q4	4689	468	336	336
q5	7428	799	533	533
q6	182	184	147	147
q7	752	791	600	600
q8	9261	1297	1062	1062
q9	5558	4218	4196	4196
q10	6903	1293	1035	1035
q11	446	249	231	231
q12	641	396	288	288
q13	18107	3571	3036	3036
q14	275	271	251	251
q15	q16	719	721	672	672
q17	1208	755	567	567
q18	6995	6171	6124	6124
q19	1109	956	590	590
q20	395	335	226	226
q21	5083	2087	2250	2087
q22	353	288	252	252
Total cold run time: 100064 ms
Total hot run time: 28355 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	5633	5570	5602	5570
q2	670	560	548	548
q3	5218	5361	4949	4949
q4	1987	2119	1541	1541
q5	5266	5167	5541	5167
q6	241	192	145	145
q7	2325	2090	1830	1830
q8	2994	2652	2707	2652
q9	8008	8016	7894	7894
q10	3695	3679	3225	3225
q11	597	430	433	430
q12	833	692	533	533
q13	3442	3961	3201	3201
q14	292	325	299	299
q15	q16	692	742	673	673
q17	8536	7599	6872	6872
q18	13015	12182	12802	12182
q19	908	774	797	774
q20	2104	2156	1901	1901
q21	5578	4546	4724	4546
q22	478	460	406	406
Total cold run time: 72512 ms
Total hot run time: 65338 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-DS: Total hot run time: 150778 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 0505a9fd63ee0926bda7107909ebc5d111f43bd8, data reload: false

query5	4304	603	456	456
query6	430	204	191	191
query7	4802	442	217	217
query8	320	171	146	146
query9	8755	3122	3122	3122
query10	475	334	254	254
query11	5826	3885	3580	3580
query12	157	90	88	88
query13	1248	439	307	307
query14	6098	3941	3609	3609
query14_1	3392	3361	3375	3361
query15	199	200	185	185
query16	940	427	420	420
query17	851	653	511	511
query18	2412	408	298	298
query19	197	159	124	124
query20	82	85	78	78
query21	208	128	116	116
query22	12947	13006	12829	12829
query23	13458	12760	12258	12258
query23_1	12551	12492	12553	12492
query24	7341	810	451	451
query24_1	478	465	497	465
query25	533	427	356	356
query26	1284	256	142	142
query27	2763	437	278	278
query28	4615	1966	1973	1966
query29	1558	606	451	451
query30	309	222	183	183
query31	1008	942	825	825
query32	141	96	102	96
query33	521	301	233	233
query34	903	842	503	503
query35	729	755	631	631
query36	810	804	699	699
query37	147	110	94	94
query38	1797	1736	1651	1651
query39	816	793	752	752
query39_1	736	735	737	735
query40	222	123	100	100
query41	72	69	67	67
query42	90	85	85	85
query43	343	365	313	313
query44	1285	687	679	679
query45	181	178	162	162
query46	836	961	565	565
query47	3031	2933	2774	2774
query48	298	320	225	225
query49	580	405	299	299
query50	682	287	213	213
query51	10628	10450	10472	10450
query52	79	87	71	71
query53	195	210	155	155
query54	246	207	213	207
query55	72	68	69	68
query56	241	219	217	217
query57	1688	1653	1564	1564
query58	302	276	261	261
query59	2125	2137	1969	1969
query60	293	283	241	241
query61	186	166	167	166
query62	389	338	284	284
query63	189	157	160	157
query64	2891	940	793	793
query65	3358	3299	3278	3278
query66	1766	410	313	313
query67	20280	20223	20064	20064
query68	3010	1016	598	598
query69	390	306	261	261
query70	884	785	786	785
query71	306	231	212	212
query72	2693	2621	2333	2333
query73	516	513	290	290
query74	4629	4534	4384	4384
query75	2342	2271	1894	1894
query76	2288	987	577	577
query77	341	368	274	274
query78	9887	9737	9191	9191
query79	982	834	522	522
query80	1109	429	332	332
query81	572	320	268	268
query82	558	135	104	104
query83	285	192	179	179
query84	308	114	102	102
query85	860	469	375	375
query86	374	248	225	225
query87	2008	1942	1837	1837
query88	3605	2650	2637	2637
query89	326	279	234	234
query90	1861	170	166	166
query91	155	153	126	126
query92	97	89	79	79
query93	1002	965	573	573
query94	573	318	275	275
query95	560	326	299	299
query96	664	482	235	235
query97	2430	2440	2327	2327
query98	165	158	148	148
query99	771	759	656	656
Total cold run time: 234984 ms
Total hot run time: 150778 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 25.37 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 0505a9fd63ee0926bda7107909ebc5d111f43bd8, data reload: false

query1	0.00	0.00	0.01
query2	0.14	0.09	0.09
query3	0.34	0.13	0.13
query4	1.61	0.13	0.13
query5	0.28	0.26	0.23
query6	1.16	0.66	0.66
query7	0.04	0.01	0.00
query8	0.09	0.07	0.07
query9	0.44	0.36	0.36
query10	0.59	0.62	0.60
query11	0.34	0.18	0.17
query12	0.33	0.19	0.18
query13	0.58	0.53	0.52
query14	0.93	0.94	0.91
query15	0.65	0.61	0.59
query16	0.37	0.37	0.37
query17	1.09	1.04	1.06
query18	0.29	0.27	0.27
query19	1.95	1.89	1.92
query20	0.02	0.01	0.02
query21	15.41	0.35	0.30
query22	4.91	0.13	0.13
query23	15.86	0.49	0.29
query24	2.08	0.55	0.38
query25	0.16	0.09	0.10
query26	0.76	0.27	0.22
query27	0.10	0.10	0.10
query28	3.42	0.85	0.40
query29	12.61	4.45	3.41
query30	0.35	0.18	0.13
query31	2.78	0.60	0.34
query32	3.23	0.61	0.50
query33	3.09	3.03	3.00
query34	15.92	4.08	3.44
query35	3.39	3.41	3.40
query36	0.58	0.50	0.49
query37	0.11	0.09	0.09
query38	0.08	0.06	0.07
query39	0.06	0.06	0.06
query40	0.20	0.17	0.16
query41	0.10	0.05	0.05
query42	0.06	0.06	0.06
query43	0.07	0.06	0.05
Total cold run time: 96.57 s
Total hot run time: 25.37 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE Regression Coverage Report

Increment line coverage 39.58% (95/240) 🎉
Increment coverage report
Complete coverage report

### What problem does this PR solve?

Related PR: apache#68540

The GCP IAM implementation used two public routing hooks and changed every
filesystem selection entry point. Remove that generic routing dependency and
restore the existing manager. Reuse dependency-free GCS property recognition
in S3/MinIO predicates and reject native GCP keys when AWS/HMAC properties bind,
including forced selection and operation without the GCS plugin.

### Release note

GCP matching uses the existing filesystem SPI. Explicit S3 authentication and
multiple filesystem selections are preserved. Remove the draft routing hooks
and update the filesystem API surface/version to 6.0; native identity hooks
remain and plugins must be rebuilt against the matching host API.

### Check List (For Author)

- Test: 11 GcsAuthResolverTest cases passed through run-fe-ut.sh; Checkstyle
  passed for all affected modules; 14 Java files parsed; git diff --check passed.
  Added routing/binding regressions. The remaining standard FE run is blocked
  at fe-thrift by compiler 0.16.0 versus required 0.24.0; those tests did not run.
- Behavior changed: Yes, GCP-specific selection/validation stays in plugins.
- Does this need documentation: Yes, filesystem README updated.
@sollhui

sollhui commented Oct 25, 2026

Copy link
Copy Markdown
Contributor Author

run buildall

@sollhui

sollhui commented Oct 25, 2026

Copy link
Copy Markdown
Contributor Author

/review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes. Static review covered all 149 files at 0d4255d168e1eb96b43151b741dcbe87d23275a3, including the aggregate ALTER prerequisite changes. Two new P2 comments identify deterministic failures in added tests.

Three existing P1 findings remain applicable and are retained without duplicate comments: internal-stage credential loss, COPY scan credential loss, and derived-instance credential cascade retry. All 19 prior P1 comments were revalidated: the other reports are repaired or fall under the PR's explicitly documented support and rollout constraints.

Critical checkpoint conclusions:

  • Goal and proof: ADC, Compute Engine and impersonation are carried through the shared authentication design. Existing stage/COPY/cascade defects prevent complete identity preservation. Tests are included; this invocation did not execute them.
  • Focus and reuse: the changes share provider rules, typed identity descriptions, a common C++ factory and host-side wire translation. The broad scope follows the feature's FE/BE/Cloud paths.
  • Concurrency: token access is serialized; resource ALTER serializes snapshot, validation and publication; policy serialization releases read locks in finally. Remote validation occurs outside the resource write lock. No concrete new lock-order defect was established.
  • Lifecycle: callbacks own credential/configuration snapshots; client creation and reset carry native identity; TCCL restoration uses finally. No new ownership cycle or cross-translation-unit initialization dependency was found.
  • Configuration: new credential properties preserve omitted versus explicitly cleared impersonation values. Resource versions and vault synchronization propagate successful updates. Added regression configuration is test-only.
  • Compatibility: legacy static keys, explicit DEFAULT and provider aliases were checked. Omitted GCS authentication now selects ADC, as documented. Native activation requires upgrading every relevant consumer first; native FE presigned uploads and native Hudi/Paimon support are outside the stated support scope.
  • Shared schemas: every touched definition was compared with branches 3.1, 4.0, 4.1 and 4.2. Parent field IDs 20 (PB) and 16 (Thrift), child IDs and enum values are compatible; new fields are optional.
  • Parallel paths: TVF, LOAD, OUTFILE, EXPORT, backup, policy resources, vaults, stages, recycler and Iceberg were traced. The existing COPY map omission remains an exception.
  • Conditional logic: CREATE defaults and presence-preserving ALTER patches were checked. Existing threads still cover native/HMAC resource transitions, empty session-token aliases and static-key vaults with dormant DEFAULT fields.
  • Test coverage: added tests cover auth modes, validation, replay, batched policy pushes, concurrent ALTER, aliases, token exchange, signing, serialization and metadata/storage identity separation. The new MinIO and validation-message expectations contradict current code and are reported inline.
  • Expected results: no .out files changed. Assertions were checked statically; no build, test or live-service success is claimed.
  • Observability: token/client/signing failures have error paths and diagnostic logs; token values are not logged. No further concrete observability defect was established.
  • Persistence and failover: resource journaling/replay and vault candidate validation were traced. Existing internal-stage serialization and derived-instance retry findings remain; rowset, visible-version and delete-bitmap semantics are untouched.
  • Writes and atomicity: failed resource validation preserves the prior published state; rejected vault updates preserve authentication and rename state. The separately committed cascade remains the existing failure case.
  • FE/BE transport: native fields reach property maps, policy Thrift, Cloud PB and serialized Iceberg FileIO; COPY's manually assembled broker map still omits them.
  • Performance and memory: token refresh is cached, credential resolution scans bounded property sets, and the changes add no large data buffers or unbounded metadata loop. SDK closure/link additions were inspected statically.
  • Further risks: existing threads already cover C++ ADC construction/refresh exceptions, HMAC Glue FileIO, mixed AWS/GCS locations and explicit HadoopFileIO aliases. They were verified and deduplicated; no unresolved candidate remains in this static review.

There was no additional user-provided focus. Runtime limits: builds/tests, live GCP authorization, packaged Java dependency closure and final ELF/glibc 2.17 compatibility were not validated. Review convergence describes completion of this bounded static review, not correctness of the PR or resolution of its existing findings.

Review converged after 2 round(s).

Existing P0/P1 findings confirmed for this head: #68540 (comment), #68540 (comment), #68540 (comment)

### What problem does this PR solve?

Related PR: apache#68540

Problem Summary: The MinIO provider test expected a regional GCS endpoint to be
claimed even though GCS endpoint detection correctly rejects that binding. Split
private MinIO explicit-S3 coverage from global and regional GCS rejection checks.
The GCP validation regression selected provider=S3 but expected an error from the
GCS resolver. Match the error emitted by the selected S3 provider instead.

### Release note

None

### Check List (For Author)

- Test: 78 focused MinIO, S3, and GCS unit tests passed, with Checkstyle and git diff --check passing. Standard FE UT runner blocked by installed Thrift 0.16.0 versus required 0.24.0; live regression suite not run.
- Behavior changed: No
- Does this need documentation: No
@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 28279 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 0d4255d168e1eb96b43151b741dcbe87d23275a3, data reload: false

------ Round 1 ----------------------------------
============================================
q1	17582	5243	5049	5049
q2	2195	336	252	252
q3	10186	1400	808	808
q4	4677	462	334	334
q5	7429	803	525	525
q6	184	185	151	151
q7	742	802	604	604
q8	9256	1360	1018	1018
q9	5669	4227	4198	4198
q10	6840	1301	1032	1032
q11	443	242	225	225
q12	636	399	278	278
q13	18105	3512	2964	2964
q14	278	261	244	244
q15	q16	726	717	667	667
q17	1202	748	567	567
q18	7034	6147	6114	6114
q19	1105	974	603	603
q20	386	334	224	224
q21	5394	2170	2295	2170
q22	352	302	252	252
Total cold run time: 100421 ms
Total hot run time: 28279 ms

----- Round 2, with runtime_filter_mode=off -----
============================================
q1	5603	5582	5627	5582
q2	674	569	543	543
q3	5239	5685	4923	4923
q4	1990	2130	1542	1542
q5	5316	5199	5645	5199
q6	279	202	159	159
q7	2332	2128	1887	1887
q8	3067	2635	2739	2635
q9	8137	7971	7988	7971
q10	3751	3761	3342	3342
q11	609	443	427	427
q12	681	717	513	513
q13	3546	3765	3296	3296
q14	291	303	298	298
q15	q16	716	692	637	637
q17	8355	7082	6894	6894
q18	12993	12147	12979	12147
q19	900	783	800	783
q20	2136	2136	1910	1910
q21	5635	4585	4697	4585
q22	511	454	407	407
Total cold run time: 72761 ms
Total hot run time: 65680 ms

@sollhui

sollhui commented Oct 25, 2026

Copy link
Copy Markdown
Contributor Author

run buildall

@sollhui

sollhui commented Oct 25, 2026

Copy link
Copy Markdown
Contributor Author

/review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Static review of 7ebb8b33a19423b609f40a0f9e3d9955e62659b2: request changes for three independently revalidated existing P1 findings. No additional distinct finding survived verification and duplicate checks; no duplicate inline comments are posted.

Existing blockers retained:

  • 4119930342: get_stage reconstructs internal-stage object information without its native credential envelope (meta_service_resource.cpp:4250-4272), losing COMPUTE_ENGINE/impersonation selection.
  • 4119930347: CopyIntoInfo.validateStagePB:418-439 independently omits native identity from the broker map, so fixing the stage response alone does not fix backend COPY reads.
  • 4208967423: root key updates commit before derived-instance updates; equal-key retries return before cascade discovery, leaving a failed descendant on its old identity.

Known P2 concerns remain covered by existing comments: empty gs.session_token clearing (4246097912), resource HMAC/native transitions (4217149882), omitted-auth public configurations changing to ADC (4244585756), mixed AWS/GCS Iceberg S3 locations and explicit HadoopFileIO aliases (4236791176/4248820614), HMAC GCS with Glue role authentication (4358312794), ADC construction/refresh exceptions (4248820599/4356259111), and unrelated ALTER of a static-key vault with dormant DEFAULT (4248820622). These are verified existing issues, not unresolved new candidates. The pinned SDK still has throwing credential parsing/signing paths: ADC loader, OAuth refresh.

Other prior P1 dispositions: 4119930352, 4208967416, 4217149855, 4226469645, 4226856804, 4232295828, 4236791171, 4246097904, 4334086186, 4334086192 and 4357972632 are repaired for their reported triggers. Native FE presigned uploads (4215142986) and native Hudi/Paimon scanners (4226469640) remain explicitly deferred in the current PR description; no supported HMAC regression was substantiated there. The older-consumer concerns 4217722279/4217722285/4217722293 remain deployment restrictions: native authentication must be enabled only after MetaService and all relevant FE/BE/recycler consumers are upgraded. This review does not assert that native authentication works with old consumers.

Critical checkpoint conclusions:

  1. Goal and proof: ADC, Compute Engine and impersonation are wired through current FE/BE/Cloud object clients and error-log signing. The stage/COPY blockers mean the supported end-to-end identity flow is incomplete. Added tests were inspected; none were executed.
  2. Scope and reuse: the broad change is coherent with a cross-module feature; pure GCS rules, API identity descriptions, host wire codecs and shared C++ auth retain separate ownership. No additional unrelated change was identified.
  3. Concurrency: resource ALTER serializes snapshots/validation/publication; remote ping stays outside its read/write metadata lock. Policy pushes unlock in finally. Token refresh uses a dedicated mutex and client publication uses the holder lock; no concrete new lock inversion was found.
  4. Lifecycle and initialization: clients/providers/callbacks have bounded shared ownership, FileIO retains serializable configuration, and no new ownership cycle or cross-translation-unit static initialization dependency was found.
  5. Configuration: new native properties are per-resource/catalog/vault settings; explicit ALTER presence and impersonation clears are carried separately. No new production process setting requires dynamic-config propagation. Regression configuration is opt-in.
  6. Compatibility: current map, Thrift and protobuf consumers carry native identities; plugin major versions/baselines change. Enabling native authentication with older consumers remains unsupported under the documented upgrade procedure. Final linked ABI was not tested.
  7. Wire definitions: complete touched definitions were compared with live branch-4.2, branch-4.1, branch-4.0 and branch-3.1. Branch-4.2 matches the new definitions; older branches end before the new IDs. No ID reuse, changed enum meaning or new required field was found.
  8. Parallel paths: reviewed CREATE/ALTER/replay, map/PB/Thrift, new/reset clients, Cloud/shared-nothing, all used object operations, Iceberg metadata versus object authentication, sync/async FileIO and JNI packaging. Existing exceptions and documented exclusions are identified above.
  9. Conditional checks: provider precedence, incompatible credentials, endpoint rules and partial-field checks have concrete triggers. Alias-clear and mode-transition defects remain in existing threads.
  10. Test coverage: substantial unit and opt-in IAM regression coverage is added, including service-account OAuth exchange, scopes, token failures, credential transitions, rename rejection, URI handling and isolated factory reconstruction. Live cloud, mixed-version and final artifact behavior remain unverified.
  11. Expected results: no .out files change. Inspected new assertions and repaired provider/error expectations; no additional deterministic expected-result defect was found. Some Groovy tests retain assertions/dynamic names/cleanup patterns contrary to preferred test conventions.
  12. Observability and errors: token/IAM failures and object SDK outcomes provide diagnostics; signing failure retains the local log path. Existing uncaught ADC construction/refresh exceptions remain material error-handling defects. No additional critical missing metric/log was proved.
  13. Persistence and failover: resource properties remain journaled, native envelopes are persisted, and vault rename/auth validation uses candidate state before the KV commit. Cross-instance cascade retry is the retained persistence blocker. No rowset version or delete-bitmap contract changes.
  14. Writes and atomicity: failed validation/ping does not publish a new resource snapshot; failed vault credential changes do not persist the candidate rename. Native/static key replacement clears the old envelope. Existing worker-exception and cascade issues constrain failure recovery.
  15. FE-to-BE propagation: normal backend maps, policy Thrift and Cloud PB paths preserve provider/source/account and optional presence. Manual stage/COPY reconstruction is the retained exception.
  16. Performance: credentials and clients are cached; refresh is serialized separately from metadata locks. No additional substantiated asymptotic regression was found; no performance measurements were made.
  17. Final recheck: all 149 changed paths and the five initial risk mechanisms were covered by the main review, complete FE/native reviews and a separate credential-boundary review. Every candidate was deduplicated or dismissed with evidence; no new unresolved code question remains.

User focus: no additional focus was supplied. Validation limits: static source review only; no builds, tests, live GCS/IAM experiments, packaging execution, runtime classloader checks or final ELF/glibc 2.17 audit. Convergence describes review completeness, not approval or runtime correctness. Converged after two review rounds; the three existing P1 blockers remain outstanding.

Review converged after 2 round(s).

Existing P0/P1 findings confirmed for this head: #68540 (comment), #68540 (comment), #68540 (comment)

@hello-stephen

Copy link
Copy Markdown
Contributor
TPC-H: Total hot run time: 35667 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 7ebb8b33a19423b609f40a0f9e3d9955e62659b2, data reload: false

------ Round 1 ----------------------------------
region	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:27:24	NULL	utf-8	NULL	NULL	
orders	Doris	NULL	NULL	0	0	0	NULL	0	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	17640	5221	5182	5182
q2	2151	274	221	221
q3	10207	1445	864	864
q4	4684	507	386	386
q5	q6	643	457	282	282
q7	q8	21508	1832	1605	1605
q9	9462	8878	8824	8824
q10	8359	3686	3240	3240
q11	440	255	248	248
q12	711	527	319	319
q13	17841	4467	3696	3696
q14	423	423	411	411
q15	q16	481	487	413	413
q17	1208	788	651	651
q18	6876	6083	5978	5978
q19	1146	980	641	641
q20	423	366	246	246
q21	5131	2252	2201	2201
q22	379	335	259	259
Total cold run time: 109713 ms
Total hot run time: 35667 ms

----- Round 2, with runtime_filter_mode=off -----
region	Doris	NULL	NULL	5	240	1201	NULL	147	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:27:24	NULL	utf-8	NULL	NULL	
orders	Doris	NULL	NULL	150000000	42	6422171781	NULL	22778155	NULL	NULL	2023-12-26 18:27:23	2023-12-26 18:42:55	NULL	utf-8	NULL	NULL	
============================================
q1	5638	5662	5773	5662
q2	892	735	689	689
q3	2937	3182	2677	2677
q4	2047	2170	1563	1563
q5	q6	2450	182	161	161
q7	q8	35489	3342	2998	2998
q9	17801	16809	16741	16741
q10	9223	4909	4452	4452
q11	627	436	411	411
q12	1012	734	519	519
q13	9825	4428	3643	3643
q14	389	386	385	385
q15	q16	492	487	446	446
q17	12902	11915	11602	11602
q18	7853	7439	7332	7332
q19	915	848	848	848
q20	2233	2197	1972	1972
q21	14900	14130	13933	13933
q22	507	468	423	423
Total cold run time: 128132 ms
Total hot run time: 76457 ms

@hello-stephen

Copy link
Copy Markdown
Contributor
ClickBench: Total hot run time: 24.94 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 7ebb8b33a19423b609f40a0f9e3d9955e62659b2, data reload: false

query1	0.00	0.00	0.00
query2	0.14	0.08	0.08
query3	0.39	0.13	0.14
query4	1.60	0.14	0.15
query5	0.28	0.26	0.25
query6	1.16	0.65	0.64
query7	0.05	0.01	0.01
query8	0.10	0.08	0.07
query9	0.45	0.34	0.35
query10	0.57	0.58	0.56
query11	0.32	0.21	0.19
query12	0.32	0.18	0.17
query13	0.51	0.50	0.51
query14	0.95	0.94	0.92
query15	0.66	0.57	0.57
query16	0.34	0.36	0.35
query17	1.02	0.98	1.02
query18	0.29	0.28	0.27
query19	1.94	1.87	1.80
query20	0.02	0.02	0.01
query21	15.48	0.33	0.30
query22	4.94	0.13	0.12
query23	15.86	0.47	0.28
query24	2.05	0.58	0.41
query25	0.17	0.10	0.11
query26	0.77	0.27	0.20
query27	0.09	0.10	0.10
query28	3.44	0.78	0.39
query29	12.60	4.39	3.38
query30	0.36	0.16	0.14
query31	2.78	0.58	0.32
query32	3.22	0.59	0.48
query33	2.96	2.94	3.05
query34	15.89	4.03	3.47
query35	3.38	3.35	3.38
query36	0.58	0.48	0.50
query37	0.11	0.09	0.08
query38	0.07	0.06	0.07
query39	0.05	0.06	0.06
query40	0.20	0.17	0.15
query41	0.10	0.05	0.05
query42	0.06	0.05	0.06
query43	0.07	0.06	0.05
Total cold run time: 96.34 s
Total hot run time: 24.94 s

@hello-stephen

Copy link
Copy Markdown
Contributor

FE UT Coverage Report

Increment line coverage 85.85% (176/205) 🎉
Increment coverage report
Complete coverage report

@hello-stephen

Copy link
Copy Markdown
Contributor

Cloud UT Coverage Report

Increment line coverage 84.18% (266/316) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 76.94% (2099/2728)
Line Coverage 66.06% (38654/58515)
Region Coverage 53.65% (36238/67549)
Branch Coverage 57.28% (11809/20618)

@hello-stephen

Copy link
Copy Markdown
Contributor

BE UT Coverage Report

Increment line coverage 100.00% (9/9) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 66.67% (32030/48042)
Line Coverage 51.45% (337908/656713)
Region Coverage 46.86% (273656/583961)
Branch Coverage 48.54% (128896/265521)

@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100.00% (9/9) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.37% (36015/46549)
Line Coverage 62.64% (406985/649680)
Region Coverage 59.17% (344249/581835)
Branch Coverage 60.04% (159031/264864)

1 similar comment
@hello-stephen

Copy link
Copy Markdown
Contributor

BE Regression && UT Coverage Report

Increment line coverage 100.00% (9/9) 🎉

Increment coverage report
Complete coverage report

Category Coverage
Function Coverage 77.37% (36015/46549)
Line Coverage 62.64% (406985/649680)
Region Coverage 59.17% (344249/581835)
Branch Coverage 60.04% (159031/264864)

@hello-stephen

Copy link
Copy Markdown
Contributor

FE Regression Coverage Report

Increment line coverage 33.02% (70/212) 🎉
Increment coverage report
Complete coverage report

1 similar comment
@hello-stephen

Copy link
Copy Markdown
Contributor

FE Regression Coverage Report

Increment line coverage 33.02% (70/212) 🎉
Increment coverage report
Complete coverage report

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants