private void PutInternal(DatanodeID dnId, Peer peer) { lock (this) { StartExpiryDaemon(); if (capacity == multimap.Size()) { EvictOldest(); } multimap.Put(new PeerCache.Key(dnId, peer.GetDomainSocket() != null), new PeerCache.Value (peer, Time.MonotonicNow())); } }
private DatanodeStorageInfo[] ScheduleSingleReplication(Block block) { // list for priority 1 IList <Block> list_p1 = new AList <Block>(); list_p1.AddItem(block); // list of lists for each priority IList <IList <Block> > list_all = new AList <IList <Block> >(); list_all.AddItem(new AList <Block>()); // for priority 0 list_all.AddItem(list_p1); // for priority 1 NUnit.Framework.Assert.AreEqual("Block not initially pending replication", 0, bm. pendingReplications.GetNumReplicas(block)); NUnit.Framework.Assert.AreEqual("computeReplicationWork should indicate replication is needed" , 1, bm.ComputeReplicationWorkForBlocks(list_all)); NUnit.Framework.Assert.IsTrue("replication is pending after work is computed", bm .pendingReplications.GetNumReplicas(block) > 0); LinkedListMultimap <DatanodeStorageInfo, DatanodeDescriptor.BlockTargetPair> repls = GetAllPendingReplications(); NUnit.Framework.Assert.AreEqual(1, repls.Size()); KeyValuePair <DatanodeStorageInfo, DatanodeDescriptor.BlockTargetPair> repl = repls .Entries().GetEnumerator().Next(); DatanodeStorageInfo[] targets = repl.Value.targets; DatanodeStorageInfo[] pipeline = new DatanodeStorageInfo[1 + targets.Length]; pipeline[0] = repl.Key; System.Array.Copy(targets, 0, pipeline, 1, targets.Length); return(pipeline); }