private void loadConsistent() { try (DmlTransaction trans = backendService.openReadTransaction()) { Optional<KvValue<?>> valueOpt = trans.readMetaInfo(getConsistencyKey()); if (!valueOpt.isPresent()) { consistent = false; return; } KvValue<?> value = valueOpt.get(); if (!value.getType().equals(BooleanType.INSTANCE)) { throw new IllegalStateException("Unexpected consistency value " + "found. Expected a boolean but " + valueOpt + " was " + "found"); } consistent = ((KvBoolean) value).getPrimitiveValue(); } }
private void flushConsistentState() throws RollbackException, RetrierGiveUpException { retrier.retry(() -> { try (WriteDmlTransaction trans = backendService.openWriteTransaction()) { trans.writeMetaInfo(getConsistencyKey(), KvBoolean.from(consistent)); trans.commit(); } catch (UserException ex) { throw new RetrierAbortException(ex); } return null; }); }
@Override public Void visit(KVDocument value, Arg arg) { preKVValue(value, arg); preDoc(value, arg); for (DocEntry<?> entry : value) { entry.getValue().accept(this, arg); } postDoc(value, arg); postKVValue(value, arg); return null; }
@Override public Void visit(KVArray value, Arg arg) { preKVValue(value, arg); preArray(value, arg); for (KVValue<?> element : value) { element.accept(this, arg); } postArray(value, arg); postKVValue(value, arg); return null; }
@Override public Void visit(KvDocument value, A arg) { preKvValue(value, arg); preDoc(value, arg); for (DocEntry<?> entry : value) { entry.getValue().accept(this, arg); } postDoc(value, arg); postKvValue(value, arg); return null; }
@Override public Void visit(KvArray value, A arg) { preKvValue(value, arg); preArray(value, arg); for (KvValue<?> element : value) { element.accept(this, arg); } postArray(value, arg); postKvValue(value, arg); return null; }
@Override public Void visit(KvMaxKey value, A arg) { preKvValue(value, arg); preMaxKey(value, arg); postMaxKey(value, arg); postKvValue(value, arg); return null; }
@Override public Void visit(KvUndefined value, A arg) { preKvValue(value, arg); preUndefined(value, arg); postUndefined(value, arg); postKvValue(value, arg); return null; }
@Override public Void visit(KvMongoRegex value, A arg) { preKvValue(value, arg); preMongoRegex(value, arg); postMongoRegex(value, arg); postKvValue(value, arg); return null; }
@Override public <Result, Arg> Result accept(KVValueVisitor<Result, Arg> visitor, Arg arg) { return visitor.visit(this, arg); } }
@Override public <R, A> R accept(KvValueVisitor<R, A> visitor, A arg) { return visitor.visit(this, arg); } }
private int getExponent() { if (twoHighestCombinationBitsAreSet()) { return (int) ((high & 0x1fffe00000000000L) >>> 47) - EXPONENT_OFFSET; } else { return (int) ((high & 0x7fff800000000000L) >>> 49) - EXPONENT_OFFSET; } }
@Override public R visit(KvDeprecated value, A arg) { return defaultCase(value, arg); } }
public static KvInteger of(int i) { if (i == 0) { return DefaultKvInteger.ZERO; } if (i == 1) { return DefaultKvInteger.ONE; } if (i == -1) { return DefaultKvInteger.MINUS_ONE; } return new DefaultKvInteger(i); }
public static KvLong of(long l) { if (l == 0) { return DefaultKvLong.ZERO; } if (l == 1) { return DefaultKvLong.ONE; } if (l == -1) { return DefaultKvLong.MINUS_ONE; } return new DefaultKvLong(l); }
@Override public <R, A> R accept(KvValueVisitor<R, A> visitor, A arg) { return visitor.visit(this, arg); } }