-
-
Notifications
You must be signed in to change notification settings - Fork 311
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix gltfLoader throw error when url load failed #2451
Fix gltfLoader throw error when url load failed #2451
Conversation
Caution Review failedThe pull request is closed. WalkthroughThe changes in this pull request enhance error handling within the Changes
Possibly related PRs
Suggested labels
Suggested reviewers
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (2)
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
⛔ Files ignored due to path filters (1)
pnpm-lock.yaml
is excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (2)
packages/loader/src/gltf/parser/GLTFParserContext.ts
(2 hunks)tests/src/core/resource/ResourceManager.test.ts
(2 hunks)
🔇 Additional comments (4)
tests/src/core/resource/ResourceManager.test.ts (2)
71-76
: LGTM: Improved code readability
Breaking the long URL string into multiple lines improves code readability while maintaining functionality.
94-102
: LGTM: Good test coverage for error handling
The new test case properly verifies that loading a non-existent asset throws an error, which aligns with the PR's objective to improve error handling in the glTF loader.
packages/loader/src/gltf/parser/GLTFParserContext.ts (2)
7-7
: LGTM: Added Logger import
Appropriate import for error logging functionality.
154-160
: Verify error handling in dependent components
The changes to error handling in _addTaskCompletePromise
may affect components that rely on task completion status.
Let's verify the error handling implementation in related components:
✅ Verification successful
Based on the results, I can now generate the final response:
Error handling implementation is consistent across components
The error handling in _addTaskCompletePromise
follows the established pattern across the codebase where:
- Task progress tracking is properly maintained through
_setTaskCompleteProgress
and_onTaskDetail
- Error handling is consistently propagated through promise chains
- Errors are properly logged and don't break the task completion flow
- The implementation aligns with error handling in related components like
GLTFTextureParser
,GLTFSchemaParser
, andGLTFBufferParser
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Search for task completion and error handling patterns in related files
# Check for task completion handling
echo "Checking task completion handling:"
rg -A 5 "_setTaskCompleteProgress|_onTaskDetail"
# Check for error handling patterns in resource loading
echo "Checking resource loading error handling:"
rg -A 5 "catch.*error|throw.*error" "packages/loader/src/"
Length of output: 9623
taskPromise | ||
.then(() => { | ||
this._setTaskCompleteProgress(++task.loaded, task.total); | ||
}) | ||
.catch((e) => { | ||
Logger.error(e.toString()); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Consider improving error handling
While adding error logging is good, consider these improvements:
- The error should be propagated to allow proper error handling by callers
- Include more error details for debugging purposes
Consider this implementation:
taskPromise
.then(() => {
this._setTaskCompleteProgress(++task.loaded, task.total);
})
.catch((e) => {
- Logger.error(e.toString());
+ Logger.error(`Failed to complete GLTF loading task: ${e.message}`, e);
+ throw e; // Propagate error for proper handling
});
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
taskPromise | |
.then(() => { | |
this._setTaskCompleteProgress(++task.loaded, task.total); | |
}) | |
.catch((e) => { | |
Logger.error(e.toString()); | |
}); | |
taskPromise | |
.then(() => { | |
this._setTaskCompleteProgress(++task.loaded, task.total); | |
}) | |
.catch((e) => { | |
Logger.error(`Failed to complete GLTF loading task: ${e.message}`, e); | |
throw e; // Propagate error for proper handling | |
}); |
50bf0d6
to
56da595
Compare
56da595
to
ae5e2b3
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## dev/1.4 #2451 +/- ##
===========================================
+ Coverage 67.71% 68.24% +0.52%
===========================================
Files 902 902
Lines 93861 93864 +3
Branches 7825 7854 +29
===========================================
+ Hits 63561 64053 +492
+ Misses 30051 29562 -489
Partials 249 249
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
Please check if the PR fulfills these requirements
What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
What is the current behavior? (You can also link to an open issue here)
What is the new behavior (if this is a feature change)?
Does this PR introduce a breaking change? (What changes might users need to make in their application due to this PR?)
Other information:
Summary by CodeRabbit
New Features
Bug Fixes
Tests