protected synchronized Collection<WriterPoolMember> drainAllWriters() {
        LinkedList<WriterPoolMember> writers = new LinkedList<WriterPoolMember>();
        availableWriters.drainTo(writers);

        while (writers.size() < currentActive) {
            try {
                WriterPoolMember w = availableWriters.take();
                writers.add(w);
            } catch (InterruptedException e) {
                logger.severe("caught " + e + " while waiting for writers to free up; returning only "
                        + writers.size() + " of " + currentActive + " active writers");
                break;
            }
        }
        
        return writers;
    }
protected synchronized Collection < WriterPoolMember > drainAllWriters ( ) { LinkedList < WriterPoolMember > writers = new LinkedList < WriterPoolMember > ( ) ; availableWriters . drainTo ( writers ) ; while ( writers . size ( ) < currentActive ) { try { WriterPoolMember w = availableWriters . take ( ) ; writers . add ( w ) ; } catch ( InterruptedException e ) { logger . severe ( "caught " + e + " while waiting for writers to free up; returning only " + writers . size ( ) + " of " + currentActive + " active writers" ) ; break ; } } return writers ; }
Drains all the active writers from {@link #availableWriters}, blocking to
wait for any writers currently in use to become available.

<p>
When finished with writers, call availableWriters.addAll(...) to put them
back into the rotation.

@return all the active writers