-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Track when version not found in version vector. #7653
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
Conversation
| } | ||
|
|
||
| if (ssVersionVectorCache.getMaxVersion() != invalidVersion && readVersion > ssVersionVectorCache.getMaxVersion()) { | ||
| if (readVersion > ssVersionVectorCache.getMaxVersion()) { |
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.
this check was redundant per line 241 above.
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.
This was my bad, actually. I should have removed this redundant check as part of commit c74710f.
Doxense CI Report for Windows 10
|
Result of foundationdb-pr on Linux CentOS 7
|
Result of foundationdb-pr-cluster-tests on Linux CentOS 7
|
Doxense CI Report for Windows 10
|
Result of foundationdb-pr-macos on macOS BigSur 11.5.2
|
Result of foundationdb-pr on Linux CentOS 7
|
| if (!updatedVersionMap) { | ||
| TraceEvent(SevDebug, "CommitVersionNotFoundForSS") | ||
| .detail("InSSIDMap", ssidTagMapping.find(uid) != ssidTagMapping.end() ? 1 : 0) | ||
| .detail("InSSIDMap", iter != ssidTagMapping.end() ? 1 : 0) |
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.
I am concerned about the overhead that would be imposed by this event - Is this trace event really needed? What additional actionable information does this provide in production?
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.
I think we only log SevInfo and higher in production. There is a knob controlling the logging level.
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.
It is SevDebug, so off by default. I think it is useful to have if we see a problem in ckperf that is hard to reproduce elsewhere. In that case we may wish to change the trace severity knob to Debug level (this seems to be a common code pattern in fdb), and can find which of the 3 conditionals is failing.
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.
Ok. Would you like to log the contents of the version vector too (this may help with identifying special scenarios like post-recovery at which point the version vector is going to be empty)?
Result of foundationdb-pr-cluster-tests on Linux CentOS 7
|
| if (!updatedVersionMap) { | ||
| TraceEvent(SevDebug, "CommitVersionNotFoundForSS") | ||
| .detail("InSSIDMap", ssidTagMapping.find(uid) != ssidTagMapping.end() ? 1 : 0) | ||
| .detail("InSSIDMap", iter != ssidTagMapping.end() ? 1 : 0) |
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.
I think we only log SevInfo and higher in production. There is a knob controlling the logging level.
Doxense CI Report for Windows 10
|
Result of foundationdb-pr-macos on macOS BigSur 11.5.2
|
Result of foundationdb-pr on Linux CentOS 7
|
fdbclient/NativeAPI.actor.cpp
Outdated
| .detail("Tag", tag) | ||
| .detail("CommitVersion", commitVersion) | ||
| .detail("ReadVersion", readVersion) | ||
| .detail("VersionVector", ssVersionVectorCache.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.
This might be large when VV has many entries and the value may be truncated. So probably need to set the max field and event length.
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.
I will use settings I see many places elsewhere. .setMaxEventLength(11000) and .setMaxFieldLength(10000)
Result of foundationdb-pr-cluster-tests on Linux CentOS 7
|
|
There is a bug in vv upgrade/downgrade, putting into draft until that is resolved |
The problem was the new event occurred too many times and |
Doxense CI Report for Windows 10
|
Result of foundationdb-pr-macos on macOS BigSur 11.5.2
|
Result of foundationdb-pr on Linux CentOS 7
|
Result of foundationdb-pr-cluster-tests on Linux CentOS 7
|
Add new counter to track when the commit version for an SS is not taken from the version vector. When version vector is enabled there may be a performance hit in that situation. Performance diagnosis is harder without it. The counter should normally be 0.
Joshua:
20220728-195222-henrylambright-45953926d0fe9fe5Code-Reviewer Section
The general guidelines can be found here.
Please check each of the following things and check all boxes before accepting a PR.
For Release-Branches
If this PR is made against a release-branch, please also check the following:
release-branchormainif this is the youngest branch)