googleapis / googleapis/java-bigtable-hbase
CheckAndMutate uses timestamps inconsistently
- Lingua principale
- Java
- Stelle
- 184
- Fork
- 184
- Merge medio
- 10h
- PR unite (30g)
- 6
Descrizione
#### Steps to reproduce
```java
@Test
void testCantReadMyOwnWrites() throws IOException {
Table table = // TODO
byte[] row = Bytes.toBytes(System.currentTimeMillis());
byte[] q = Bytes.toBytes("q");
byte[] f = Bytes.toBytes("f");
byte[] A = Bytes.toBytes("aaa");
byte[] B = Bytes.toBytes("bbb");
boolean success = table
.checkAndMutate(row, f).qualifier(q).ifNotExists()
.thenPut(new Put(row).addColumn(f, q, A));
assertThat(success).isTrue();
table.put(new Put(row).addColumn(f, q, B));
byte[] value = table.get(new Get(row)).getValue(f, q);
assertThat(value).isEqualTo(B); // 👈 this fails
}
```
This (generally) works when setting a breakpoint on `table.put(new Put(row).addColumn(f, q, B));` - i.e. slowing down the operation with the breakpoint seems to "fix" it.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia riproducendo il test fornito relativo a table.checkAndMutate, table.put e table.get, usando una configurazione concreta di Table al posto di TODO. Esamina come queste operazioni assegnano e confrontano i timestamp quando vengono eseguite senza un breakpoint. Il lavoro è completato quando la lettura restituisce costantemente B e il comportamento è coperto da un test di regressione affidabile.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- databases, distributed-systems
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100