Skip to content

Commit 3ae4cf4

Browse files
committed
fix
1 parent 337ce56 commit 3ae4cf4

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

kernel/kernel-api/src/main/java/io/delta/kernel/internal/checksum/CRCInfo.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,16 @@ public CRCInfo(
129129
checkArgument(numFiles >= 0);
130130
// Live Domain Metadata actions at this version, excluding tombstones.
131131
this.domainMetadata = requireNonNull(domainMetadata);
132-
domainMetadata.ifPresent(dms -> dms.forEach(dm -> checkArgument(!dm.isRemoved())));
132+
domainMetadata.ifPresent(
133+
dms ->
134+
dms.forEach(
135+
dm ->
136+
checkArgument(
137+
!dm.isRemoved(),
138+
String.format(
139+
"Domain metadata in CRC should exclude tombstones, "
140+
+ "found removed domain metadata: %s.",
141+
dm.getDomain()))));
133142
this.version = version;
134143
this.metadata = requireNonNull(metadata);
135144
this.protocol = requireNonNull(protocol);

kernel/kernel-api/src/test/scala/io/delta/kernel/internal/checksum/ChecksumWriterSuite.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,14 @@ class ChecksumWriterSuite extends AnyFunSuite with MockEngineUtils {
9999
new DomainMetadata("domain1", "", false /* removed */ ),
100100
new DomainMetadata("domain2", "", false /* removed */ )).toSet.asJava))
101101
// Per protocol, domain metadata list should exclude tombstone.
102-
intercept[IllegalArgumentException] {
102+
val exception = intercept[IllegalArgumentException] {
103103
testChecksumWrite(
104104
Optional.empty(),
105105
Optional.of(Seq(
106106
new DomainMetadata("domain1", "", true /* removed */ ),
107107
new DomainMetadata("domain2", "", false /* removed */ )).toSet.asJava))
108108
}
109+
assert(exception.getMessage.contains("Domain metadata in CRC should exclude tombstones"))
109110
}
110111

111112
private def verifyChecksumFile(jsonHandler: MockCheckSumFileJsonWriter, version: Long): Unit = {
@@ -121,7 +122,7 @@ class ChecksumWriterSuite extends AnyFunSuite with MockEngineUtils {
121122
expectedMetadata: Metadata,
122123
expectedProtocol: Protocol,
123124
expectedTxnId: Optional[String],
124-
domainMetadata: Optional[util.Set[DomainMetadata]]): Unit = {
125+
expectedDomainMetadata: Optional[util.Set[DomainMetadata]]): Unit = {
125126
assert(!actualCheckSumRow.isNullAt(TABLE_SIZE_BYTES_IDX) && actualCheckSumRow.getLong(
126127
TABLE_SIZE_BYTES_IDX) == expectedTableSizeBytes)
127128
assert(!actualCheckSumRow.isNullAt(
@@ -139,10 +140,10 @@ class ChecksumWriterSuite extends AnyFunSuite with MockEngineUtils {
139140
assert(actualCheckSumRow.isNullAt(TXN_ID_IDX))
140141
}
141142

142-
if (domainMetadata.isPresent) {
143+
if (expectedDomainMetadata.isPresent) {
143144
assert(VectorUtils.toJavaList[Row](actualCheckSumRow.getArray(DOMAIN_METADATA_IDX)).asScala
144145
.map(DomainMetadata.fromRow).toSet
145-
=== domainMetadata.get().asScala)
146+
=== expectedDomainMetadata.get().asScala)
146147
} else {
147148
assert(actualCheckSumRow.isNullAt(DOMAIN_METADATA_IDX))
148149
}

0 commit comments

Comments
 (0)