This is an automated email from the ASF dual-hosted git repository.

tabish pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/artemis.git


The following commit(s) were added to refs/heads/main by this push:
     new b4ef65d8d9 ARTEMIS-5819 remove HTTP idle connection stuff
b4ef65d8d9 is described below

commit b4ef65d8d96044f7ebafa4eb931b8af4b843a729
Author: Justin Bertram <[email protected]>
AuthorDate: Tue Dec 16 23:20:08 2025 -0600

    ARTEMIS-5819 remove HTTP idle connection stuff
    
    I'm removing all the HTTP-specific idle connection functionality for 2
    reasons:
    
     - the client-side keep-alive mechanism is completely broken
     - this duplicates the pinging functionality already in the Core
       protocol
    
    When the client-side sends an HTTP request for keep-alive purposes, it
    sends a GET. The broker only handles POST requests and therefore throws
    a ClassCastException causing the connection to fail. This appears to
    have been broken for a long time.
    
    Furthermore, both the client-side and broker-side HTTP-specific
    keep-alive code appears to be completely unnecessary. When
    httpEnabled=true the Core client simply tunnels it's normal packets
    through HTTP requests, including the normal ping packets to & from the
    broker. There is no need to have another keep-alive mechanism assuming
    the client configures their clientFailureCheckPeriod and connectionTTL
    appropriately. I can only assume this code was added for a defunct
    use-case.
---
 .../core/remoting/impl/netty/NettyConnector.java   | 81 +---------------------
 .../remoting/impl/netty/TransportConstants.java    |  4 ++
 .../artemis/core/protocol/ProtocolHandler.java     | 26 +------
 .../remoting/impl/netty/HttpAcceptorHandler.java   | 73 +++----------------
 .../remoting/impl/netty/HttpKeepAliveRunnable.java | 74 --------------------
 .../core/remoting/impl/netty/NettyAcceptor.java    |  4 --
 .../impl/netty/HttpAcceptorHandlerTest.java        | 63 -----------------
 docs/user-manual/configuring-transports.adoc       | 14 +---
 docs/user-manual/versions.adoc                     | 10 +++
 .../integration/amqp/WebSocketConnectionTest.java  | 18 +----
 .../integration/http/CoreClientOverHttpTest.java   |  2 +-
 11 files changed, 34 insertions(+), 335 deletions(-)

diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnector.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnector.java
index 30071582d8..d916603360 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnector.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyConnector.java
@@ -200,10 +200,6 @@ public class NettyConnector extends AbstractConnector {
 
    private boolean httpEnabled;
 
-   private long httpMaxClientIdleTime;
-
-   private long httpClientIdleScanPeriod;
-
    private boolean httpRequiresSessionId;
 
    // if true, after the connection, the connector will send
@@ -368,8 +364,6 @@ public class NettyConnector extends AbstractConnector {
       httpEnabled = 
ConfigurationHelper.getBooleanProperty(TransportConstants.HTTP_ENABLED_PROP_NAME,
 TransportConstants.DEFAULT_HTTP_ENABLED, configuration);
       servletPath = 
ConfigurationHelper.getStringProperty(TransportConstants.SERVLET_PATH, 
TransportConstants.DEFAULT_SERVLET_PATH, configuration);
       if (httpEnabled) {
-         httpMaxClientIdleTime = 
ConfigurationHelper.getLongProperty(TransportConstants.HTTP_CLIENT_IDLE_PROP_NAME,
 TransportConstants.DEFAULT_HTTP_CLIENT_IDLE_TIME, configuration);
-         httpClientIdleScanPeriod = 
ConfigurationHelper.getLongProperty(TransportConstants.HTTP_CLIENT_IDLE_SCAN_PERIOD,
 TransportConstants.DEFAULT_HTTP_CLIENT_SCAN_PERIOD, configuration);
          httpRequiresSessionId = 
ConfigurationHelper.getBooleanProperty(TransportConstants.HTTP_REQUIRES_SESSION_ID,
 TransportConstants.DEFAULT_HTTP_REQUIRES_SESSION_ID, configuration);
          httpHeaders = new HashMap<>();
          for (Map.Entry<String, Object> header : configuration.entrySet()) {
@@ -378,8 +372,6 @@ public class NettyConnector extends AbstractConnector {
             }
          }
       } else {
-         httpMaxClientIdleTime = 0;
-         httpClientIdleScanPeriod = -1;
          httpRequiresSessionId = false;
          httpHeaders = Collections.emptyMap();
       }
@@ -1120,14 +1112,6 @@ public class NettyConnector extends AbstractConnector {
 
    public class HttpHandler extends ChannelDuplexHandler {
 
-      private Channel channel;
-
-      private long lastSendTime = 0;
-
-      private boolean waitingGet = false;
-
-      private HttpIdleTimer task;
-
       private final String url;
 
       private final FutureLatch handShakeFuture = new FutureLatch();
@@ -1148,26 +1132,6 @@ public class NettyConnector extends AbstractConnector {
          return headers;
       }
 
-      @Override
-      public void channelActive(final ChannelHandlerContext ctx) throws 
Exception {
-         super.channelActive(ctx);
-         channel = ctx.channel();
-         if (httpClientIdleScanPeriod > 0) {
-            task = new HttpIdleTimer();
-            java.util.concurrent.Future<?> future = 
scheduledThreadPool.scheduleAtFixedRate(task, httpClientIdleScanPeriod, 
httpClientIdleScanPeriod, TimeUnit.MILLISECONDS);
-            task.setFuture(future);
-         }
-      }
-
-      @Override
-      public void channelInactive(final ChannelHandlerContext ctx) throws 
Exception {
-         if (task != null) {
-            task.close();
-         }
-
-         super.channelInactive(ctx);
-      }
-
       @Override
       public void channelRead(final ChannelHandlerContext ctx, final Object 
msg) throws Exception {
          FullHttpResponse response = (FullHttpResponse) msg;
@@ -1183,12 +1147,12 @@ public class NettyConnector extends AbstractConnector {
             active = true;
             handShakeFuture.run();
          }
-         waitingGet = false;
          ctx.fireChannelRead(response.content());
       }
 
       @Override
       public void write(final ChannelHandlerContext ctx, final Object msg, 
ChannelPromise promise) throws Exception {
+         Object toSend = msg;
          if (msg instanceof ByteBuf buf) {
             if (httpRequiresSessionId && !active) {
                if (handshaking) {
@@ -1208,48 +1172,9 @@ public class NettyConnector extends AbstractConnector {
                httpRequest.headers().add(HttpHeaderNames.COOKIE, cookie);
             }
             httpRequest.headers().add(HttpHeaderNames.CONTENT_LENGTH, 
String.valueOf(buf.readableBytes()));
-            ctx.write(httpRequest, promise);
-            lastSendTime = System.currentTimeMillis();
-         } else {
-            ctx.write(msg, promise);
-            lastSendTime = System.currentTimeMillis();
-         }
-      }
-
-      private class HttpIdleTimer implements Runnable {
-
-         private boolean closed = false;
-
-         private java.util.concurrent.Future<?> future;
-
-         @Override
-         public synchronized void run() {
-            if (closed) {
-               return;
-            }
-
-            if (!waitingGet && System.currentTimeMillis() > lastSendTime + 
httpMaxClientIdleTime) {
-               FullHttpRequest httpRequest = new 
DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, url);
-               httpRequest.headers().add(HttpHeaderNames.HOST, 
String.format("%s:%d", host, port));
-               for (Map.Entry<String, String> header : headers.entrySet()) {
-                  httpRequest.headers().add(header.getKey(), 
header.getValue());
-               }
-               waitingGet = true;
-               channel.writeAndFlush(httpRequest);
-            }
-         }
-
-         public synchronized void setFuture(final 
java.util.concurrent.Future<?> future) {
-            this.future = future;
-         }
-
-         public void close() {
-            if (future != null) {
-               future.cancel(false);
-            }
-
-            closed = true;
+            toSend = httpRequest;
          }
+         ctx.write(toSend, promise);
       }
    }
 
diff --git 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
index 2456590795..85206672a1 100644
--- 
a/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
+++ 
b/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/TransportConstants.java
@@ -44,14 +44,18 @@ public class TransportConstants {
 
    public static final String HTTP_ENABLED_PROP_NAME = "httpEnabled";
 
+   @Deprecated(forRemoval = true)
    public static final String HTTP_CLIENT_IDLE_PROP_NAME = 
"httpClientIdleTime";
 
+   @Deprecated(forRemoval = true)
    public static final String HTTP_CLIENT_IDLE_SCAN_PERIOD = 
"httpClientIdleScanPeriod";
 
    public static final String NETTY_HTTP_HEADER_PREFIX = "nettyHttpHeader.";
 
+   @Deprecated(forRemoval = true)
    public static final String HTTP_RESPONSE_TIME_PROP_NAME = 
"httpResponseTime";
 
+   @Deprecated(forRemoval = true)
    public static final String HTTP_SERVER_SCAN_PERIOD_PROP_NAME = 
"httpServerScanPeriod";
 
    public static final String HTTP_REQUIRES_SESSION_ID = 
"httpRequiresSessionId";
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/ProtocolHandler.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/ProtocolHandler.java
index b0ed7a167a..9a3e5a14a5 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/ProtocolHandler.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/ProtocolHandler.java
@@ -20,7 +20,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
@@ -43,7 +42,6 @@ import 
org.apache.activemq.artemis.core.buffers.impl.ChannelBufferWrapper;
 import org.apache.activemq.artemis.core.remoting.impl.netty.ConnectionCreator;
 import 
org.apache.activemq.artemis.core.remoting.impl.netty.HAProxyMessageEnforcer;
 import 
org.apache.activemq.artemis.core.remoting.impl.netty.HttpAcceptorHandler;
-import 
org.apache.activemq.artemis.core.remoting.impl.netty.HttpKeepAliveRunnable;
 import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptor;
 import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector;
 import 
org.apache.activemq.artemis.core.remoting.impl.netty.NettySNIHostnameHandler;
@@ -68,8 +66,6 @@ public class ProtocolHandler {
 
    private ScheduledExecutorService scheduledThreadPool;
 
-   private HttpKeepAliveRunnable httpKeepAliveRunnable;
-
    private final List<String> websocketSubprotocolIds;
 
    public ProtocolHandler(Map<String, ProtocolManager> protocolMap,
@@ -95,16 +91,6 @@ public class ProtocolHandler {
       return new ProtocolDecoder(true, false);
    }
 
-   public HttpKeepAliveRunnable getHttpKeepAliveRunnable() {
-      return httpKeepAliveRunnable;
-   }
-
-   public void close() {
-      if (httpKeepAliveRunnable != null) {
-         httpKeepAliveRunnable.close();
-      }
-   }
-
    public ProtocolManager getProtocol(String name) {
       return this.protocolMap.get(name);
    }
@@ -288,16 +274,8 @@ public class ProtocolHandler {
          p.addLast("http-decoder", new HttpRequestDecoder());
          p.addLast("http-aggregator", new 
HttpObjectAggregator(Integer.MAX_VALUE));
          p.addLast("http-encoder", new HttpResponseEncoder());
-         //create it lazily if and when we need it
-         if (httpKeepAliveRunnable == null) {
-            long httpServerScanPeriod = 
ConfigurationHelper.getLongProperty(TransportConstants.HTTP_SERVER_SCAN_PERIOD_PROP_NAME,
 TransportConstants.DEFAULT_HTTP_SERVER_SCAN_PERIOD, 
nettyAcceptor.getConfiguration());
-            httpKeepAliveRunnable = new HttpKeepAliveRunnable();
-            Future<?> future = 
scheduledThreadPool.scheduleAtFixedRate(httpKeepAliveRunnable, 
httpServerScanPeriod, httpServerScanPeriod, TimeUnit.MILLISECONDS);
-            httpKeepAliveRunnable.setFuture(future);
-         }
-         long httpResponseTime = 
ConfigurationHelper.getLongProperty(TransportConstants.HTTP_RESPONSE_TIME_PROP_NAME,
 TransportConstants.DEFAULT_HTTP_RESPONSE_TIME, 
nettyAcceptor.getConfiguration());
-         HttpAcceptorHandler httpHandler = new 
HttpAcceptorHandler(httpKeepAliveRunnable, httpResponseTime, ctx.channel());
-         ctx.pipeline().addLast(HTTP_HANDLER, httpHandler);
+         HttpAcceptorHandler httpHandler = new 
HttpAcceptorHandler(ctx.channel());
+         p.addLast(HTTP_HANDLER, httpHandler);
          p.addLast(new ProtocolDecoder(false, true));
          p.remove(this);
       }
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpAcceptorHandler.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpAcceptorHandler.java
index 2176d606c7..360eba7a3b 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpAcceptorHandler.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpAcceptorHandler.java
@@ -23,7 +23,6 @@ import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
 import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelDuplexHandler;
 import io.netty.channel.ChannelHandlerContext;
@@ -42,39 +41,26 @@ import io.netty.util.ReferenceCountUtil;
  */
 public class HttpAcceptorHandler extends ChannelDuplexHandler {
 
-   private final BlockingQueue<ResponseHolder> responses = new 
LinkedBlockingQueue<>();
+   private final BlockingQueue<FullHttpResponse> responses = new 
LinkedBlockingQueue<>();
 
    private final BlockingQueue<Runnable> delayedResponses = new 
LinkedBlockingQueue<>();
 
    private final ExecutorService executor = new ThreadPoolExecutor(1, 1, 0, 
TimeUnit.SECONDS, delayedResponses);
 
-   private final HttpKeepAliveRunnable httpKeepAliveTask;
-
-   private final long responseTime;
-
    private Channel channel;
 
-   public HttpAcceptorHandler(final HttpKeepAliveRunnable httpKeepAliveTask, 
final long responseTime, Channel channel) {
+   public HttpAcceptorHandler(Channel channel) {
       super();
-      this.responseTime = responseTime;
-      this.httpKeepAliveTask = httpKeepAliveTask;
       this.channel = channel;
-      httpKeepAliveTask.registerKeepAliveHandler(this);
    }
 
    @Override
    public void channelInactive(final ChannelHandlerContext ctx) throws 
Exception {
       super.channelInactive(ctx);
-      httpKeepAliveTask.unregisterKeepAliveHandler(this);
+      shutdown();
       channel = null;
    }
 
-   @Override
-   public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
-      super.handlerRemoved(ctx);
-      httpKeepAliveTask.unregisterKeepAliveHandler(this);
-   }
-
    @Override
    public void channelRead(final ChannelHandlerContext ctx, final Object msg) 
throws Exception {
       FullHttpRequest request = (FullHttpRequest) msg;
@@ -83,7 +69,7 @@ public class HttpAcceptorHandler extends ChannelDuplexHandler 
{
       if (method.equals(HttpMethod.POST)) {
          ctx.fireChannelRead(ReferenceCountUtil.retain(((FullHttpRequest) 
msg).content()));
          // add a new response
-         responses.put(new ResponseHolder(System.currentTimeMillis() + 
responseTime, new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, 
HttpResponseStatus.OK)));
+         responses.put(new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, 
HttpResponseStatus.OK));
          ReferenceCountUtil.release(msg);
          return;
       }
@@ -100,21 +86,6 @@ public class HttpAcceptorHandler extends 
ChannelDuplexHandler {
       }
    }
 
-   public void keepAlive(final long time) {
-      // send some responses to catch up thus avoiding any timeout.
-      int lateResponses = 0;
-      for (ResponseHolder response : responses) {
-         if (response.timeReceived < time) {
-            lateResponses++;
-         } else {
-            break;
-         }
-      }
-      for (int i = 0; i < lateResponses; i++) {
-         executor.execute(new ResponseRunner());
-      }
-   }
-
    /**
     * this is prompted to delivery when a response is available in the 
response queue.
     */
@@ -132,32 +103,26 @@ public class HttpAcceptorHandler extends 
ChannelDuplexHandler {
          this.promise = promise;
       }
 
-      ResponseRunner() {
-         bogusResponse = true;
-         buffer = Unpooled.buffer(0);
-         promise = channel.newPromise();
-      }
-
       @Override
       public void run() {
-         ResponseHolder responseHolder = null;
+         FullHttpResponse response = null;
          do {
             try {
-               responseHolder = responses.take();
+               response = responses.take();
             } catch (InterruptedException e) {
                if (executor.isShutdown())
                   return;
                // otherwise ignore, we'll just try again
             }
          }
-         while (responseHolder == null);
+         while (response == null);
          if (!bogusResponse) {
-            piggyBackResponses(responseHolder.response.content());
+            piggyBackResponses(response.content());
          } else {
-            responseHolder.response.content().writeBytes(buffer);
+            response.content().writeBytes(buffer);
          }
-         responseHolder.response.headers().set(HttpHeaderNames.CONTENT_LENGTH, 
String.valueOf(responseHolder.response.content().readableBytes()));
-         channel.writeAndFlush(responseHolder.response, promise);
+         response.headers().set(HttpHeaderNames.CONTENT_LENGTH, 
String.valueOf(response.content().readableBytes()));
+         channel.writeAndFlush(response, promise);
 
          buffer.release();
 
@@ -199,20 +164,4 @@ public class HttpAcceptorHandler extends 
ChannelDuplexHandler {
       }
       responses.clear();
    }
-
-   /**
-    * a holder class so we know what time  the request first arrived
-    */
-   private static final class ResponseHolder {
-
-      final FullHttpResponse response;
-
-      final long timeReceived;
-
-      private ResponseHolder(final long timeReceived, final FullHttpResponse 
response) {
-         this.timeReceived = timeReceived;
-         this.response = response;
-      }
-   }
-
 }
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpKeepAliveRunnable.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpKeepAliveRunnable.java
deleted file mode 100644
index 0cbee526c0..0000000000
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpKeepAliveRunnable.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.core.remoting.impl.netty;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.concurrent.Future;
-
-/**
- * A simple Runnable to allow {@link HttpAcceptorHandler}s to be called 
intermittently.
- */
-public class HttpKeepAliveRunnable implements Runnable {
-
-   private final List<HttpAcceptorHandler> handlers = new ArrayList<>();
-
-   private boolean closed = false;
-
-   private Future<?> future;
-
-   @Override
-   public synchronized void run() {
-      if (closed) {
-         return;
-      }
-
-      long time = System.currentTimeMillis();
-      for (HttpAcceptorHandler handler : handlers) {
-         handler.keepAlive(time);
-      }
-   }
-
-   public List<HttpAcceptorHandler> getHandlers() {
-      return Collections.unmodifiableList(handlers);
-   }
-
-   public synchronized void registerKeepAliveHandler(final HttpAcceptorHandler 
httpAcceptorHandler) {
-      handlers.add(httpAcceptorHandler);
-   }
-
-   public synchronized void unregisterKeepAliveHandler(final 
HttpAcceptorHandler httpAcceptorHandler) {
-      handlers.remove(httpAcceptorHandler);
-      httpAcceptorHandler.shutdown();
-   }
-
-   public void close() {
-      for (HttpAcceptorHandler handler : handlers) {
-         handler.shutdown();
-      }
-      if (future != null) {
-         future.cancel(true);
-      }
-
-      closed = true;
-   }
-
-   public synchronized void setFuture(final Future<?> future) {
-      this.future = future;
-   }
-}
diff --git 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
index 7770a0ac22..e4fb9fd218 100644
--- 
a/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
+++ 
b/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyAcceptor.java
@@ -786,10 +786,6 @@ public class NettyAcceptor extends AbstractAcceptor {
       }
       try {
 
-         if (protocolHandler != null) {
-            protocolHandler.close();
-         }
-
          if (batchFlusherFuture != null) {
             batchFlusherFuture.cancel(false);
 
diff --git 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpAcceptorHandlerTest.java
 
b/artemis-server/src/test/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpAcceptorHandlerTest.java
deleted file mode 100644
index a23d0f2731..0000000000
--- 
a/artemis-server/src/test/java/org/apache/activemq/artemis/core/remoting/impl/netty/HttpAcceptorHandlerTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.activemq.artemis.core.remoting.impl.netty;
-
-import io.netty.channel.embedded.EmbeddedChannel;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-import org.mockito.Mockito;
-import org.mockito.junit.jupiter.MockitoExtension;
-
-import static org.mockito.Mockito.spy;
-
-@ExtendWith(MockitoExtension.class)
-public class HttpAcceptorHandlerTest {
-
-   private static final String HTTP_HANDLER = "http-handler";
-
-   private HttpKeepAliveRunnable spy;
-
-   @BeforeEach
-   public void setUp() throws Exception {
-      spy = spy(new HttpKeepAliveRunnable());
-   }
-
-   @Test
-   public void testUnregisterIsCalledTwiceWhenChannelIsInactive() {
-      EmbeddedChannel channel = new EmbeddedChannel();
-
-      HttpAcceptorHandler httpHandler = new HttpAcceptorHandler(spy, 1000, 
channel);
-      channel.pipeline().addLast(HTTP_HANDLER, httpHandler);
-
-      channel.close();
-
-      Mockito.verify(spy, 
Mockito.times(2)).unregisterKeepAliveHandler(httpHandler);
-   }
-
-   @Test
-   public void testUnregisterIsCalledWhenHandlerIsRemovedFromPipeline() {
-      EmbeddedChannel channel = new EmbeddedChannel();
-
-      HttpAcceptorHandler httpHandler = new HttpAcceptorHandler(spy, 1000, 
channel);
-      channel.pipeline().addLast(HTTP_HANDLER, httpHandler);
-
-      channel.pipeline().remove(HTTP_HANDLER);
-
-      Mockito.verify(spy).unregisterKeepAliveHandler(httpHandler);
-   }
-}
diff --git a/docs/user-manual/configuring-transports.adoc 
b/docs/user-manual/configuring-transports.adoc
index 6a68e7ebbb..9b949d3623 100644
--- a/docs/user-manual/configuring-transports.adoc
+++ b/docs/user-manual/configuring-transports.adoc
@@ -507,21 +507,9 @@ Activates HTTP on the client.
 This is not needed on the broker.
 With single port support the broker will now automatically detect if HTTP is 
being used and configure itself.
 
-httpClientIdleTime::
-How long a client can be idle before sending an empty HTTP request to keep the 
connection alive
-
-httpClientIdleScanPeriod::
-How often, in milliseconds, to scan for idle clients
-
-httpResponseTime::
-How long the server can wait before sending an empty HTTP response to keep the 
connection alive
-
-httpServerScanPeriod::
-How often, in milliseconds, to scan for clients needing responses
-
 httpRequiresSessionId::
 If `true` the client will wait after the first call to receive a session id.
-Used the HTTP connector is connecting to servlet acceptor (not recommended)
+Used when the HTTP connector is connecting to servlet acceptor (not 
recommended).
 
 === Configuring Netty SOCKS Proxy
 
diff --git a/docs/user-manual/versions.adoc b/docs/user-manual/versions.adoc
index 3cfcde0d65..7ee6b365e0 100644
--- a/docs/user-manual/versions.adoc
+++ b/docs/user-manual/versions.adoc
@@ -28,6 +28,16 @@ 
https://artemis.apache.org/artemis-tlp-groupid-migration[Click here] for more de
 * Due to https://issues.apache.org/jira/browse/ARTEMIS-5770[ARTEMIS-5770] the 
formatting of the "Local Address" field has changed.
 This field is available on the "Connections," "Sessions," "Consumers," and 
"Producers" tabs.
 This may impact users filtering results based on this field.
+* Due to https://issues.apache.org/jira/browse/ARTEMIS-5819[ARTEMIS-5819] the 
following HTTP-specific transport configuration parameters have been deprecated:
+** `httpClientIdleTime`
+** `httpClientIdleScanPeriod`
+** `httpResponseTime`
+** `httpServerScanPeriod`
+
++
+
+The functionality previously provided via these parameters was non-functional 
and ultimately unnecessary.
+Idle connection management should be done through 
xref:connection-ttl.adoc#detecting-dead-connections[existing parameters].
 
 == 2.44.0
 
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/WebSocketConnectionTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/WebSocketConnectionTest.java
index 867bc4cb52..200519d542 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/WebSocketConnectionTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/amqp/WebSocketConnectionTest.java
@@ -16,9 +16,6 @@
  */
 package org.apache.activemq.artemis.tests.integration.amqp;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageConsumer;
@@ -26,11 +23,12 @@ import javax.jms.MessageProducer;
 import javax.jms.Queue;
 import javax.jms.Session;
 
-import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptor;
 import org.apache.qpid.jms.JmsConnection;
 import org.apache.qpid.jms.JmsConnectionFactory;
 import org.junit.jupiter.api.Test;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 /**
  * Test connections can be established to remote peers via WebSockets
  */
@@ -46,8 +44,6 @@ public class WebSocketConnectionTest extends 
JMSClientTestSupport {
       JmsConnectionFactory factory = new 
JmsConnectionFactory(getBrokerQpidJMSConnectionURI());
 
       produceAndConsumeInNewConnection(factory);
-
-      assertKeepAliveCounterIsZero();
    }
 
    @Test
@@ -59,8 +55,6 @@ public class WebSocketConnectionTest extends 
JMSClientTestSupport {
       produceAndConsumeInNewConnection(factory);
       produceAndConsumeInNewConnection(factory);
       produceAndConsumeInNewConnection(factory);
-
-      assertKeepAliveCounterIsZero();
    }
 
    private void produceAndConsumeInNewConnection(JmsConnectionFactory factory) 
throws JMSException {
@@ -84,12 +78,4 @@ public class WebSocketConnectionTest extends 
JMSClientTestSupport {
          connection.close();
       }
    }
-
-   private void assertKeepAliveCounterIsZero() {
-      NettyAcceptor nettyAcceptor = (NettyAcceptor) 
server.getRemotingService().getAcceptor(NETTY_ACCEPTOR);
-
-      int httpAcceptorHandlerCount = 
nettyAcceptor.getProtocolHandler().getHttpKeepAliveRunnable().getHandlers().size();
-
-      assertEquals(0, httpAcceptorHandlerCount);
-   }
 }
diff --git 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/http/CoreClientOverHttpTest.java
 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/http/CoreClientOverHttpTest.java
index f0e23cc07b..64d6d7c11b 100644
--- 
a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/http/CoreClientOverHttpTest.java
+++ 
b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/http/CoreClientOverHttpTest.java
@@ -55,7 +55,7 @@ public class CoreClientOverHttpTest extends ActiveMQTestBase {
       Map<String, Object> params = new HashMap<>();
       params.put(TransportConstants.HTTP_ENABLED_PROP_NAME, true);
 
-      conf = 
createDefaultInVMConfig().clearAcceptorConfigurations().addAcceptorConfiguration(new
 TransportConfiguration(NETTY_ACCEPTOR_FACTORY, params));
+      conf = 
createDefaultInVMConfig().clearAcceptorConfigurations().addAcceptorConfiguration(new
 TransportConfiguration(NETTY_ACCEPTOR_FACTORY));
 
       server = addServer(ActiveMQServers.newActiveMQServer(conf, false));
       server.start();


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to