public void run() {
      SSTableWriter writer = null;
      try {
        while (true) {
          Buffer b = writeQueue.take();
          if (b == SENTINEL) return;

          writer = getWriter();
          for (Map.Entry<DecoratedKey, ColumnFamily> entry : b.entrySet())
            writer.append(entry.getKey(), entry.getValue());
          writer.closeAndOpenReader();
        }
      } catch (Throwable e) {
        if (writer != null) writer.abort();
        exception = e;
      }
    }
    public void run() {
      SSTableWriter writer = null;
      try {
        while (true) {
          Buffer b = writeQueue.take();
          if (b == SENTINEL) return;

          writer = getWriter();
          for (Map.Entry<DecoratedKey, ColumnFamily> entry : b.entrySet()) {
            if (entry.getValue().getColumnCount() > 0)
              writer.append(entry.getKey(), entry.getValue());
            else if (!entry.getKey().equals(b.getFirstInsertedKey()))
              throw new AssertionError("Empty partition");
          }
          writer.close();
        }
      } catch (Throwable e) {
        JVMStabilityInspector.inspectThrowable(e);
        if (writer != null) writer.abort();
        exception = e;
      }
    }
 @Override
 protected boolean newSSTableSegmentThresholdReached(SSTableWriter writer) {
   return writer.getOnDiskFilePointer() > sstableSizeInMB * 1024L * 1024L;
 }