/** * Close all {@link WriterPoolMember}s in pool. */ public void close() { Collection<WriterPoolMember> writers = drainAllWriters(); for (WriterPoolMember writer: writers) { try { destroyWriter(writer); } catch (IOException e) { logger.log(Level.WARNING,"problem closing writer",e); } } }
/** * Close all {@link WriterPoolMember}s in pool. */ public void close() { Collection<WriterPoolMember> writers = drainAllWriters(); for (WriterPoolMember writer: writers) { try { destroyWriter(writer); } catch (IOException e) { logger.log(Level.WARNING,"problem closing writer",e); } } }
/** * Close all {@link WriterPoolMember}s in pool. */ public void close() { Collection<WriterPoolMember> writers = drainAllWriters(); for (WriterPoolMember writer: writers) { try { destroyWriter(writer); } catch (IOException e) { logger.log(Level.WARNING,"problem closing writer",e); } } }
/** * Return a writer, for likely reuse unless (1) writer's current file has * reached its target size; and (2) there's been no demand for additional * writers since the last time a new writer-file was rolled-over. In that * case, the possibly-superfluous writer instance is discarded. * @param writer Writer to return to the pool. * @throws IOException Problem returning File to pool. */ public void returnFile(WriterPoolMember writer) throws IOException { synchronized(this) { if(writer.isOversize()) { // maybe retire writer rather than recycle if(lastWriterNeededTime<=lastWriterRolloverTime) { // no timeouts waiting for recycled writer since last writer rollover destroyWriter(writer); return; } else { // reuse writer instance, causing new file to be created lastWriterRolloverTime = System.currentTimeMillis(); } } } if(!availableWriters.offer(writer)) { logger.log(Level.WARNING, "writer unreturnable to available pool; closing early"); destroyWriter(writer); } }
/** * Return a writer, for likely reuse unless (1) writer's current file has * reached its target size; and (2) there's been no demand for additional * writers since the last time a new writer-file was rolled-over. In that * case, the possibly-superfluous writer instance is discarded. * @param writer Writer to return to the pool. * @throws IOException Problem returning File to pool. */ public void returnFile(WriterPoolMember writer) throws IOException { synchronized(this) { if(writer.isOversize()) { // maybe retire writer rather than recycle if(lastWriterNeededTime<=lastWriterRolloverTime) { // no timeouts waiting for recycled writer since last writer rollover destroyWriter(writer); return; } else { // reuse writer instance, causing new file to be created lastWriterRolloverTime = System.currentTimeMillis(); } } } if(!availableWriters.offer(writer)) { logger.log(Level.WARNING, "writer unreturnable to available pool; closing early"); destroyWriter(writer); } }
/** * Return a writer, for likely reuse unless (1) writer's current file has * reached its target size; and (2) there's been no demand for additional * writers since the last time a new writer-file was rolled-over. In that * case, the possibly-superfluous writer instance is discarded. * @param writer Writer to return to the pool. * @throws IOException Problem returning File to pool. */ public void returnFile(WriterPoolMember writer) throws IOException { synchronized(this) { if(writer.isOversize()) { // maybe retire writer rather than recycle if(lastWriterNeededTime<=lastWriterRolloverTime) { // no timeouts waiting for recycled writer since last writer rollover destroyWriter(writer); return; } else { // reuse writer instance, causing new file to be created lastWriterRolloverTime = System.currentTimeMillis(); } } } if(!availableWriters.offer(writer)) { logger.log(Level.WARNING, "writer unreturnable to available pool; closing early"); destroyWriter(writer); } }
/** * Close and discard a writer that experienced a potentially-corrupting * error. * @param f writer with problem * @throws IOException */ public synchronized void invalidateFile(WriterPoolMember f) throws IOException { try { destroyWriter(f); } catch (Exception e) { // Convert exception. throw new IOException(e.getMessage()); } // It'll have been closed. Rename with an '.invalid' suffix so it // gets attention. File file = f.getFile(); file.renameTo(new File(file.getAbsoluteFile() + WriterPoolMember.INVALID_SUFFIX)); }
/** * Close and discard a writer that experienced a potentially-corrupting * error. * @param f writer with problem * @throws IOException */ public synchronized void invalidateFile(WriterPoolMember f) throws IOException { try { destroyWriter(f); } catch (Exception e) { // Convert exception. throw new IOException(e.getMessage()); } // It'll have been closed. Rename with an '.invalid' suffix so it // gets attention. File file = f.getFile(); file.renameTo(new File(file.getAbsoluteFile() + WriterPoolMember.INVALID_SUFFIX)); }
/** * Close and discard a writer that experienced a potentially-corrupting * error. * @param f writer with problem * @throws IOException */ public synchronized void invalidateFile(WriterPoolMember f) throws IOException { try { destroyWriter(f); } catch (Exception e) { // Convert exception. throw new IOException(e.getMessage()); } // It'll have been closed. Rename with an '.invalid' suffix so it // gets attention. File file = f.getFile(); file.renameTo(new File(file.getAbsoluteFile() + WriterPoolMember.INVALID_SUFFIX)); }