[Bug]: Configurations.equals is asymmetric for different key sets
I maintainer di solito rispondono entro 2 giorni
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
What happened?
Configurations.equals() does not compare the number of configuration entries. It only checks whether every entry in the left-hand object exists with the same value in the right-hand object.
As a result, equality is asymmetric:
small.equals(large) = true
large.equals(small) = false
It can also report two objects as equal even though their hash codes differ, violating the Java equals/hashCode contract.
A related problem occurs when comparing byte-array configurations with different keys: otherVal is null, and calling otherVal.getClass() throws a NullPointerException.
Affects Versions
master
What table formats are you seeing the problem on?
Iceberg, Paimon, Mixed-Iceberg, Mixed-Hive
What engines are you seeing the problem on?
No response
How to reproduce
There is no AMS log output because the issue is a deterministic Java equality error. The relevant reproduction output is:
small.equals(large) = true
large.equals(small) = false
small.hashCode() = 97
large.hashCode() = 3
For byte-array values:
java.lang.NullPointerException
at org.apache.amoro.config.Configurations.equals(Configurations.java:670)
Relevant log output
Anything else
No response
Are you willing to submit a PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
- Lingua principale
- Java
- Stelle
- 1.2k
- Fork
- 398
- Merge medio
- 3g 7h
- PR unite (30g)
- 15
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/amoro
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 82/100
I maintainer di solito rispondono entro 2 giorni
-
[Doc]: Clarify that catalog-level table properties should be added via the "Table properties" interface, and the "table." prefix is only required when using the raw "Properties" interfaceForse già presa @Akeron-Zhu l’ha presa 8 giorni fa. Apertatype:improvement
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
I maintainer di solito rispondono entro 2 giorni
-
[CI] Core CI doesn't run for changes to amoro-format-lance (and amoro-web)Forse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di apache/amoro
Issue simili
-
hermes-queue
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
chrisalunlloyd2-sudo/mindpalace#373 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
bug priority: lowest
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
SkriptLang/Skript#8953 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
quality-assurance
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
Paul-Austin-Oswego-CSC480-HCI521/gift-app#228 ·
I maintainer di solito rispondono entro 1 giorno
-
[java] TestClassWithoutTestCases: document that abstract classes and interfaces are not checkedAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
I maintainer di solito rispondono entro 2 giorni