return nextOpImpl(skipBrokenEdits); case OPEN: op = reader.readOp(skipBrokenEdits); if ((op != null) && (op.hasTransactionId())) { long txId = op.getTransactionId();
reader = FSEditLogOp.Reader.create(dataIn, tracker, logVersion); reader.setMaxOpSize(maxOpSize); state = State.OPEN; } finally {
while (true) { try { return decodeOp(); } catch (IOException e) { in.reset();
return nextOpImpl(skipBrokenEdits); case OPEN: op = reader.readOp(skipBrokenEdits); if ((op != null) && (op.hasTransactionId())) { long txId = op.getTransactionId();
return nextOpImpl(skipBrokenEdits); case OPEN: op = reader.readOp(skipBrokenEdits); if ((op != null) && (op.hasTransactionId())) { long txId = op.getTransactionId();
while (true) { try { return decodeOp(); } catch (IOException e) { in.reset();
verifyTerminator(); return null; validateChecksum(in, checksum, op.txid); return op;
while (true) { try { return decodeOp(); } catch (IOException e) { in.reset();
verifyTerminator(); return null; validateChecksum(in, checksum, op.txid); return op;
if (checksum != null) readChecksum = checksum.getValue(); validateChecksum(in, checksum, op.txid); return op;
reader = new FSEditLogOp.Reader(dataIn, tracker, logVersion); reader.setMaxOpSize(maxOpSize); state = State.OPEN; } finally {
verifyTerminator(); return HdfsConstants.INVALID_TXID; FSEditLogOp op = decodeOp(); return op == null ? HdfsConstants.INVALID_TXID : op.getTransactionId();
reader = new FSEditLogOp.Reader(dataIn, tracker, logVersion); reader.setMaxOpSize(maxOpSize); state = State.OPEN; } finally {
verifyTerminator(); return HdfsConstants.INVALID_TXID; FSEditLogOp op = decodeOp(); return op == null ? HdfsConstants.INVALID_TXID : op.getTransactionId();
/** * Open an EditLogInputStream for the given file. * @param name filename to open * @param firstTxId first transaction found in file * @param lastTxId last transaction id found in file * @throws LogHeaderCorruptException if the header is either missing or * appears to be corrupt/truncated * @throws IOException if an actual IO error occurs while reading the * header */ EditLogFileInputStream(File name, long firstTxId, long lastTxId) throws LogHeaderCorruptException, IOException { file = name; rp = new RandomAccessFile(file, "r"); fStream = new FileInputStream(rp.getFD()); fc = rp.getChannel(); BufferedInputStream bin = new BufferedInputStream(fStream); tracker = new FSEditLogLoader.PositionTrackingInputStream(bin); DataInputStream in = new DataInputStream(tracker); try { logVersion = readLogVersion(in); } catch (EOFException eofe) { throw new LogHeaderCorruptException("No header found in log"); } reader = new FSEditLogOp.Reader(in, logVersion); this.firstTxId = firstTxId; this.lastTxId = lastTxId; }
@Override public FSEditLogOp readOp() throws IOException { return reader.readOp(); }
@Override public void setMaxOpSize(int maxOpSize) { reader.setMaxOpSize(maxOpSize); }
@Override protected FSEditLogOp nextOp() throws IOException { return reader.readOp(false); }
@Override public void setMaxOpSize(int maxOpSize) { reader.setMaxOpSize(maxOpSize); }
@Override protected FSEditLogOp nextOp() throws IOException { Preconditions.checkState(reader != null, "Must call setBytes() before readOp()"); return reader.readOp(false); }