Program: 112047
Project: 112047
Buggy source:
public static void main(String[] args) throws IOException {
  File out=new File("String_Node_Str");
  if (out.exists()) {
    if (!out.delete()) {
      throw new RuntimeException("String_Node_Str" + out.getAbsolutePath());
    }
  }
  Path testFile=new Path(out.toURI());
  Configuration configuration=new Configuration();
  MessageType schema=new MessageType("String_Node_Str",new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.INT32,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.INT32,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.DOUBLE,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"));
  MemPageStore pageStore=new MemPageStore(150000);
  ColumnWriteStoreImpl store=new ColumnWriteStoreImpl(pageStore,20 * 1024,1 * 1024,false);
  MessageColumnIO columnIO=new ColumnIOFactory(true).getColumnIO(schema);
  RecordConsumer recordWriter=columnIO.getRecordWriter(store);
  int recordCount=0;
  for (int i=0; i < 150000; i++) {
    recordWriter.startMessage();
    writeField(recordWriter,0,"String_Node_Str",i % 10 == 0 ? null : i);
    writeField(recordWriter,1,"String_Node_Str",i % 11 == 0 ? null : "String_Node_Str" + i);
    writeField(recordWriter,2,"String_Node_Str",i % 12 == 0 ? null : "String_Node_Str" + i);
    writeField(recordWriter,3,"String_Node_Str",i % 13 == 0 ? null : i);
    writeField(recordWriter,4,"String_Node_Str",i % 14 == 0 ? null : "String_Node_Str" + i);
    writeField(recordWriter,5,"String_Node_Str",i % 15 == 0 ? null : 1.2d * i);
    writeField(recordWriter,6,"String_Node_Str",i % 16 == 0 ? null : "String_Node_Str" + i);
    writeField(recordWriter,7,"String_Node_Str",i % 17 == 0 ? null : "String_Node_Str" + i);
    recordWriter.endMessage();
    ++recordCount;
  }
  store.flush();
  System.out.printf("String_Node_Str",store.memSize(),store.maxColMemSize(),store.allocatedSize());
  System.out.println(store.memUsageString());
  writeToFile(testFile,configuration,schema,pageStore,recordCount);
  try {
    readTestFile(testFile,configuration);
  }
 catch (  Exception e) {
    LOG.error("String_Node_Str",e);
  }
}

Fixed version (ground truth):
public static void main(String[] args) throws IOException {
  File out=new File("String_Node_Str");
  if (out.exists()) {
    if (!out.delete()) {
      throw new RuntimeException("String_Node_Str" + out.getAbsolutePath());
    }
  }
  Path testFile=new Path(out.toURI());
  Configuration configuration=new Configuration();
  MessageType schema=new MessageType("String_Node_Str",new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.INT32,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.INT32,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.DOUBLE,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"),new PrimitiveType(Repetition.OPTIONAL,PrimitiveTypeName.BINARY,"String_Node_Str"));
  MemPageStore pageStore=new MemPageStore(150000);
  ColumnWriteStoreImpl store=new ColumnWriteStoreImpl(pageStore,20 * 1024,1 * 1024,20 * 1024,false);
  MessageColumnIO columnIO=new ColumnIOFactory(true).getColumnIO(schema);
  RecordConsumer recordWriter=columnIO.getRecordWriter(store);
  int recordCount=0;
  for (int i=0; i < 150000; i++) {
    recordWriter.startMessage();
    writeField(recordWriter,0,"String_Node_Str",i % 10 == 0 ? null : i);
    writeField(recordWriter,1,"String_Node_Str",i % 11 == 0 ? null : "String_Node_Str" + i);
    writeField(recordWriter,2,"String_Node_Str",i % 12 == 0 ? null : "String_Node_Str" + i);
    writeField(recordWriter,3,"String_Node_Str",i % 13 == 0 ? null : i);
    writeField(recordWriter,4,"String_Node_Str",i % 14 == 0 ? null : "String_Node_Str" + i);
    writeField(recordWriter,5,"String_Node_Str",i % 15 == 0 ? null : 1.2d * i);
    writeField(recordWriter,6,"String_Node_Str",i % 16 == 0 ? null : "String_Node_Str" + i);
    writeField(recordWriter,7,"String_Node_Str",i % 17 == 0 ? null : "String_Node_Str" + i);
    recordWriter.endMessage();
    ++recordCount;
  }
  store.flush();
  System.out.printf("String_Node_Str",store.memSize(),store.maxColMemSize(),store.allocatedSize());
  System.out.println(store.memUsageString());
  writeToFile(testFile,configuration,schema,pageStore,recordCount);
  try {
    readTestFile(testFile,configuration);
  }
 catch (  Exception e) {
    LOG.error("String_Node_Str",e);
  }
}