Commit c7dd62485935114e13f6769f7ceed61dd4e01494

Authored by Volodymyr Babak
2 parents 9bce47cd 8c45bf97

Merge remote-tracking branch 'origin/develop/2.6-edge' into develop/3.3-edge

@@ -115,11 +115,24 @@ public class AnnotationComponentDiscoveryService implements ComponentDiscoverySe @@ -115,11 +115,24 @@ public class AnnotationComponentDiscoveryService implements ComponentDiscoverySe
115 } 115 }
116 116
117 private void putComponentIntoMaps(ComponentType type, RuleNode ruleNodeAnnotation, ComponentDescriptor component) { 117 private void putComponentIntoMaps(ComponentType type, RuleNode ruleNodeAnnotation, ComponentDescriptor component) {
118 - if (ruleChainTypeContainsArray(RuleChainType.CORE, ruleNodeAnnotation.ruleChainTypes())) {  
119 - coreComponentsMap.computeIfAbsent(type, k -> new ArrayList<>()).add(component); 118 + boolean ruleChainTypesMethodAvailable;
  119 + try {
  120 + ruleNodeAnnotation.getClass().getMethod("ruleChainTypes");
  121 + ruleChainTypesMethodAvailable = true;
  122 + } catch (NoSuchMethodException exception) {
  123 + log.warn("[{}] does not have ruleChainTypes. Probably extension class compiled before 3.3 release. " +
  124 + "Please update your extensions and compile using latest 3.3 release dependency", ruleNodeAnnotation.name());
  125 + ruleChainTypesMethodAvailable = false;
120 } 126 }
121 - if (ruleChainTypeContainsArray(RuleChainType.EDGE, ruleNodeAnnotation.ruleChainTypes())) {  
122 - edgeComponentsMap.computeIfAbsent(type, k -> new ArrayList<>()).add(component); 127 + if (ruleChainTypesMethodAvailable) {
  128 + if (ruleChainTypeContainsArray(RuleChainType.CORE, ruleNodeAnnotation.ruleChainTypes())) {
  129 + coreComponentsMap.computeIfAbsent(type, k -> new ArrayList<>()).add(component);
  130 + }
  131 + if (ruleChainTypeContainsArray(RuleChainType.EDGE, ruleNodeAnnotation.ruleChainTypes())) {
  132 + edgeComponentsMap.computeIfAbsent(type, k -> new ArrayList<>()).add(component);
  133 + }
  134 + } else {
  135 + coreComponentsMap.computeIfAbsent(type, k -> new ArrayList<>()).add(component);
123 } 136 }
124 } 137 }
125 138
@@ -161,7 +161,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i @@ -161,7 +161,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i
161 public void deleteEdge(EdgeId edgeId) { 161 public void deleteEdge(EdgeId edgeId) {
162 EdgeGrpcSession session = sessions.get(edgeId); 162 EdgeGrpcSession session = sessions.get(edgeId);
163 if (session != null && session.isConnected()) { 163 if (session != null && session.isConnected()) {
164 - log.debug("Closing and removing session for edge [{}]", edgeId); 164 + log.info("Closing and removing session for edge [{}]", edgeId);
165 session.close(); 165 session.close();
166 sessions.remove(edgeId); 166 sessions.remove(edgeId);
167 sessionNewEvents.remove(edgeId); 167 sessionNewEvents.remove(edgeId);
@@ -179,11 +179,12 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i @@ -179,11 +179,12 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i
179 } 179 }
180 180
181 private void onEdgeConnect(EdgeId edgeId, EdgeGrpcSession edgeGrpcSession) { 181 private void onEdgeConnect(EdgeId edgeId, EdgeGrpcSession edgeGrpcSession) {
182 - log.debug("[{}] onEdgeConnect [{}]", edgeId, edgeGrpcSession.getSessionId()); 182 + log.info("[{}] edge [{}] connected successfully.", edgeGrpcSession.getSessionId(), edgeId);
183 sessions.put(edgeId, edgeGrpcSession); 183 sessions.put(edgeId, edgeGrpcSession);
184 sessionNewEvents.put(edgeId, false); 184 sessionNewEvents.put(edgeId, false);
185 save(edgeId, DefaultDeviceStateService.ACTIVITY_STATE, true); 185 save(edgeId, DefaultDeviceStateService.ACTIVITY_STATE, true);
186 save(edgeId, DefaultDeviceStateService.LAST_CONNECT_TIME, System.currentTimeMillis()); 186 save(edgeId, DefaultDeviceStateService.LAST_CONNECT_TIME, System.currentTimeMillis());
  187 + cancelScheduleEdgeEventsCheck(edgeId);
187 scheduleEdgeEventsCheck(edgeGrpcSession); 188 scheduleEdgeEventsCheck(edgeGrpcSession);
188 } 189 }
189 190
@@ -214,7 +215,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i @@ -214,7 +215,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i
214 scheduleEdgeEventsCheck(session); 215 scheduleEdgeEventsCheck(session);
215 }, ctx.getEdgeEventStorageSettings().getNoRecordsSleepInterval(), TimeUnit.MILLISECONDS); 216 }, ctx.getEdgeEventStorageSettings().getNoRecordsSleepInterval(), TimeUnit.MILLISECONDS);
216 sessionEdgeEventChecks.put(edgeId, schedule); 217 sessionEdgeEventChecks.put(edgeId, schedule);
217 - log.trace("[{}] Check edge event was scheduler for edge [{}]", tenantId, edgeId.getId()); 218 + log.trace("[{}] Check edge event scheduled for edge [{}]", tenantId, edgeId.getId());
218 } else { 219 } else {
219 log.debug("[{}] Session was removed and edge event check schedule must not be started [{}]", 220 log.debug("[{}] Session was removed and edge event check schedule must not be started [{}]",
220 tenantId, edgeId.getId()); 221 tenantId, edgeId.getId());
@@ -222,6 +223,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i @@ -222,6 +223,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i
222 } 223 }
223 224
224 private void cancelScheduleEdgeEventsCheck(EdgeId edgeId) { 225 private void cancelScheduleEdgeEventsCheck(EdgeId edgeId) {
  226 + log.trace("[{}] cancelling edge event check for edge", edgeId);
225 if (sessionEdgeEventChecks.containsKey(edgeId)) { 227 if (sessionEdgeEventChecks.containsKey(edgeId)) {
226 ScheduledFuture<?> sessionEdgeEventCheck = sessionEdgeEventChecks.get(edgeId); 228 ScheduledFuture<?> sessionEdgeEventCheck = sessionEdgeEventChecks.get(edgeId);
227 if (sessionEdgeEventCheck != null && !sessionEdgeEventCheck.isCancelled() && !sessionEdgeEventCheck.isDone()) { 229 if (sessionEdgeEventCheck != null && !sessionEdgeEventCheck.isCancelled() && !sessionEdgeEventCheck.isDone()) {
@@ -232,7 +234,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i @@ -232,7 +234,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i
232 } 234 }
233 235
234 private void onEdgeDisconnect(EdgeId edgeId) { 236 private void onEdgeDisconnect(EdgeId edgeId) {
235 - log.debug("[{}] onEdgeDisconnect", edgeId); 237 + log.info("[{}] edge disconnected!", edgeId);
236 sessions.remove(edgeId); 238 sessions.remove(edgeId);
237 sessionNewEvents.remove(edgeId); 239 sessionNewEvents.remove(edgeId);
238 save(edgeId, DefaultDeviceStateService.ACTIVITY_STATE, false); 240 save(edgeId, DefaultDeviceStateService.ACTIVITY_STATE, false);