Package com.foundationdb.server.store.FDBTransactionService

Examples of com.foundationdb.server.store.FDBTransactionService.TransactionState


    /** Clear contents of database based on <code>storeData</code>.
     * Usually, key comes from <code>storeData.rawKey</code> via {@link getKeyBytes}.
     */
    public void clear(FDBStore store, Session session, FDBStoreData storeData) {
        TransactionState txn = store.getTransaction(session, storeData);
        txn.clearKey(storeData.rawKey);
    }
View Full Code Here


            ksRight = KeySelector.firstGreaterOrEqual(packKey(storeData, Key.AFTER));
            break;
        default:
            throw new IllegalArgumentException(right.toString());
        }
        TransactionState txnState = store.getTransaction(session, storeData);
        storeData.iterator = new FDBStoreDataKeyValueIterator(storeData,
                snapshot ? txnState.getSnapshotRangeIterator(ksLeft, ksRight, limit, false)
                        : txnState.getRangeIterator(ksLeft, ksRight, limit, false));
    }
View Full Code Here

            else {
                ksLeft = KeySelector.firstGreaterThan(packKey(storeData));
                ksRight = KeySelector.firstGreaterOrEqual(ByteArrayUtil.strinc(prefixBytes));
            }
        }
        TransactionState txnState = store.getTransaction(session, storeData);
        storeData.iterator = new FDBStoreDataKeyValueIterator(storeData,
                snapshot ?
                        txnState.getSnapshotRangeIterator(ksLeft, ksRight, Transaction.ROW_LIMIT_UNLIMITED, reverse) :
                            txnState.getRangeIterator(ksLeft, ksRight, Transaction.ROW_LIMIT_UNLIMITED, reverse));
    }
View Full Code Here

    }

    @Override
    @SuppressWarnings("unchecked")
    public void store(FDBStore store, Session session, FDBStoreData storeData) {
        TransactionState txn = store.getTransaction(session, storeData);
        // Erase all previous column values, in case not present in Map.
        txn.clearRange(storeData.rawKey, ByteArrayUtil.join(storeData.rawKey, FIRST_NUMERIC));
        Map<String,Object> value = (Map<String,Object>)storeData.otherValue;
        for (Map.Entry<String,Object> entry : value.entrySet()) {
            txn.setBytes(ByteArrayUtil.join(storeData.rawKey,
                                            Tuple2.from(entry.getKey()).pack()),
                         Tuple2.from(entry.getValue()).pack());
        }
    }
View Full Code Here

        }
    }

    @Override
    public void clear(FDBStore store, Session session, FDBStoreData storeData) {
        TransactionState txn = store.getTransaction(session, storeData);
        byte[] begin = storeData.rawKey;
        byte[] end = ByteArrayUtil.join(begin, FIRST_NUMERIC);
        txn.clearRange(begin, end);
    }
View Full Code Here

        try(Session session = sessionService.createSession()) {
            txnService.run(session, new Runnable() {
                @Override
                public void run() {
                    TransactionState txn = txnService.getTransaction(session);
                    Boolean isCompatible = isDataCompatible(txn, false);
                    if(isCompatible == Boolean.FALSE) {
                        if(!clearIncompatibleData) {
                            isDataCompatible(txn, true);
                            assert false; // Throw expected
                        }
                        LOG.warn("Clearing incompatible data directory: {}", rootDir.getPath());
                        // Delicate: Directory removal is safe as this is the first service started that consumes it.
                        //           Remove after the 1.9.2 release, which includes entry point for doing this.
                        rootDir.remove(txn.getTransaction()).get();
                        initSchemaManagerDirectory();
                        isCompatible = null;
                    }
                    if(isCompatible == null) {
                        saveInitialState(txn);
View Full Code Here

    @Override
    public void addOnlineChangeSet(Session session, ChangeSet changeSet) {
        OnlineSession onlineSession = getOnlineSession(session, true);
        LOG.debug("addOnlineChangeSet: {} -> {}", onlineSession.id, changeSet);
        onlineSession.tableIDs.add(changeSet.getTableId());
        TransactionState txn = txnService.getTransaction(session);
        // Require existence
        DirectorySubspace onlineDir = openDirectory (txn, smDirectory, onlineDirPath(onlineSession.id));
        // Create on demand
       DirectorySubspace changeDir = onlineDir.createOrOpen(txn.getTransaction(), CHANGES_PATH).get();
        byte[] packedKey = changeDir.pack(changeSet.getTableId());
        byte[] value = ChangeSetHelper.save(changeSet);
        txn.setBytes(packedKey, value);
        // TODO: Cleanup into Abstract. For consistency with PSSM.
        if(getAis(session).getGeneration() == getOnlineAIS(session).getGeneration()) {
            bumpGeneration(session);
        }
    }
View Full Code Here

                                   AkibanInformationSchema newAIS,
                                   Collection<String> schemaNames) {
        ByteBuffer buffer = null;
        validateForSession(session, newAIS, null);
        try {
            TransactionState txn = txnService.getTransaction(session);
            for(String schema : schemaNames) {
                DirectorySubspace dir = smDirectory.createOrOpen(txn.getTransaction(), PROTOBUF_PATH).get();
                buffer = storeProtobuf(txn, dir, buffer, newAIS, schema);
            }
        } catch (RuntimeException e) {
            throw FDBAdapter.wrapFDBException(session, e);
        }
View Full Code Here

        getNextGeneration(session, txnService.getTransaction(session));
    }

    @Override
    protected long generateSaveOnlineSessionID(Session session) {
        TransactionState txn = txnService.getTransaction(session);
        // New ID
        byte[] packedKey = smDirectory.pack(ONLINE_SESSION_KEY);
        byte[] value = txn.getValue(packedKey);
        long newID = (value == null) ? 1 : Tuple2.fromBytes(value).getLong(0) + 1;
        txn.setBytes(packedKey, Tuple2.from(newID).pack());
        // Create directory
        DirectorySubspace dir = createDirectory(txn, smDirectory,onlineDirPath(newID));
        packedKey = dir.pack(GENERATION_KEY);
        value = Tuple2.from(-1L).pack(); // No generation yet
        txn.setBytes(packedKey, value);
        return newID;
    }
View Full Code Here

        // Get a unique generation for this AIS, but will only be visible to owning session
        validateForSession(session, newAIS, null);
        // Again so no other transactions see the new one from validate
        bumpGeneration(session);
        // Save online schemas
        TransactionState txn = txnService.getTransaction(session);
        List<String> idPath = onlineDirPath(onlineSession.id);
        DirectorySubspace idDir = openDirectory(txn, smDirectory, idPath);
        txn.setBytes(idDir.pack(GENERATION_KEY), Tuple2.from(newAIS.getGeneration()).pack());
       
        try {
            DirectorySubspace protobufDir = idDir.createOrOpen(txn.getTransaction(), PROTOBUF_PATH).get();
            ByteBuffer buffer = null;
            for(String name : schemas) {
                buffer = storeProtobuf(txn, protobufDir, buffer, newAIS, name);
            }
        } catch (RuntimeException e) {
View Full Code Here

TOP

Related Classes of com.foundationdb.server.store.FDBTransactionService.TransactionState

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.