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
> >
>