avro数据块可以有负数的对象吗?

时间:2018-06-12 19:32:20

标签: java avro

我正在阅读AVRO format spec并面对以下细节:

  

文件数据块包括:

     
      
  • 指示此块中对象计数的long。
  •   
  • 一个long,表示在应用任何编解码器后,当前块中序列化对象的字节大小
  •   

所以,看看<table>的java实现,我找到了这个:

org.apache.avro.file.DataFileStream::hasNextBlock

我们会检查是否boolean hasNextBlock() { try { if (availableBlock) return true; if (vin.isEnd()) return false; blockRemaining = vin.readLong(); // read block count blockSize = vin.readLong(); // read block size if (blockSize > Integer.MAX_VALUE || blockSize < 0) { throw new IOException("Block size invalid or too large for this " + "implementation: " + blockSize); } blockCount = blockRemaining; availableBlock = true; return true; } catch (EOFException eof) { return false; } catch (IOException e) { throw new AvroRuntimeException(e); } } ,但我们不检查是否blockSize < 0

如果某个数据块的blockRemaining读取小于零,那么它是一个有效的avro文件吗?

特别是,有效数据块是否可以使用以下字节blockRemaining < 0开头?从zig-zag var-lenght编码解码的byte[]{'O', 'b', 'j', 1}字节为负数。

0 个答案:

没有答案