|
76 | 76 | import org.apache.ignite.internal.util.lang.gridfunc.ReadOnlyCollectionView2X; |
77 | 77 | import org.apache.ignite.internal.util.typedef.CI1; |
78 | 78 | import org.apache.ignite.internal.util.typedef.F; |
| 79 | +import org.apache.ignite.internal.util.typedef.X; |
79 | 80 | import org.apache.ignite.internal.util.typedef.internal.LT; |
80 | 81 | import org.apache.ignite.internal.util.typedef.internal.S; |
81 | 82 | import org.apache.ignite.internal.util.typedef.internal.U; |
@@ -1094,6 +1095,14 @@ private void processStopRequest(ClusterNode snd, StopRoutineDiscoveryMessage msg |
1094 | 1095 | } |
1095 | 1096 | } |
1096 | 1097 |
|
| 1098 | + /** */ |
| 1099 | + private boolean checkNodeFilter(StartRequestData reqData) { |
| 1100 | + IgnitePredicate<ClusterNode> nodeFilter; |
| 1101 | + |
| 1102 | + return reqData == null || (nodeFilter = reqData.nodeFilter()) == null |
| 1103 | + || nodeFilter.apply(ctx.discovery().localNode()); |
| 1104 | + } |
| 1105 | + |
1097 | 1106 | /** |
1098 | 1107 | * @param sndId Sender node ID. |
1099 | 1108 | * @param msg Message. |
@@ -1152,6 +1161,12 @@ private void processStartRequest(final AffinityTopologyVersion topVer, |
1152 | 1161 | U.error(log, "Failed to unmarshal continuous request data [" + |
1153 | 1162 | "routineId=" + msg.routineId + |
1154 | 1163 | ", srcNodeId=" + snd.id() + ']', e); |
| 1164 | + |
| 1165 | + if (X.hasCause(e, ClassNotFoundException.class) && !checkNodeFilter(reqData)) { |
| 1166 | + sendMessageStartResult(snd, msg.routineId(), null, null); |
| 1167 | + |
| 1168 | + return; |
| 1169 | + } |
1155 | 1170 | } |
1156 | 1171 |
|
1157 | 1172 | IgnitePredicate<ClusterNode> nodeFilter = reqData.nodeFilter(); |
|
0 commit comments