googleapis / googleapis/java-bigtable-hbase

CheckAndMutate uses timestamps inconsistently

Aperta
#2,898 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub
api: bigtable external priority: p2 type: bug
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.