diff --git a/pom.xml b/pom.xml index 0e58a253bb318d7d3a89442cbb1432f7009961ac..9298671601f1680f1781e344ae054e0a0f6a5874 100644 --- a/pom.xml +++ b/pom.xml @@ -407,11 +407,6 @@ <artifactId>swagger-annotations</artifactId> <version>1.5.22</version> </dependency> - <dependency> - <groupId>com.codahale.metrics</groupId> - <artifactId>metrics-annotation</artifactId> - <version>3.0.2</version> - </dependency> <dependency> <groupId>org.checkerframework</groupId> <artifactId>checker-qual</artifactId> @@ -453,6 +448,12 @@ <source>1.8</source> <target>1.8</target> <aspectLibraries> + <!-- Disabled for now, see https://github.com/micrometer-metrics/micrometer/issues/1149. + <aspectLibrary> + <groupId>io.micrometer</groupId> + <artifactId>micrometer-core</artifactId> + </aspectLibrary> + --> <aspectLibrary> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> diff --git a/src/main/java/de/thm/arsnova/config/AppConfig.java b/src/main/java/de/thm/arsnova/config/AppConfig.java index ddce39e4d11ada14d229b6101f779edb8d98f7ea..664b4fa4ca0a595b80df29fa4d1e55d865668922 100644 --- a/src/main/java/de/thm/arsnova/config/AppConfig.java +++ b/src/main/java/de/thm/arsnova/config/AppConfig.java @@ -37,7 +37,12 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.concurrent.ConcurrentMapCacheManager; -import org.springframework.context.annotation.*; +import org.springframework.context.annotation.AdviceMode; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.aspectj.EnableSpringConfigured; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.env.Environment; diff --git a/src/main/java/de/thm/arsnova/service/UserServiceImpl.java b/src/main/java/de/thm/arsnova/service/UserServiceImpl.java index 48ed77f620132206fcb7d64e94a08e18f1419e04..9c399600660ef1fa1f39fe7f77bde2bd2878a4e0 100644 --- a/src/main/java/de/thm/arsnova/service/UserServiceImpl.java +++ b/src/main/java/de/thm/arsnova/service/UserServiceImpl.java @@ -18,7 +18,6 @@ package de.thm.arsnova.service; -import com.codahale.metrics.annotation.Gauge; import java.io.IOException; import java.text.MessageFormat; import java.util.ArrayList; @@ -66,7 +65,6 @@ import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.Validator; import org.springframework.web.util.UriUtils; -import org.stagemonitor.core.metrics.MonitorGauges; import de.thm.arsnova.config.properties.AuthenticationProviderProperties; import de.thm.arsnova.config.properties.SecurityProperties; @@ -87,7 +85,6 @@ import de.thm.arsnova.web.exceptions.UnauthorizedException; * Performs all user related operations. */ @Service -@MonitorGauges public class UserServiceImpl extends DefaultEntityServiceImpl<UserProfile> implements UserService { private static final int LOGIN_TRY_RESET_DELAY_MS = 30 * 1000; @@ -324,7 +321,6 @@ public class UserServiceImpl extends DefaultEntityServiceImpl<UserProfile> imple } @Override - @Gauge public int loggedInUsers() { return userIdToRoomId.size(); } diff --git a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java index 4717df44f9683b4b0e45e25702e09e5346ecf3ad..d74a42f50d02de163b99d8ee7ec7dd08b7242949 100644 --- a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java +++ b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java @@ -18,7 +18,6 @@ package de.thm.arsnova.websocket; -import com.codahale.metrics.annotation.Timed; import com.corundumstudio.socketio.AckRequest; import com.corundumstudio.socketio.Configuration; import com.corundumstudio.socketio.SocketConfig; @@ -29,6 +28,7 @@ import com.corundumstudio.socketio.listener.DataListener; import com.corundumstudio.socketio.listener.DisconnectListener; import com.corundumstudio.socketio.protocol.Packet; import com.corundumstudio.socketio.protocol.PacketType; +import io.micrometer.core.annotation.Timed; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; @@ -153,7 +153,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer { server.addEventListener("setFeedback", Feedback.class, new DataListener<Feedback>() { @Override - @Timed(name = "setFeedbackEvent.onData") + @Timed("setFeedbackEvent.onData") public void onData(final SocketIOClient client, final Feedback data, final AckRequest ackSender) { final String userId = userService.getUserIdToSocketId(client.getSessionId()); if (userId == null) { @@ -177,7 +177,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer { server.addEventListener("setSession", Room.class, new DataListener<Room>() { @Override - @Timed(name = "setSessionEvent.onData") + @Timed("setSessionEvent.onData") public void onData(final SocketIOClient client, final Room room, final AckRequest ackSender) { final String userId = userService.getUserIdToSocketId(client.getSessionId()); if (null == userId) { @@ -211,7 +211,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer { Comment.class, new DataListener<Comment>() { @Override - @Timed(name = "readInterposedQuestionEvent.onData") + @Timed("readInterposedQuestionEvent.onData") public void onData( final SocketIOClient client, final Comment comment, @@ -244,7 +244,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer { ScoreOptions.class, new DataListener<ScoreOptions>() { @Override - @Timed(name = "setLearningProgressOptionsEvent.onData") + @Timed("setLearningProgressOptionsEvent.onData") public void onData( final SocketIOClient client, final ScoreOptions scoreOptions, final AckRequest ack) { throw new UnsupportedOperationException("Not implemented."); @@ -254,7 +254,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer { server.addConnectListener(new ConnectListener() { @Override - @Timed + @Timed("onConnect") public void onConnect(final SocketIOClient client) { } @@ -262,7 +262,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer { server.addDisconnectListener(new DisconnectListener() { @Override - @Timed + @Timed("onDisconnect") public void onDisconnect(final SocketIOClient client) { if ( userService == null diff --git a/src/main/java/org/stagemonitor/core/metrics/MonitorGauges.java b/src/main/java/org/stagemonitor/core/metrics/MonitorGauges.java deleted file mode 100644 index 4e1da49e4e0cb5a9446d958ecc8c6621bc8a1330..0000000000000000000000000000000000000000 --- a/src/main/java/org/stagemonitor/core/metrics/MonitorGauges.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.stagemonitor.core.metrics; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * When a type is marked with this annotation, the creation of gauges with - * {@link com.codahale.metrics.annotation.Gauge} is activated for that type. - * - * <pre><code> - * \@MonitorGauges - * public class Queue { - * \@Gauge(name = "queueSize") - * public int getQueueSize() { - * return queue.size; - * } - * } - * </code></pre> - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -public @interface MonitorGauges { -} diff --git a/src/main/resources/META-INF/aop.xml b/src/main/resources/META-INF/aop.xml index fe4871b30ed1a8777f4caccb3c138cc8747a843c..9887fa3ffc05ec45fa30845d1bf7576defd76c93 100644 --- a/src/main/resources/META-INF/aop.xml +++ b/src/main/resources/META-INF/aop.xml @@ -9,5 +9,9 @@ <aspect name="de.thm.arsnova.web.RangeAspect"/> <aspect name="de.thm.arsnova.web.InternalEntityAspect"/> <aspect name="de.thm.arsnova.websocket.WebsocketAuthenticationAspect"/> + <!-- Micrometer does not have a aop.xml config for its aspects. --> + <!-- Disabled for now, see https://github.com/micrometer-metrics/micrometer/issues/1149. + <aspect name="io.micrometer.core.aop.TimedAspect"/> + --> </aspects> </aspectj>