mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-26 09:32:01 +00:00
update comment for mismatching checksums
This commit is contained in:
parent
a60737e67e
commit
9ec0951de5
@ -279,14 +279,17 @@ bool MergeFromLogEntryTask::finalize(ReplicatedMergeMutateTaskBase::PartLogWrite
|
||||
ProfileEvents::increment(ProfileEvents::DataAfterMergeDiffersFromReplica);
|
||||
|
||||
LOG_ERROR(log,
|
||||
"{}. Data after merge is not byte-identical to data on another replicas. There could be several"
|
||||
" reasons: 1. Using newer version of compression library after server update. 2. Using another"
|
||||
" compression method. 3. Non-deterministic compression algorithm (highly unlikely). 4."
|
||||
" Non-deterministic merge algorithm due to logical error in code. 5. Data corruption in memory due"
|
||||
" to bug in code. 6. Data corruption in memory due to hardware issue. 7. Manual modification of"
|
||||
" source data after server startup. 8. Manual modification of checksums stored in ZooKeeper. 9."
|
||||
" Part format related settings like 'enable_mixed_granularity_parts' are different on different"
|
||||
" replicas. We will download merged part from replica to force byte-identical result.",
|
||||
"{}. Data after merge is not byte-identical to data on another replicas. There could be several reasons:"
|
||||
" 1. Using newer version of compression library after server update."
|
||||
" 2. Using another compression method."
|
||||
" 3. Non-deterministic compression algorithm (highly unlikely)."
|
||||
" 4. Non-deterministic merge algorithm due to logical error in code."
|
||||
" 5. Data corruption in memory due to bug in code."
|
||||
" 6. Data corruption in memory due to hardware issue."
|
||||
" 7. Manual modification of source data after server startup."
|
||||
" 8. Manual modification of checksums stored in ZooKeeper."
|
||||
" 9. Part format related settings like 'enable_mixed_granularity_parts' are different on different replicas."
|
||||
" We will download merged part from replica to force byte-identical result.",
|
||||
getCurrentExceptionMessage(false));
|
||||
|
||||
write_part_log(ExecutionStatus::fromCurrentException());
|
||||
|
@ -185,7 +185,8 @@ bool MutateFromLogEntryTask::finalize(ReplicatedMergeMutateTaskBase::PartLogWrit
|
||||
|
||||
ProfileEvents::increment(ProfileEvents::DataAfterMutationDiffersFromReplica);
|
||||
|
||||
LOG_ERROR(log, "{}. Data after mutation is not byte-identical to data on another replicas. We will download merged part from replica to force byte-identical result.", getCurrentExceptionMessage(false));
|
||||
LOG_ERROR(log, "{}. Data after mutation is not byte-identical to data on another replicas. "
|
||||
"We will download merged part from replica to force byte-identical result.", getCurrentExceptionMessage(false));
|
||||
|
||||
write_part_log(ExecutionStatus::fromCurrentException());
|
||||
|
||||
|
@ -1312,10 +1312,14 @@ void StorageReplicatedMergeTree::checkPartChecksumsAndAddCommitOps(const zkutil:
|
||||
|
||||
if (replica_part_header.getColumnsHash() != local_part_header.getColumnsHash())
|
||||
{
|
||||
/// Either it's a bug or ZooKeeper contains broken data.
|
||||
/// TODO Fix KILL MUTATION and replace CHECKSUM_DOESNT_MATCH with LOGICAL_ERROR
|
||||
/// (some replicas may skip killed mutation even if it was executed on other replicas)
|
||||
throw Exception(ErrorCodes::CHECKSUM_DOESNT_MATCH, "Part {} from {} has different columns hash", part_name, replica);
|
||||
/// Currently there are two (known) cases when it may happen:
|
||||
/// - KILL MUTATION query had removed mutation before all replicas have executed assigned MUTATE_PART entries.
|
||||
/// Some replicas may skip this mutation and update part version without actually applying any changes.
|
||||
/// It leads to mismatching checksum if changes were applied on other replicas.
|
||||
/// - ALTER_METADATA and MERGE_PARTS were reordered on some replicas.
|
||||
/// It may lead to different number of columns in merged parts on these replicas.
|
||||
throw Exception(ErrorCodes::CHECKSUM_DOESNT_MATCH, "Part {} from {} has different columns hash "
|
||||
"(it may rarely happen on race condition with KILL MUTATION or ALTER COLUMN).", part_name, replica);
|
||||
}
|
||||
|
||||
replica_part_header.getChecksums().checkEqual(local_part_header.getChecksums(), true);
|
||||
|
Loading…
Reference in New Issue
Block a user