public synchronized void release(){
  if (!done) {
    ArrayList<LogConnection> cRefs=new ArrayList<LogConnection>(cursors.size());
    for (    LogConnection c : cursors.keySet()) {
      cRefs.add(c);
    }
    for (    LogConnection c : cRefs) {
      releaseConnection(c);
    }
    cursors=null;
    done=true;
  }
}

public synchronized void release ( ) { if ( ! done ) { ArrayList < LogConnection > cRefs = new ArrayList < LogConnection > ( cursors . size ( ) ) ; for ( LogConnection c : cursors . keySet ( ) ) { cRefs . add ( c ) ; } for ( LogConnection c : cRefs ) { releaseConnection ( c ) ; } cursors = null ; done = true ; } }
releases all cursors . this must be called when terminating to ensure file descriptors are released .
