diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ContainerManager.java b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ContainerManager.java index 31fd34fd602..5bab607e534 100644 --- a/zookeeper-server/src/main/java/org/apache/zookeeper/server/ContainerManager.java +++ b/zookeeper-server/src/main/java/org/apache/zookeeper/server/ContainerManager.java @@ -145,7 +145,7 @@ public void checkContainers() throws InterruptedException { DeleteContainerRequest record = new DeleteContainerRequest(containerPath); Request request = new Request(null, 0, 0, ZooDefs.OpCode.deleteContainer, RequestRecord.fromRecord(record), null); try { - LOG.info("Attempting to delete candidate container: {}", containerPath); + LOG.debug("Attempting to delete candidate container: {}", containerPath); postDeleteRequest(request); } catch (Exception e) { LOG.error("Could not delete container: {}", containerPath, e); diff --git a/zookeeper-server/src/test/java/org/apache/zookeeper/server/CreateContainerTest.java b/zookeeper-server/src/test/java/org/apache/zookeeper/server/CreateContainerTest.java index 589f61369d9..ed546f662e3 100644 --- a/zookeeper-server/src/test/java/org/apache/zookeeper/server/CreateContainerTest.java +++ b/zookeeper-server/src/test/java/org/apache/zookeeper/server/CreateContainerTest.java @@ -24,6 +24,10 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.read.ListAppender; import java.io.IOException; import java.time.Duration; import java.util.Arrays; @@ -50,6 +54,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; +import org.slf4j.LoggerFactory; public class CreateContainerTest extends ClientBase { @@ -147,6 +152,39 @@ public void testSimpleDeletion() throws KeeperException, InterruptedException { assertNull(zk.exists("/foo", false), "Container should have been deleted"); } + @Test + @Timeout(value = 30) + public void testCandidateContainerDeletionIsLoggedAtDebugLevel() throws Exception { + Logger logger = (Logger) LoggerFactory.getLogger(ContainerManager.class); + Level originalLevel = logger.getLevel(); + ListAppender appender = new ListAppender<>(); + appender.start(); + logger.addAppender(appender); + logger.setLevel(Level.DEBUG); + + try { + zk.create("/foo", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.CONTAINER); + zk.create("/foo/bar", new byte[0], ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); + zk.delete("/foo/bar", -1); + + ContainerManager containerManager = new ContainerManager( + serverFactory.getZooKeeperServer().getZKDatabase(), + serverFactory.getZooKeeperServer().firstProcessor, + 1, + 100); + containerManager.checkContainers(); + + assertTrue(completedContainerDeletions.tryAcquire(1, TimeUnit.SECONDS)); + assertTrue(appender.list.stream().anyMatch(event -> + event.getLevel() == Level.DEBUG + && event.getFormattedMessage().equals("Attempting to delete candidate container: /foo"))); + } finally { + logger.detachAppender(appender); + logger.setLevel(originalLevel); + appender.stop(); + } + } + @Test @Timeout(value = 30) public void testMultiWithContainerSimple() throws KeeperException, InterruptedException {