/** * Gets creator node. * * @return Creator node ID. */ public UUID creatorNodeId() { return id.globalId(); }
/** {@inheritDoc} */ @Override public int compareTo(IgniteUuid o) { if (o == this) return 0; if (o == null) return 1; int res = Long.compare(locId, o.locId); if (res == 0) res = gid.compareTo(o.globalId()); return res; }
/** * Check whether provided ID is trash ID. * * @param id ID. * @return {@code True} if this is trash ID. */ private static boolean isTrashId(IgniteUuid id) { if (id == null) return false; UUID gid = id.globalId(); return id.localId() == 0 && gid.getMostSignificantBits() == 0 && gid.getLeastSignificantBits() > 0 && gid.getLeastSignificantBits() <= TRASH_CONCURRENCY; }
/** * Writes {@link org.apache.ignite.lang.IgniteUuid} to output stream. This method is meant to be used by * implementations of {@link Externalizable} interface. * * @param out Output stream. * @param uid UUID to write. * @throws IOException If write failed. */ public static void writeGridUuid(DataOutput out, IgniteUuid uid) throws IOException { // Write null flag. out.writeBoolean(uid == null); if (uid != null) { out.writeLong(uid.globalId().getMostSignificantBits()); out.writeLong(uid.globalId().getLeastSignificantBits()); out.writeLong(uid.localId()); } }
/** * @param sndId Sender. * @param ldrId Loader ID. * @param userVer User version. * @param depMode Deployment mode. * @param participants Participants. */ private CachedDeploymentInfo(UUID sndId, IgniteUuid ldrId, String userVer, DeploymentMode depMode, Map<UUID, IgniteUuid> participants) { assert sndId.equals(ldrId.globalId()) || participants != null; this.sndId = sndId; this.ldrId = ldrId; this.userVer = userVer; this.depMode = depMode; this.participants = participants == null || participants.isEmpty() ? null : new ConcurrentLinkedHashMap<>(participants); }
/** * Adds new node and remote class loader id to this class loader. * Class loader will ask all associated nodes for the class/resource * until find it. * * @param nodeId Participating node ID. * @param ldrId Participating class loader id. */ void register(UUID nodeId, IgniteUuid ldrId) { assert nodeId != null; assert ldrId != null; assert nodeId.equals(ldrId.globalId()); assert !singleNode; synchronized (mux) { if (missedRsrcs != null) missedRsrcs.clear(); /* * We need to put passed in node into the * first position in the list. */ // 1. Remove passed in node if any. nodeList.remove(nodeId); // 2. Add passed in node to the first position. nodeList.addFirst(nodeId); // 3. Put to map. nodeLdrMap.put(nodeId, ldrId); } }
/** * Converts GridUuid to bytes. * * @param uuid GridUuid to convert. * @param out Output array to write to. * @param off Offset from which to write. */ public static void igniteUuidToBytes(IgniteUuid uuid, byte[] out, int off) { assert uuid != null; longToBytes(uuid.globalId().getMostSignificantBits(), out, off); longToBytes(uuid.globalId().getLeastSignificantBits(), out, off + 8); longToBytes(uuid.localId(), out, off + 16); }
/** * @param newParticipants Participants to add. * @param cctx Cache context. * @return {@code True} if cached info is valid. */ boolean addParticipants(Map<UUID, IgniteUuid> newParticipants, GridCacheSharedContext<K, V> cctx) { participantsLock.readLock().lock(); try { if (participants != null && participants.isEmpty()) return false; for (Map.Entry<UUID, IgniteUuid> e : newParticipants.entrySet()) { assert e.getKey().equals(e.getValue().globalId()); if (cctx.discovery().node(e.getKey()) != null) // Participant has left. continue; if (participants == null) participants = new ConcurrentLinkedHashMap<>(); if (!participants.containsKey(e.getKey())) participants.put(e.getKey(), e.getValue()); } return true; } finally { participantsLock.readLock().unlock(); } }
/** * Write {@code IgniteUuid} instance. * * @param out Writer. * @param val Value. */ public static void writeIgniteUuid(BinaryRawWriter out, @Nullable IgniteUuid val) { if (val != null) { out.writeBoolean(true); out.writeLong(val.globalId().getMostSignificantBits()); out.writeLong(val.globalId().getLeastSignificantBits()); out.writeLong(val.localId()); } else out.writeBoolean(false); }
/** {@inheritDoc} */ @Override public void writeIgniteUuid(IgniteUuid val) { switch (uuidState) { case 0: writeBoolean(val == null); if (!lastFinished || val == null) return; uuidState++; case 1: writeLong(val.globalId().getMostSignificantBits()); if (!lastFinished) return; uuidState++; case 2: writeLong(val.globalId().getLeastSignificantBits()); if (!lastFinished) return; uuidState++; case 3: writeLong(val.localId()); if (!lastFinished) return; uuidState = 0; } }
/** * Writes IgniteUuid to a writer. * * @param writer Writer. * @param val Values. */ public static void writeIgniteUuid(BinaryRawWriterEx writer, IgniteUuid val) { if (val == null) writer.writeUuid(null); else { writer.writeUuid(val.globalId()); writer.writeLong(val.localId()); } }
/** * Adds deployment info to deployment contexts queue. * * @param info Info to add. */ public void addDeploymentContext(GridDeploymentInfo info) { IgniteUuid ldrId = info.classLoaderId(); while (true) { CachedDeploymentInfo<K, V> depInfo = deps.get(ldrId); if (depInfo == null) { depInfo = new CachedDeploymentInfo<>(ldrId.globalId(), ldrId, info.userVersion(), info.deployMode(), info.participants()); CachedDeploymentInfo<K, V> old = deps.putIfAbsent(ldrId, depInfo); if (old != null) depInfo = old; else break; } Map<UUID, IgniteUuid> participants = info.participants(); if (participants != null) { if (!depInfo.addParticipants(participants, cctx)) { deps.remove(ldrId, depInfo); continue; } } break; } }
assert log != null; assert clsLdrId != null; assert nodeId.equals(clsLdrId.globalId());
/** * Gets creator node. * * @return Creator node ID. */ public UUID creatorNodeId() { return id.globalId(); }
/** {@inheritDoc} */ @Override public int compareTo(IgniteUuid o) { if (o == this) return 0; if (o == null) return 1; int res = Long.compare(locId, o.locId); if (res == 0) res = gid.compareTo(o.globalId()); return res; }
/** * Check whether provided ID is trash ID. * * @param id ID. * @return {@code True} if this is trash ID. */ private static boolean isTrashId(IgniteUuid id) { if (id == null) return false; UUID gid = id.globalId(); return id.localId() == 0 && gid.getMostSignificantBits() == 0 && gid.getLeastSignificantBits() > 0 && gid.getLeastSignificantBits() <= TRASH_CONCURRENCY; }
/** * @param sndId Sender. * @param ldrId Loader ID. * @param userVer User version. * @param depMode Deployment mode. * @param participants Participants. */ private CachedDeploymentInfo(UUID sndId, IgniteUuid ldrId, String userVer, DeploymentMode depMode, Map<UUID, IgniteUuid> participants) { assert sndId.equals(ldrId.globalId()) || participants != null; this.sndId = sndId; this.ldrId = ldrId; this.userVer = userVer; this.depMode = depMode; this.participants = participants == null || participants.isEmpty() ? null : new ConcurrentLinkedHashMap<>(participants); }
/** * Converts GridUuid to bytes. * * @param uuid GridUuid to convert. * @param out Output array to write to. * @param off Offset from which to write. */ public static void igniteUuidToBytes(IgniteUuid uuid, byte[] out, int off) { assert uuid != null; longToBytes(uuid.globalId().getMostSignificantBits(), out, off); longToBytes(uuid.globalId().getLeastSignificantBits(), out, off + 8); longToBytes(uuid.localId(), out, off + 16); }
/** * Write {@code IgniteUuid} instance. * * @param out Writer. * @param val Value. */ public static void writeIgniteUuid(BinaryRawWriter out, @Nullable IgniteUuid val) { if (val != null) { out.writeBoolean(true); out.writeLong(val.globalId().getMostSignificantBits()); out.writeLong(val.globalId().getLeastSignificantBits()); out.writeLong(val.localId()); } else out.writeBoolean(false); }
/** * Writes IgniteUuid to a writer. * * @param writer Writer. * @param val Values. */ public static void writeIgniteUuid(BinaryRawWriterEx writer, IgniteUuid val) { if (val == null) writer.writeUuid(null); else { writer.writeUuid(val.globalId()); writer.writeLong(val.localId()); } }