Add try/catch logic for xds stream initialization #1012
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
For the
_executorService
in thexdsClientImpl
, there is no try/catch for thexds stream initialization
so the runtime exception is swallowed and hard to find out the root cause for INDIS connect creation failed. Here we add thetry/catch
to thestartRpcStreamLocal
to get the error for debugging more convinient in the future.📔: I have also tried to
setUncaughtExceptionHandler
to the_executorService
in container, likebut it didn't work to get the
throwable
as there mentionedan UncaughtExceptionHandler can be specified in the constructor if uncaught exceptions need to be caught. If the NamedThreadFactory is used with an ExecutorService then the exceptions are caught and stashed away, so there is no point in using specifying an UncaughtExceptionHandler in those cases.
Then I found for
what finally return is
ScheduledThreadPoolExecutor
I also wrote the unit test to verify and confirm
setUncaughtExceptionHandler
would never be triggered forScheduledExecutorService
. I thought it's related to java bugTest Done
exclude group: 'io.envoyproxy.controlplane'
to the build.gradletest.log