Update rate limit exceeded counter
This commit is contained in:
parent
288cbf4a80
commit
d259ef0348
|
@ -222,7 +222,7 @@ public class MessageController {
|
||||||
assert (destination.isPresent());
|
assert (destination.isPresent());
|
||||||
|
|
||||||
if (source.isPresent() && !isSyncMessage) {
|
if (source.isPresent() && !isSyncMessage) {
|
||||||
checkRateLimit(source.get(), destination.get());
|
checkRateLimit(source.get(), destination.get(), userAgent);
|
||||||
}
|
}
|
||||||
|
|
||||||
validateCompleteDeviceList(destination.get(), messages.getMessages(),
|
validateCompleteDeviceList(destination.get(), messages.getMessages(),
|
||||||
|
@ -315,7 +315,7 @@ public class MessageController {
|
||||||
assert (destination.isPresent());
|
assert (destination.isPresent());
|
||||||
|
|
||||||
if (source.isPresent() && !isSyncMessage) {
|
if (source.isPresent() && !isSyncMessage) {
|
||||||
checkRateLimit(source.get(), destination.get());
|
checkRateLimit(source.get(), destination.get(), userAgent);
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<IncomingDeviceMessage> messagesAsList = Arrays.asList(messages);
|
final List<IncomingDeviceMessage> messagesAsList = Arrays.asList(messages);
|
||||||
|
@ -335,7 +335,7 @@ public class MessageController {
|
||||||
|
|
||||||
if (destinationDevice.isPresent()) {
|
if (destinationDevice.isPresent()) {
|
||||||
Metrics.counter(SENT_MESSAGE_COUNTER_NAME, tags).increment();
|
Metrics.counter(SENT_MESSAGE_COUNTER_NAME, tags).increment();
|
||||||
sendMessage(source, destination.get(), destinationDevice.get(), destinationUuid, timestamp, online, message, userAgent);
|
sendMessage(source, destination.get(), destinationDevice.get(), destinationUuid, timestamp, online, message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -633,7 +633,8 @@ public class MessageController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendMessage(Optional<AuthenticatedAccount> source, Account destinationAccount, Device destinationDevice, UUID destinationUuid, long timestamp, boolean online, IncomingDeviceMessage message, String userAgentString) throws NoSuchUserException {
|
private void sendMessage(Optional<AuthenticatedAccount> source, Account destinationAccount, Device destinationDevice,
|
||||||
|
UUID destinationUuid, long timestamp, boolean online, IncomingDeviceMessage message) throws NoSuchUserException {
|
||||||
try {
|
try {
|
||||||
Envelope.Builder messageBuilder = Envelope.newBuilder();
|
Envelope.Builder messageBuilder = Envelope.newBuilder();
|
||||||
long serverTimestamp = System.currentTimeMillis();
|
long serverTimestamp = System.currentTimeMillis();
|
||||||
|
@ -693,15 +694,18 @@ public class MessageController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkRateLimit(AuthenticatedAccount source, Account destination) throws RateLimitExceededException {
|
private void checkRateLimit(AuthenticatedAccount source, Account destination, String userAgent)
|
||||||
|
throws RateLimitExceededException {
|
||||||
final String senderCountryCode = Util.getCountryCode(source.getAccount().getNumber());
|
final String senderCountryCode = Util.getCountryCode(source.getAccount().getNumber());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
rateLimiters.getMessagesLimiter().validate(source.getAccount().getUuid(), destination.getUuid());
|
rateLimiters.getMessagesLimiter().validate(source.getAccount().getUuid(), destination.getUuid());
|
||||||
} catch (final RateLimitExceededException e) {
|
} catch (final RateLimitExceededException e) {
|
||||||
Metrics.counter(RATE_LIMITED_MESSAGE_COUNTER_NAME,
|
Metrics.counter(RATE_LIMITED_MESSAGE_COUNTER_NAME,
|
||||||
SENDER_COUNTRY_TAG_NAME, senderCountryCode,
|
Tags.of(
|
||||||
RATE_LIMIT_REASON_TAG_NAME, "singleDestinationRate").increment();
|
UserAgentTagUtil.getPlatformTag(userAgent),
|
||||||
|
Tag.of(SENDER_COUNTRY_TAG_NAME, senderCountryCode),
|
||||||
|
Tag.of(RATE_LIMIT_REASON_TAG_NAME, "singleDestinationRate"))).increment();
|
||||||
|
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue