Skip to content
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

- #PXC-501: galera_split_brain TC failing with following assertion intermittently #51

Open
wants to merge 1 commit into
base: 3.x
Choose a base branch
from

Conversation

sysprg
Copy link

@sysprg sysprg commented May 16, 2016

galera_split_brain TC failing with assertion intermittently in the function KeyPart::matches (), which compares the two keys, because one of those keys is empty (the field "version" in this key contains the value "EMPTY").

The key to a locally created transaction may be empty until it is completed, but the current code does not allow this and trying looking for a key in the certification index. However, technically this key would fit to all the elements of the certification index. Therefore, the key comparison function in the KeyPart class has assertion to detect such incorrect comparisons, which leads to the PXC-501 error. However, the fact of the empty key cannot be inserted in the certification index; therefore, we can just skip it immediately.

Related PXC patch here: percona/percona-xtradb-cluster#121

…nction KeyPart::matches (), which compares the two keys, because one of those keys is empty (the field "version" in this key contains the value "EMPTY").

The key to a locally created transaction may be empty until it is completed, but the current code does not allow this and trying looking for a key in the certification index. However, technically this key would fit to all the elements of the certification index. Therefore, the key comparison function in the KeyPart class has assertion to detect such incorrect comparisons, which leads to the PXC-501 error. However, the fact of the empty key cannot be inserted in the certification index; therefore, we can just skip it immediately.
@@ -118,6 +118,17 @@ galera::Certification::purge_for_trx_v3(TrxHandle* trx)
for (long i = 0; i < keys.count(); ++i)
{
const KeySet::KeyPart& kp(keys.next());

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am wondering what causes local key to empty. My investigation few days back suggested that only if you append_key trx is forwarded for certification.

Purge action explain the intermediate failure.

Can you write a small tcs where-in you see local trx generating an empty key part.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants