Example #1
0
 private Snapshot fullyHydrate() {
   if (spansFileBlockId != null) {
     FileBlock block;
     try {
       block = FileBlock.from(spansFileBlockId);
       builder.spans(rollingFile.read(block, "{\"rolledOver\":true}"));
     } catch (InvalidBlockIdFormatException e) {
       logger.warn(e.getMessage(), e);
     }
   }
   if (coarseMergedStackTreeFileBlockId != null) {
     FileBlock block;
     try {
       block = FileBlock.from(coarseMergedStackTreeFileBlockId);
       builder.coarseMergedStackTree(rollingFile.read(block, "{\"rolledOver\":true}"));
     } catch (InvalidBlockIdFormatException e) {
       logger.warn(e.getMessage(), e);
     }
   }
   if (fineMergedStackTreeFileBlockId != null) {
     FileBlock block;
     try {
       block = FileBlock.from(fineMergedStackTreeFileBlockId);
       builder.fineMergedStackTree(rollingFile.read(block, "{\"rolledOver\":true}"));
     } catch (InvalidBlockIdFormatException e) {
       logger.warn(e.getMessage(), e);
     }
   }
   return builder.build();
 }
Example #2
0
  public void deleteStream(String streamName) throws IOException {
    if (raFile == null) {
      throw new IOException("MultiFile closed");
    }

    for (DirectoryBlock block : directoryBlocks) {
      Long offset = block.removeStream(streamName);
      if (offset != null) {
        block.write(raFile);

        FileBlock file = new FileBlock(offset.longValue());
        file.read(raFile);
        FreeBlock free = new FreeBlock(offset.longValue());
        free.write(raFile);
        freeBlocks.add(free);

        long next = file.getHeader().getNextBlock();
        while (next != 0) {
          file = new FileBlock(next);
          file.read(raFile);
          free = new FreeBlock(next);
          free.write(raFile);
          freeBlocks.add(free);
          next = file.getHeader().getNextBlock();
        }
        break;
      }
    }
  }
 /** Parse out and decompress the data part of a fileblock helper function. */
 FileBlock parseData(byte buf[]) throws InvalidProtocolBufferException {
   FileBlock out = FileBlock.newInstance(type, indexdata);
   Fileformat.Blob blob = Fileformat.Blob.parseFrom(buf);
   if (blob.hasRaw()) {
     out.data = blob.getRaw();
   } else if (blob.hasZlibData()) {
     byte buf2[] = new byte[blob.getRawSize()];
     Inflater decompresser = new Inflater();
     decompresser.setInput(blob.getZlibData().toByteArray());
     // decompresser.getRemaining();
     try {
       decompresser.inflate(buf2);
     } catch (DataFormatException e) {
       e.printStackTrace();
       throw new Error(e);
     }
     assert (decompresser.finished());
     decompresser.end();
     out.data = ByteString.copyFrom(buf2);
   }
   return out;
 }