Skip to content

Commit 1fd8dba

Browse files
authored
Merge branch 'master' into patch-1
2 parents 1277578 + 3908d40 commit 1fd8dba

22 files changed

+454
-394
lines changed

README.adoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ The ideal place for questions or discussions about the HiveMQ Community Edition
5454

5555
=== Quick Start
5656

57-
* Download the latest https://github.com/hivemq/hivemq-community-edition/releases/download/2023.8/hivemq-ce-2023.8.zip[HiveMQ CE binary package].
57+
* Download the latest https://github.com/hivemq/hivemq-community-edition/releases/download/2023.9/hivemq-ce-2023.9.zip[HiveMQ CE binary package].
5858
* Unzip the package.
5959
* Run the run.sh (Linux/OSX) or run.bat (Windows) in the bin folder of the package.
6060

@@ -140,7 +140,7 @@ If you use Gradle, include the following code in your `build.gradle(.kts)` file.
140140
----
141141
142142
dependencies {
143-
implementation("com.hivemq:hivemq-community-edition-embedded:2023.8")
143+
implementation("com.hivemq:hivemq-community-edition-embedded:2023.9")
144144
}
145145
----
146146

@@ -156,7 +156,7 @@ If you use Maven, include the following code in your `pom.xml` file.
156156
<dependency>
157157
<groupId>com.hivemq</groupId>
158158
<artifactId>hivemq-community-edition-embedded</artifactId>
159-
<version>2023.8</version>
159+
<version>2023.9</version>
160160
</dependency>
161161
</dependencies>
162162
...

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
version=2023.8
1+
version=2023.9
22
#
33
# tools
44
#

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ equalsVerifier = "3.14.2"
1212
findsecbugs = "1.12.0"
1313
guava = "32.0.1-jre"
1414
guice = "5.1.0"
15-
hivemq-extensionSdk = "4.21.0"
15+
hivemq-extensionSdk = "4.22.0"
1616
jackson = "2.15.2"
1717
javassist = "3.29.2-GA"
1818
javax-annotation-api = "1.3.2"

src/distribution/bin/diagnostics.bat

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ rem limitations under the License.
6565
set "JAVA_OPTS=%JAVA_OPTS% --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/sun.security.provider=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED --add-exports java.base/jdk.internal.misc=ALL-UNNAMED"
6666

6767
rem JMX Monitoring
68-
set "JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false %JAVA_OPTS%"
68+
IF NOT DEFINED HIVEMQ_JMX_PORT SET "HIVEMQ_JMX_PORT=9010"
69+
set "JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=%HIVEMQ_JMX_PORT% -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false %JAVA_OPTS%"
6970

7071
set "JAVA_OPTS=-DdiagnosticMode=true %JAVA_OPTS%"
7172

@@ -128,4 +129,4 @@ GOTO :EOF
128129

129130
:RESOLVE
130131
SET %2=%~f1
131-
GOTO :EOF
132+
GOTO :EOF

src/distribution/bin/diagnostics.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ if hash java 2>/dev/null; then
5454
fi
5555

5656
# JMX Monitoring
57-
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
57+
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=${HIVEMQ_JMX_PORT:-9010} -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
5858

5959
JAVA_OPTS="$JAVA_OPTS -DdiagnosticMode=true"
6060

src/distribution/bin/run.bat

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ rem limitations under the License.
6565

6666

6767
rem JMX Monitoring
68-
set "JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false %JAVA_OPTS%"
68+
IF NOT DEFINED HIVEMQ_JMX_PORT SET "HIVEMQ_JMX_PORT=9010"
69+
set "JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=%HIVEMQ_JMX_PORT% -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false %JAVA_OPTS%"
6970

7071
rem Uncomment for enabling diagnostic mode
7172
rem set "JAVA_OPTS=-DdiagnosticMode=true %JAVA_OPTS%"
@@ -128,4 +129,4 @@ GOTO :EOF
128129

129130
:RESOLVE
130131
SET %2=%~f1
131-
GOTO :EOF
132+
GOTO :EOF

src/distribution/bin/run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ if hash java 2>/dev/null; then
5252
fi
5353

5454
# JMX Monitoring
55-
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
55+
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=${HIVEMQ_JMX_PORT:-9010} -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
5656

5757
# Uncomment for enabling Diagnostic Mode
5858
#JAVA_OPTS="$JAVA_OPTS -DdiagnosticMode=true"

