Following up on this one, I think I've figured out the issue that you have spotted, submitted a fix already, thank you.
Best Regards, Andriy Redko On 2025/03/12 00:36:30 Andriy Redko wrote: > Hi, > > Could you please provide the reproducer for that > DelayedCachedOutputStreamCleaner expires the streams prematurely? Thank you. > > Best Regards, > Andriy Redko > > On 2025/03/11 08:43:32 Ralph Bastiaansen wrote: > > Hi, > > In Apache CXF 4.1.1, org.apache.cxf.io.DelayedCachedOutputStreamCleaner > > > > It seems periodically all registered streams are killed, even young streams > > that are not even a second old. > > A DelayedCloseable has expireAt value, but it isn’t checked. > > > > private void clean(Collection<DelayedCloseable> closeables) { > > final Iterator<DelayedCloseable> iterator = > > closeables.iterator(); > > while (iterator.hasNext()) { > > final DelayedCloseable next = iterator.next(); > > try { > > iterator.remove(); > > LOG.warning("Unclosed (leaked?) stream detected: " + > > next.closeable.hashCode()); > > next.closeable.close(); > > } catch (final IOException | RuntimeException ex) { > > LOG.warning("Unable to close (leaked?) stream: " + > > ex.getMessage()); > > } > > } > > } > > https://github.com/apache/cxf/blob/5aef1e4fbef4877f7e1b310e054dfb8e7af25a85/core/src/main/java/org/apache/cxf/io/DelayedCachedOutputStreamCleaner.java#L133 > > > > To reproduce the issue more quickly while testing, use bus properties > > - set "bus.io.CachedOutputStream.Threshold" to a lower value to write the > > stream to file. > > - set "bus.io.CachedOutputStreamCleaner.Delay" to a lower value to trigger > > the timer. > > > > Kind regards, > > Ralph > > >