Track when version not found in version vector.#7653
Conversation
| } | ||
|
|
||
| if (ssVersionVectorCache.getMaxVersion() != invalidVersion && readVersion > ssVersionVectorCache.getMaxVersion()) { | ||
| if (readVersion > ssVersionVectorCache.getMaxVersion()) { |
There was a problem hiding this comment.
this check was redundant per line 241 above.
There was a problem hiding this comment.
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.
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.
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.
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.
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.
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
|
| .detail("Tag", tag) | ||
| .detail("CommitVersion", commitVersion) | ||
| .detail("ReadVersion", readVersion) | ||
| .detail("VersionVector", ssVersionVectorCache.toString()); |
There was a problem hiding this comment.
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.
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)