Update database connection logic to avoid startup crashes #18538
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.
Relates to #18462
We were able to replicate the above crashes on @zgoldman-r7's environment
Updates the msfconsole database connection logic to avoid startup crashes
Context
After adding logging via #18535 we discovered that a thread that was killing the main pry stream.
Main thread:
Culprit thread:
So potentially there is a bug in postgres to resolve; I believe here:
https://github.com/ged/ruby-pg/blob/2218ebf0b5a6057e74cd4d628e0b20011b8c0aff/ext/pg_connection.c#L106-L115
For now, I believe
connection_established?
should not be called directly - but.active
should be used.connection_established?
causes a real connection to the DB which can be avoided, and thus the crash is avoided. I believe the crash is still possible in other scenarios.Verification
msfdb init
, Verify msfconsole boots up correctly, and that the encrypted warning no longer appears: