Search in sources :

Example 1 with ByteSlot

use of org.apache.hadoop.hbase.procedure2.util.ByteSlot in project hbase by apache.

the class WALProcedureStore method insert.

@Override
public void insert(final Procedure proc, final Procedure[] subprocs) {
    if (LOG.isTraceEnabled()) {
        LOG.trace("Insert " + proc + ", subproc=" + Arrays.toString(subprocs));
    }
    ByteSlot slot = acquireSlot();
    try {
        // Serialize the insert
        long[] subProcIds = null;
        if (subprocs != null) {
            ProcedureWALFormat.writeInsert(slot, proc, subprocs);
            subProcIds = new long[subprocs.length];
            for (int i = 0; i < subprocs.length; ++i) {
                subProcIds[i] = subprocs[i].getProcId();
            }
        } else {
            assert !proc.hasParent();
            ProcedureWALFormat.writeInsert(slot, proc);
        }
        // Push the transaction data and wait until it is persisted
        pushData(PushType.INSERT, slot, proc.getProcId(), subProcIds);
    } catch (IOException e) {
        // We are not able to serialize the procedure.
        // this is a code error, and we are not able to go on.
        LOG.fatal("Unable to serialize one of the procedure: proc=" + proc + ", subprocs=" + Arrays.toString(subprocs), e);
        throw new RuntimeException(e);
    } finally {
        releaseSlot(slot);
    }
}
Also used : IOException(java.io.IOException) ByteSlot(org.apache.hadoop.hbase.procedure2.util.ByteSlot)

Example 2 with ByteSlot

use of org.apache.hadoop.hbase.procedure2.util.ByteSlot in project hbase by apache.

the class WALProcedureStore method update.

@Override
public void update(final Procedure proc) {
    if (LOG.isTraceEnabled()) {
        LOG.trace("Update " + proc);
    }
    ByteSlot slot = acquireSlot();
    try {
        // Serialize the update
        ProcedureWALFormat.writeUpdate(slot, proc);
        // Push the transaction data and wait until it is persisted
        pushData(PushType.UPDATE, slot, proc.getProcId(), null);
    } catch (IOException e) {
        // We are not able to serialize the procedure.
        // this is a code error, and we are not able to go on.
        LOG.fatal("Unable to serialize the procedure: " + proc, e);
        throw new RuntimeException(e);
    } finally {
        releaseSlot(slot);
    }
}
Also used : IOException(java.io.IOException) ByteSlot(org.apache.hadoop.hbase.procedure2.util.ByteSlot)

Example 3 with ByteSlot

use of org.apache.hadoop.hbase.procedure2.util.ByteSlot in project hbase by apache.

the class WALProcedureStore method delete.

@Override
public void delete(final Procedure proc, final long[] subProcIds) {
    assert proc != null : "expected a non-null procedure";
    assert subProcIds != null && subProcIds.length > 0 : "expected subProcIds";
    if (LOG.isTraceEnabled()) {
        LOG.trace("Update " + proc + " and Delete " + Arrays.toString(subProcIds));
    }
    ByteSlot slot = acquireSlot();
    try {
        // Serialize the delete
        ProcedureWALFormat.writeDelete(slot, proc, subProcIds);
        // Push the transaction data and wait until it is persisted
        pushData(PushType.DELETE, slot, proc.getProcId(), subProcIds);
    } catch (IOException e) {
        // We are not able to serialize the procedure.
        // this is a code error, and we are not able to go on.
        LOG.fatal("Unable to serialize the procedure: " + proc, e);
        throw new RuntimeException(e);
    } finally {
        releaseSlot(slot);
    }
}
Also used : IOException(java.io.IOException) ByteSlot(org.apache.hadoop.hbase.procedure2.util.ByteSlot)

Example 4 with ByteSlot

use of org.apache.hadoop.hbase.procedure2.util.ByteSlot in project hbase by apache.

the class WALProcedureStore method delete.

@Override
public void delete(final long procId) {
    if (LOG.isTraceEnabled()) {
        LOG.trace("Delete " + procId);
    }
    ByteSlot slot = acquireSlot();
    try {
        // Serialize the delete
        ProcedureWALFormat.writeDelete(slot, procId);
        // Push the transaction data and wait until it is persisted
        pushData(PushType.DELETE, slot, procId, null);
    } catch (IOException e) {
        // We are not able to serialize the procedure.
        // this is a code error, and we are not able to go on.
        LOG.fatal("Unable to serialize the procedure: " + procId, e);
        throw new RuntimeException(e);
    } finally {
        releaseSlot(slot);
    }
}
Also used : IOException(java.io.IOException) ByteSlot(org.apache.hadoop.hbase.procedure2.util.ByteSlot)

Example 5 with ByteSlot

use of org.apache.hadoop.hbase.procedure2.util.ByteSlot in project hbase by apache.

the class WALProcedureStore method insert.

@Override
public void insert(final Procedure[] procs) {
    if (LOG.isTraceEnabled()) {
        LOG.trace("Insert " + Arrays.toString(procs));
    }
    ByteSlot slot = acquireSlot();
    try {
        // Serialize the insert
        long[] procIds = new long[procs.length];
        for (int i = 0; i < procs.length; ++i) {
            assert !procs[i].hasParent();
            procIds[i] = procs[i].getProcId();
            ProcedureWALFormat.writeInsert(slot, procs[i]);
        }
        // Push the transaction data and wait until it is persisted
        pushData(PushType.INSERT, slot, Procedure.NO_PROC_ID, procIds);
    } catch (IOException e) {
        // We are not able to serialize the procedure.
        // this is a code error, and we are not able to go on.
        LOG.fatal("Unable to serialize one of the procedure: " + Arrays.toString(procs), e);
        throw new RuntimeException(e);
    } finally {
        releaseSlot(slot);
    }
}
Also used : IOException(java.io.IOException) ByteSlot(org.apache.hadoop.hbase.procedure2.util.ByteSlot)

Aggregations

ByteSlot (org.apache.hadoop.hbase.procedure2.util.ByteSlot)7 IOException (java.io.IOException)5 LinkedTransferQueue (java.util.concurrent.LinkedTransferQueue)1 CircularFifoBuffer (org.apache.commons.collections.buffer.CircularFifoBuffer)1