From 66eeaed94f9adc4ce71aa22dca4f2d22f2026107 Mon Sep 17 00:00:00 2001 From: yuz10 <845238369@qq.com> Date: Sat, 24 Jul 2021 22:11:20 +0800 Subject: [PATCH 1/2] #3175 check acl config before update. otherwise broker may fail to start --- .../acl/plain/PlainPermissionManager.java | 17 +++++++++++------ .../acl/plain/PlainAccessValidatorTest.java | 10 ++++++++++ 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java b/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java index a22b0b25a7..809cc75969 100644 --- a/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java +++ b/acl/src/main/java/org/apache/rocketmq/acl/plain/PlainPermissionManager.java @@ -130,6 +130,7 @@ public class PlainPermissionManager { log.error("Parameter value plainAccessConfig is null,Please check your parameter"); throw new AclException("Parameter value plainAccessConfig is null, Please check your parameter"); } + checkPlainAccessConfig(plainAccessConfig); Permission.checkResourcePerms(plainAccessConfig.getTopicPerms()); Permission.checkResourcePerms(plainAccessConfig.getGroupPerms()); @@ -357,15 +358,19 @@ public class PlainPermissionManager { this.globalWhiteRemoteAddressStrategy.clear(); } - public PlainAccessResource buildPlainAccessResource(PlainAccessConfig plainAccessConfig) throws AclException { + public void checkPlainAccessConfig(PlainAccessConfig plainAccessConfig) throws AclException { if (plainAccessConfig.getAccessKey() == null - || plainAccessConfig.getSecretKey() == null - || plainAccessConfig.getAccessKey().length() <= AclConstants.ACCESS_KEY_MIN_LENGTH - || plainAccessConfig.getSecretKey().length() <= AclConstants.SECRET_KEY_MIN_LENGTH) { + || plainAccessConfig.getSecretKey() == null + || plainAccessConfig.getAccessKey().length() <= AclConstants.ACCESS_KEY_MIN_LENGTH + || plainAccessConfig.getSecretKey().length() <= AclConstants.SECRET_KEY_MIN_LENGTH) { throw new AclException(String.format( - "The accessKey=%s and secretKey=%s cannot be null and length should longer than 6", - plainAccessConfig.getAccessKey(), plainAccessConfig.getSecretKey())); + "The accessKey=%s and secretKey=%s cannot be null and length should longer than 6", + plainAccessConfig.getAccessKey(), plainAccessConfig.getSecretKey())); } + } + + public PlainAccessResource buildPlainAccessResource(PlainAccessConfig plainAccessConfig) throws AclException { + checkPlainAccessConfig(plainAccessConfig); PlainAccessResource plainAccessResource = new PlainAccessResource(); plainAccessResource.setAccessKey(plainAccessConfig.getAccessKey()); plainAccessResource.setSecretKey(plainAccessConfig.getSecretKey()); diff --git a/acl/src/test/java/org/apache/rocketmq/acl/plain/PlainAccessValidatorTest.java b/acl/src/test/java/org/apache/rocketmq/acl/plain/PlainAccessValidatorTest.java index c3d41919a7..056f011935 100644 --- a/acl/src/test/java/org/apache/rocketmq/acl/plain/PlainAccessValidatorTest.java +++ b/acl/src/test/java/org/apache/rocketmq/acl/plain/PlainAccessValidatorTest.java @@ -566,6 +566,16 @@ public class PlainAccessValidatorTest { plainAccessValidator.updateAccessConfig(plainAccessConfig); } + @Test(expected = AclException.class) + public void createAndUpdateAccessAclNullSkExceptionTest() { + PlainAccessConfig plainAccessConfig = new PlainAccessConfig(); + plainAccessConfig.setAccessKey("RocketMQ33"); + // secret key is null + + PlainAccessValidator plainAccessValidator = new PlainAccessValidator(); + plainAccessValidator.updateAccessConfig(plainAccessConfig); + } + @Test public void updateGlobalWhiteAddrsNormalTest() { System.setProperty("rocketmq.home.dir", "src/test/resources"); From 3aa4943776b86b459bf0fee4aec50f31c6b05e62 Mon Sep 17 00:00:00 2001 From: yuz10 <845238369@qq.com> Date: Tue, 27 Jul 2021 23:10:57 +0800 Subject: [PATCH 2/2] fix checkstyle --- .../remoting/netty/NettySystemConfig.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettySystemConfig.java b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettySystemConfig.java index ef767a36ed..5a09fd6138 100644 --- a/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettySystemConfig.java +++ b/remoting/src/main/java/org/apache/rocketmq/remoting/netty/NettySystemConfig.java @@ -29,16 +29,16 @@ public class NettySystemConfig { public static final String COM_ROCKETMQ_REMOTING_CLIENT_ONEWAY_SEMAPHORE_VALUE = "com.rocketmq.remoting.clientOnewaySemaphoreValue"; public static final String COM_ROCKETMQ_REMOTING_CLIENT_WORKER_SIZE = - "com.rocketmq.remoting.client.worker.size"; + "com.rocketmq.remoting.client.worker.size"; public static final String COM_ROCKETMQ_REMOTING_CLIENT_CONNECT_TIMEOUT = - "com.rocketmq.remoting.client.connect.timeout"; + "com.rocketmq.remoting.client.connect.timeout"; public static final String COM_ROCKETMQ_REMOTING_CLIENT_CHANNEL_MAX_IDLE_SECONDS = - "com.rocketmq.remoting.client.channel.maxIdleTimeSeconds"; + "com.rocketmq.remoting.client.channel.maxIdleTimeSeconds"; public static final String COM_ROCKETMQ_REMOTING_CLIENT_CLOSE_SOCKET_IF_TIMEOUT = - "com.rocketmq.remoting.client.closeSocketIfTimeout"; + "com.rocketmq.remoting.client.closeSocketIfTimeout"; - public static final boolean NETTY_POOLED_BYTE_BUF_ALLOCATOR_ENABLE = // + public static final boolean NETTY_POOLED_BYTE_BUF_ALLOCATOR_ENABLE = // Boolean.parseBoolean(System.getProperty(COM_ROCKETMQ_REMOTING_NETTY_POOLED_BYTE_BUF_ALLOCATOR_ENABLE, "false")); public static final int CLIENT_ASYNC_SEMAPHORE_VALUE = // Integer.parseInt(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_ASYNC_SEMAPHORE_VALUE, "65535")); @@ -49,11 +49,11 @@ public class NettySystemConfig { public static int socketRcvbufSize = Integer.parseInt(System.getProperty(COM_ROCKETMQ_REMOTING_SOCKET_RCVBUF_SIZE, "65535")); public static int clientWorkerSize = - Integer.parseInt(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_WORKER_SIZE, "4")); + Integer.parseInt(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_WORKER_SIZE, "4")); public static int connectTimeoutMillis = - Integer.parseInt(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_CONNECT_TIMEOUT, "3000")); + Integer.parseInt(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_CONNECT_TIMEOUT, "3000")); public static int clientChannelMaxIdleTimeSeconds = - Integer.parseInt(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_CHANNEL_MAX_IDLE_SECONDS, "120")); + Integer.parseInt(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_CHANNEL_MAX_IDLE_SECONDS, "120")); public static boolean clientCloseSocketIfTimeout = - Boolean.parseBoolean(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_CLOSE_SOCKET_IF_TIMEOUT, "true")); + Boolean.parseBoolean(System.getProperty(COM_ROCKETMQ_REMOTING_CLIENT_CLOSE_SOCKET_IF_TIMEOUT, "true")); }