Skip to content

fix(hubble): handle schema defaults and timeouts - #859

Merged
imbajin merged 11 commits into
apache:masterfrom
hugegraph:fix/issue-103-hubble
Oct 29, 2026
Merged

imbajin merged 11 commits into
apache:masterfrom
hugegraph:fix/issue-103-hubble

Conversation

@imbajin

@imbajin imbajin commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Before → After

Before: Missing label styles or label-index flags can cause null errors, and wrapped Gremlin transport timeouts can escape the intended error mapping.

After: Apply defaults while preserving explicit styles and false; map wrapped transport timeouts to a timeout error with a concise localized message and asynchronous-job guidance. Add focused controller/service regressions and an HTTP API guide.

Validation boundary

The source author reports 59 focused tests passing and negative controls reproducing the original errors. Tests skipped the remote-resources plugin because of metadata-transfer failures; this is not a live Hubble/HStore or large-dataset benchmark. Synchronous evaluation limits and long-running label scans remain separate; no 41M-vertex performance improvement is claimed. Static inspection confirms that ResponseAdvisor maps error-envelope statuses to HTTP statuses; the latest revision adds MockMvc coverage for this contract. Independent runtime verification remains incomplete. Paired bilingual website documentation is being prepared.

Related issue: hugegraph#103

Source PR: 🔗 hugegraph/hugegraph-toolchain #104

Visual overview

Hubble schema defaults and timeout response mapping

Schema creation preserves explicit settings while supplying null defaults. Wrapped transport timeouts become a localized response with HTTP 504 through ResponseAdvisor. Static source overview; not independent validation of large datasets, authentication, or HStore integration.

orion added 2 commits October 28, 2026 16:56
Default omitted or null label styles and label-index flags.
Map wrapped Gremlin transport timeouts to a safe HTTP 504 response.
Add controller and service regressions and document HTTP requests.
Exercise the exception and response advisors through MockMvc.
Verify transport status 504 and the localized response envelope.
Ensure upstream exception details remain absent from the response.
Export the actual producer JDK patch and build through the fixture output.
Install that same version before Hubble validates the shared SDK.
Reject missing runtime identity while retaining provenance and payload checks.
@codecov

codecov Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 70.83333% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 56.07%. Comparing base (b34007e) to head (8519d9e).
⚠️ Report is 14 commits behind head on master.

Files with missing lines Patch % Lines
...g/apache/hugegraph/service/query/QueryService.java 25.00% 5 Missing and 1 partial ⚠️
...pache/hugegraph/entity/schema/EdgeLabelEntity.java 50.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             master     #859      +/-   ##
============================================
+ Coverage     55.40%   56.07%   +0.67%     
- Complexity     5989     6110     +121     
============================================
  Files           619      619              
  Lines         32582    32628      +46     
  Branches       4217     4235      +18     
============================================
+ Hits          18052    18297     +245     
+ Misses        12952    12734     -218     
- Partials       1578     1597      +19     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

MrJs133
MrJs133 previously approved these changes Oct 29, 2026

@imbajin imbajin left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Blocking: yes. Summary: Raw transport timeouts bypass the new timeout mapping. Evidence: HugeClientFakeServerTest asserts a raw SocketTimeoutException; GremlinManager calls the same REST client through GremlinAPI.post.

throw this.serverQueryException(e);
} catch (ClientException e) {
for (Throwable cause = e; cause != null; cause = cause.getCause()) {
if (cause instanceof java.net.SocketTimeoutException ||

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

⚠️ The REST client can throw a raw SocketTimeoutException: HugeClientFakeServerTest.testSlowGraphRequestTimesOut asserts that behavior, and Gremlin requests use the same client through GremlinAPI.post. Such an exception bypasses this ClientException branch and reaches the generic exception handler, so a real transport timeout still returns the generic failure instead of HTTP 504. Please classify timeout causes in the generic exception path as well and add a slow HTTP Gremlin request test.

@imbajin
imbajin merged commit 669c881 into apache:master Oct 29, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants