...
|
...
|
@@ -68,7 +68,7 @@ public abstract class AbstractTransportService implements TransportService { |
68
|
68
|
|
69
|
69
|
@Override
|
70
|
70
|
public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.SessionEventMsg msg, TransportServiceCallback<Void> callback) {
|
71
|
|
- if (checkLimits(sessionInfo, callback)) {
|
|
71
|
+ if (checkLimits(sessionInfo, msg, callback)) {
|
72
|
72
|
reportActivityInternal(sessionInfo);
|
73
|
73
|
doProcess(sessionInfo, msg, callback);
|
74
|
74
|
}
|
...
|
...
|
@@ -76,7 +76,7 @@ public abstract class AbstractTransportService implements TransportService { |
76
|
76
|
|
77
|
77
|
@Override
|
78
|
78
|
public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.PostTelemetryMsg msg, TransportServiceCallback<Void> callback) {
|
79
|
|
- if (checkLimits(sessionInfo, callback)) {
|
|
79
|
+ if (checkLimits(sessionInfo, msg, callback)) {
|
80
|
80
|
reportActivityInternal(sessionInfo);
|
81
|
81
|
doProcess(sessionInfo, msg, callback);
|
82
|
82
|
}
|
...
|
...
|
@@ -84,7 +84,7 @@ public abstract class AbstractTransportService implements TransportService { |
84
|
84
|
|
85
|
85
|
@Override
|
86
|
86
|
public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.PostAttributeMsg msg, TransportServiceCallback<Void> callback) {
|
87
|
|
- if (checkLimits(sessionInfo, callback)) {
|
|
87
|
+ if (checkLimits(sessionInfo, msg, callback)) {
|
88
|
88
|
reportActivityInternal(sessionInfo);
|
89
|
89
|
doProcess(sessionInfo, msg, callback);
|
90
|
90
|
}
|
...
|
...
|
@@ -92,7 +92,7 @@ public abstract class AbstractTransportService implements TransportService { |
92
|
92
|
|
93
|
93
|
@Override
|
94
|
94
|
public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.GetAttributeRequestMsg msg, TransportServiceCallback<Void> callback) {
|
95
|
|
- if (checkLimits(sessionInfo, callback)) {
|
|
95
|
+ if (checkLimits(sessionInfo, msg, callback)) {
|
96
|
96
|
reportActivityInternal(sessionInfo);
|
97
|
97
|
doProcess(sessionInfo, msg, callback);
|
98
|
98
|
}
|
...
|
...
|
@@ -100,7 +100,7 @@ public abstract class AbstractTransportService implements TransportService { |
100
|
100
|
|
101
|
101
|
@Override
|
102
|
102
|
public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.SubscribeToAttributeUpdatesMsg msg, TransportServiceCallback<Void> callback) {
|
103
|
|
- if (checkLimits(sessionInfo, callback)) {
|
|
103
|
+ if (checkLimits(sessionInfo, msg, callback)) {
|
104
|
104
|
SessionMetaData sessionMetaData = reportActivityInternal(sessionInfo);
|
105
|
105
|
sessionMetaData.setSubscribedToAttributes(!msg.getUnsubscribe());
|
106
|
106
|
doProcess(sessionInfo, msg, callback);
|
...
|
...
|
@@ -109,7 +109,7 @@ public abstract class AbstractTransportService implements TransportService { |
109
|
109
|
|
110
|
110
|
@Override
|
111
|
111
|
public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.SubscribeToRPCMsg msg, TransportServiceCallback<Void> callback) {
|
112
|
|
- if (checkLimits(sessionInfo, callback)) {
|
|
112
|
+ if (checkLimits(sessionInfo, msg, callback)) {
|
113
|
113
|
SessionMetaData sessionMetaData = reportActivityInternal(sessionInfo);
|
114
|
114
|
sessionMetaData.setSubscribedToRPC(!msg.getUnsubscribe());
|
115
|
115
|
doProcess(sessionInfo, msg, callback);
|
...
|
...
|
@@ -118,7 +118,7 @@ public abstract class AbstractTransportService implements TransportService { |
118
|
118
|
|
119
|
119
|
@Override
|
120
|
120
|
public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.ToDeviceRpcResponseMsg msg, TransportServiceCallback<Void> callback) {
|
121
|
|
- if (checkLimits(sessionInfo, callback)) {
|
|
121
|
+ if (checkLimits(sessionInfo, msg, callback)) {
|
122
|
122
|
reportActivityInternal(sessionInfo);
|
123
|
123
|
doProcess(sessionInfo, msg, callback);
|
124
|
124
|
}
|
...
|
...
|
@@ -126,7 +126,7 @@ public abstract class AbstractTransportService implements TransportService { |
126
|
126
|
|
127
|
127
|
@Override
|
128
|
128
|
public void process(TransportProtos.SessionInfoProto sessionInfo, TransportProtos.ToServerRpcRequestMsg msg, TransportServiceCallback<Void> callback) {
|
129
|
|
- if (checkLimits(sessionInfo, callback)) {
|
|
129
|
+ if (checkLimits(sessionInfo, msg, callback)) {
|
130
|
130
|
reportActivityInternal(sessionInfo);
|
131
|
131
|
doProcess(sessionInfo, msg, callback);
|
132
|
132
|
}
|
...
|
...
|
@@ -196,7 +196,10 @@ public abstract class AbstractTransportService implements TransportService { |
196
|
196
|
}
|
197
|
197
|
|
198
|
198
|
@Override
|
199
|
|
- public boolean checkLimits(TransportProtos.SessionInfoProto sessionInfo, TransportServiceCallback<Void> callback) {
|
|
199
|
+ public boolean checkLimits(TransportProtos.SessionInfoProto sessionInfo, Object msg, TransportServiceCallback<Void> callback) {
|
|
200
|
+ if (log.isTraceEnabled()) {
|
|
201
|
+ log.trace("[{}] Processing msg: {}", toId(sessionInfo), msg);
|
|
202
|
+ }
|
200
|
203
|
if (!rateLimitEnabled) {
|
201
|
204
|
return true;
|
202
|
205
|
}
|
...
|
...
|
@@ -206,6 +209,9 @@ public abstract class AbstractTransportService implements TransportService { |
206
|
209
|
if (callback != null) {
|
207
|
210
|
callback.onError(new TbRateLimitsException(EntityType.TENANT));
|
208
|
211
|
}
|
|
212
|
+ if (log.isTraceEnabled()) {
|
|
213
|
+ log.trace("[{}][{}] Tenant level rate limit detected: {}", toId(sessionInfo), tenantId, msg);
|
|
214
|
+ }
|
209
|
215
|
return false;
|
210
|
216
|
}
|
211
|
217
|
DeviceId deviceId = new DeviceId(new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB()));
|
...
|
...
|
@@ -214,8 +220,12 @@ public abstract class AbstractTransportService implements TransportService { |
214
|
220
|
if (callback != null) {
|
215
|
221
|
callback.onError(new TbRateLimitsException(EntityType.DEVICE));
|
216
|
222
|
}
|
|
223
|
+ if (log.isTraceEnabled()) {
|
|
224
|
+ log.trace("[{}][{}] Device level rate limit detected: {}", toId(sessionInfo), deviceId, msg);
|
|
225
|
+ }
|
217
|
226
|
return false;
|
218
|
227
|
}
|
|
228
|
+
|
219
|
229
|
return true;
|
220
|
230
|
}
|
221
|
231
|
|
...
|
...
|
@@ -250,11 +260,11 @@ public abstract class AbstractTransportService implements TransportService { |
250
|
260
|
}
|
251
|
261
|
}
|
252
|
262
|
|
253
|
|
- private UUID toId(TransportProtos.SessionInfoProto sessionInfo) {
|
|
263
|
+ protected UUID toId(TransportProtos.SessionInfoProto sessionInfo) {
|
254
|
264
|
return new UUID(sessionInfo.getSessionIdMSB(), sessionInfo.getSessionIdLSB());
|
255
|
265
|
}
|
256
|
266
|
|
257
|
|
- String getRoutingKey(TransportProtos.SessionInfoProto sessionInfo) {
|
|
267
|
+ protected String getRoutingKey(TransportProtos.SessionInfoProto sessionInfo) {
|
258
|
268
|
return new UUID(sessionInfo.getDeviceIdMSB(), sessionInfo.getDeviceIdLSB()).toString();
|
259
|
269
|
}
|
260
|
270
|
|
...
|
...
|
|