move metric initialisation upfront connection creation to avoid potential npe#11
Open
philnate wants to merge 1 commit intocouchbase:masterfrom
Open
move metric initialisation upfront connection creation to avoid potential npe#11philnate wants to merge 1 commit intocouchbase:masterfrom
philnate wants to merge 1 commit intocouchbase:masterfrom
Conversation
Author
|
@daschl any plans to merge this into the main branch? |
|
@philnate yeah I think we can merge something like this, but we should also see how we can address the NPE, right? |
Author
|
Sounds good. Well my understanding was that the ordering of the commands where wrong. So the proposed solution would be to make sure the metrics are initialized before the connection is tried to be establised. What else should be addressed regarding the NPE, that looked like the main reason to me? |
|
Is there no plans to fix this? |
favila
pushed a commit
to useshortcut/spymemcached
that referenced
this pull request
Jan 14, 2022
migrate log4j 1.2.x to log4j 2.13.3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
We have a setup where we regularly create a new Memcached client to verify memcached is still running. Now what happens if you totally cut down your network (no LAN & WLAN). You'll get a NPE within MemcachedConnection as the first connection try fails, and then the failure handling tries again trying to increment a metric, which at this time isn't init'd.
This alone wouldn't be too bad if during init a Selector was opened already, which then isn't closed any more. So on mac each time the Selector is opened 2 PIPEs and 1 KQUEUE are created, this leads eventually to a create AF_UNIX socket: Too many open files in system error making the whole system unresponsive.
I've fixed the NPE by moving the metric init to an earlier place, but maybe some try catch around the whole init method would be better to close the all potentially opened handles before bubbling the exception.