src/distribution/third-party-licenses/licenses

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ HiveMQ uses the following third party libraries:
2121
com.sun.activation:jakarta.activation | 1.2.2 | BSD-3-Clause | https://www.eclipse.org/org/documents/edl-v10.php
2222
com.sun.xml.bind:jaxb-impl | 2.3.8 | BSD-3-Clause | https://www.eclipse.org/org/documents/edl-v10.php
2323
commons-io:commons-io | 2.13.0 | Apache-2.0 | https://spdx.org/licenses/Apache-2.0.html
24-
io.dropwizard.metrics:metrics-core | 4.2.19 | Apache-2.0 | https://spdx.org/licenses/Apache-2.0.html
24+
io.dropwizard.metrics:metrics-core | 4.2.22 | Apache-2.0 | https://spdx.org/licenses/Apache-2.0.html
2525
io.dropwizard.metrics:metrics-jmx | 4.2.19 | Apache-2.0 | https://spdx.org/licenses/Apache-2.0.html
2626
io.dropwizard.metrics:metrics-logback | 4.2.19 | Apache-2.0 | https://spdx.org/licenses/Apache-2.0.html
2727
io.github.microutils:kotlin-logging | 1.4.1 | Apache-2.0 | https://spdx.org/licenses/Apache-2.0.html
@@ -56,7 +56,7 @@ HiveMQ uses the following third party libraries:
5656
org.jetbrains.xodus:xodus-utils | 1.2.3 | Apache-2.0 | https://spdx.org/licenses/Apache-2.0.html
5757
org.rocksdb:rocksdbjni | 7.4.5 | Apache-2.0 | https://spdx.org/licenses/Apache-2.0.html
5858
org.slf4j:jul-to-slf4j | 2.0.7 | MIT | https://spdx.org/licenses/MIT.html
59-
org.slf4j:slf4j-api | 2.0.7 | MIT | https://spdx.org/licenses/MIT.html
59+
org.slf4j:slf4j-api | 2.0.9 | MIT | https://spdx.org/licenses/MIT.html
6060
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
6161

6262
The open source code of the libraries can be obtained by sending an email to [email protected].

src/distribution/third-party-licenses/licenses.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ <h2>Third Party Licenses</h2>
172172
</tr>
173173
<tr>
174174
<td>io.dropwizard.metrics:metrics-core</td>
175-
<td>4.2.19</td>
175+
<td>4.2.22</td>
176176
<td>Apache-2.0</td>
177177
<td>
178178
<a href="https://spdx.org/licenses/Apache-2.0.html">https://spdx.org/licenses/Apache-2.0.html</a>
@@ -487,7 +487,7 @@ <h2>Third Party Licenses</h2>
487487
</tr>
488488
<tr>
489489
<td>org.slf4j:slf4j-api</td>
490-
<td>2.0.7</td>
490+
<td>2.0.9</td>
491491
<td>MIT</td>
492492
<td>
493493
<a href="https://spdx.org/licenses/MIT.html">https://spdx.org/licenses/MIT.html</a>

src/main/java/com/hivemq/bootstrap/LoggingBootstrap.java

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@
2525
import ch.qos.logback.core.read.ListAppender;
2626
import ch.qos.logback.core.util.StatusPrinter;
2727
import com.hivemq.extension.sdk.api.annotations.NotNull;
28-
import com.hivemq.logging.NettyLogLevelModifier;
29-
import com.hivemq.logging.XodusEnvironmentImplLogLevelModificator;
30-
import com.hivemq.logging.XodusFileDataWriterLogLevelModificator;
28+
import com.hivemq.logging.LogLevelModifierTurboFilter;
29+
import com.hivemq.logging.modifier.NettyLogLevelModifier;
30+
import com.hivemq.logging.modifier.XodusEnvironmentImplLogLevelModifier;
31+
import com.hivemq.logging.modifier.XodusFileDataWriterLogLevelModifier;
3132
import org.apache.commons.lang3.SystemUtils;
3233
import org.slf4j.Logger;
3334
import org.slf4j.LoggerFactory;
@@ -42,22 +43,15 @@
4243
* This class is responsible for all logging bootstrapping. This is only
4344
* needed at the very beginning of HiveMQs lifecycle and before bootstrapping other
4445
* resources
45-
*
46-
* @author Dominik Obermaier
4746
*/
4847
public class LoggingBootstrap {
4948

50-
private static @NotNull ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
51-
5249
private static final Logger log = LoggerFactory.getLogger(LoggingBootstrap.class);
5350

54-
private static final XodusFileDataWriterLogLevelModificator xodusFileDataWriterLogLevelModificator =
55-
new XodusFileDataWriterLogLevelModificator();
56-
private static final NettyLogLevelModifier nettyLogLevelModifier = new NettyLogLevelModifier();
57-
private static final XodusEnvironmentImplLogLevelModificator xodusEnvironmentImplLogLevelModificator =
58-
new XodusEnvironmentImplLogLevelModificator();
59-
51+
private static @NotNull ListAppender<ILoggingEvent> listAppender = new ListAppender<>();
6052
private static final List<Appender<ILoggingEvent>> defaultAppenders = new LinkedList<>();
53+
private static final @NotNull LogLevelModifierTurboFilter logLevelModifierTurboFilter =
54+
new LogLevelModifierTurboFilter();
6155

6256
/**
6357
* Prepares the logging. This method must be called before any logging occurs
@@ -90,9 +84,8 @@ public static void prepareLogging() {
9084
public static void initLogging(final @NotNull File configFolder) {
9185

9286
final LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
93-
final ch.qos.logback.classic.Logger logger = getRootLogger();
9487

95-
context.addListener(new LogbackChangeListener(logger));
88+
context.addListener(new LogbackChangeListener());
9689

9790
final boolean overridden = overrideLogbackXml(configFolder);
9891

@@ -104,13 +97,15 @@ public static void initLogging(final @NotNull File configFolder) {
10497

10598
reset();
10699

100+
context.addTurboFilter(logLevelModifierTurboFilter);
101+
107102
// must be added here, as addLoglevelModifiers() is much to late
108103
if (SystemUtils.IS_OS_WINDOWS) {
109-
context.addTurboFilter(xodusFileDataWriterLogLevelModificator);
104+
logLevelModifierTurboFilter.registerLogLevelModifier(new XodusFileDataWriterLogLevelModifier());
110105
log.trace("Added Xodus log level modifier for FileDataWriter.class");
111106
}
112107

113-
context.addTurboFilter(nettyLogLevelModifier);
108+
logLevelModifierTurboFilter.registerLogLevelModifier(new NettyLogLevelModifier());
114109
log.trace("Added Netty log level modifier");
115110
}
116111

@@ -194,9 +189,7 @@ private static boolean overrideLogbackXml(final @NotNull File configFolder) {
194189
}
195190

196191
public static void addLoglevelModifiers() {
197-
final LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
198-
199-
context.addTurboFilter(xodusEnvironmentImplLogLevelModificator);
192+
logLevelModifierTurboFilter.registerLogLevelModifier(new XodusEnvironmentImplLogLevelModifier());
200193
log.trace("Added Xodus log level modifier for EnvironmentImpl.class");
201194
}
202195

@@ -208,14 +201,7 @@ private static void reset() {
208201
listAppender.list.clear();
209202
}
210203

211-
private static class LogbackChangeListener implements LoggerContextListener {
212-
213-
private final @NotNull ch.qos.logback.classic.Logger logger;
214-
215-
private LogbackChangeListener(
216-
final @NotNull ch.qos.logback.classic.Logger logger) {
217-
this.logger = logger;
218-
}
204+
private static final class LogbackChangeListener implements LoggerContextListener {
219205

220206
@Override
221207
public boolean isResetResistant() {
@@ -237,7 +223,7 @@ public void onStart(final @NotNull LoggerContext context) {
237223
@Override
238224
public void onReset(final @NotNull LoggerContext context) {
239225
log.trace("logback.xml was changed");
240-
addTurboFilters(context);
226+
context.addTurboFilter(logLevelModifierTurboFilter);
241227
}
242228

243229
@Override
@@ -249,12 +235,5 @@ public void onStop(final @NotNull LoggerContext context) {
249235
public void onLevelChange(final @NotNull ch.qos.logback.classic.Logger logger, final @NotNull Level level) {
250236
//noop
251237
}
252-
253-
private void addTurboFilters(final @NotNull LoggerContext context) {
254-
255-
context.addTurboFilter(xodusFileDataWriterLogLevelModificator);
256-
context.addTurboFilter(nettyLogLevelModifier);
257-
context.addTurboFilter(xodusEnvironmentImplLogLevelModificator);
258-
}
259238
}
260239
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/*
2+
* Copyright 2019-present HiveMQ GmbH
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.hivemq.logging;
17+
18+
import ch.qos.logback.classic.Level;
19+
import ch.qos.logback.classic.Logger;
20+
import ch.qos.logback.classic.turbo.TurboFilter;
21+
import ch.qos.logback.core.spi.FilterReply;
22+
import com.hivemq.extension.sdk.api.annotations.NotNull;
23+
import com.hivemq.extension.sdk.api.annotations.Nullable;
24+
import com.hivemq.logging.modifier.LogLevelModifier;
25+
import org.slf4j.Marker;
26+
27+
import java.util.List;
28+
import java.util.concurrent.CopyOnWriteArrayList;
29+
30+
public class LogLevelModifierTurboFilter extends TurboFilter {
31+
32+
private final @NotNull List<LogLevelModifier> logLevelModifiers = new CopyOnWriteArrayList<>();
33+
34+
@Override
35+
public @NotNull FilterReply decide(
36+
final @Nullable Marker marker,
37+
final @NotNull Logger logger,
38+
final @NotNull Level level,
39+
final @Nullable String format,
40+
final @Nullable Object @Nullable [] params,
41+
final @Nullable Throwable t) {
42+
43+
FilterReply filterReply = FilterReply.NEUTRAL;
44+
45+
if (format == null || level == Level.OFF) {
46+
// format is the log message
47+
return filterReply;
48+
}
49+
50+
for (final LogLevelModifier logLevelModifier : logLevelModifiers) {
51+
filterReply = logLevelModifier.decide(marker, logger, level, format, params, t);
52+
if (filterReply != FilterReply.NEUTRAL) {
53+
return filterReply;
54+
}
55+
}
56+
return filterReply;
57+
}
58+
59+
public void registerLogLevelModifier(final @NotNull LogLevelModifier logLevelModifier) {
60+
logLevelModifiers.add(logLevelModifier);
61+
}
62+
}

0 commit comments

Comments
 (0)