Added protocol field to servers in pull list.
}
type ReadCollections struct {
- ReadAllCollections bool
- UuidToCollection map[string]Collection
- OwnerToCollectionSize map[string]int
- BlockToReplication map[blockdigest.DigestWithSize]int
- CollectionUuidToIndex map[string]int
- CollectionIndexToUuid []string
- BlockToCollectionIndices map[blockdigest.DigestWithSize][]int
+ ReadAllCollections bool
+ UuidToCollection map[string]Collection
+ OwnerToCollectionSize map[string]int
+ BlockToDesiredReplication map[blockdigest.DigestWithSize]int
+ CollectionUuidToIndex map[string]int
+ CollectionIndexToUuid []string
+ BlockToCollectionIndices map[blockdigest.DigestWithSize][]int
}
type GetCollectionsParams struct {
func (readCollections *ReadCollections) Summarize(arvLogger *logger.Logger) {
readCollections.OwnerToCollectionSize = make(map[string]int)
- readCollections.BlockToReplication = make(map[blockdigest.DigestWithSize]int)
+ readCollections.BlockToDesiredReplication = make(map[blockdigest.DigestWithSize]int)
numCollections := len(readCollections.UuidToCollection)
readCollections.CollectionUuidToIndex = make(map[string]int, numCollections)
readCollections.CollectionIndexToUuid = make([]string, 0, numCollections)
readCollections.BlockToCollectionIndices[locator] =
append(readCollections.BlockToCollectionIndices[locator],
collectionIndex)
- storedReplication := readCollections.BlockToReplication[locator]
+ storedReplication := readCollections.BlockToDesiredReplication[locator]
if coll.ReplicationLevel > storedReplication {
- readCollections.BlockToReplication[locator] = coll.ReplicationLevel
+ readCollections.BlockToDesiredReplication[locator] =
+ coll.ReplicationLevel
}
}
}
collectionInfo["owner_to_collection_size"] =
readCollections.OwnerToCollectionSize
collectionInfo["distinct_blocks_named"] =
- len(readCollections.BlockToReplication)
+ len(readCollections.BlockToDesiredReplication)
})
}
// indeterminate, we replace BlockToCollectionIndices with
// BlockToCollectionUuids.
type ExpectedSummary struct {
- OwnerToCollectionSize map[string]int
- BlockToReplication map[blockdigest.DigestWithSize]int
- BlockToCollectionUuids map[blockdigest.DigestWithSize][]string
+ OwnerToCollectionSize map[string]int
+ BlockToDesiredReplication map[blockdigest.DigestWithSize]int
+ BlockToCollectionUuids map[blockdigest.DigestWithSize][]string
}
func CompareSummarizedReadCollections(c *C,
c.Assert(summarized.OwnerToCollectionSize, DeepEquals,
expected.OwnerToCollectionSize)
- c.Assert(summarized.BlockToReplication, DeepEquals,
- expected.BlockToReplication)
+ c.Assert(summarized.BlockToDesiredReplication, DeepEquals,
+ expected.BlockToDesiredReplication)
summarizedBlockToCollectionUuids :=
make(map[blockdigest.DigestWithSize]map[string]struct{})
blockDigest2 := blockdigest.MakeTestDigestWithSize(2)
expected := ExpectedSummary{
- OwnerToCollectionSize: map[string]int{c.OwnerUuid: c.TotalSize},
- BlockToReplication: map[blockdigest.DigestWithSize]int{blockDigest1: 5, blockDigest2: 5},
- BlockToCollectionUuids: map[blockdigest.DigestWithSize][]string{blockDigest1: []string{c.Uuid}, blockDigest2: []string{c.Uuid}},
+ OwnerToCollectionSize: map[string]int{c.OwnerUuid: c.TotalSize},
+ BlockToDesiredReplication: map[blockdigest.DigestWithSize]int{blockDigest1: 5, blockDigest2: 5},
+ BlockToCollectionUuids: map[blockdigest.DigestWithSize][]string{blockDigest1: []string{c.Uuid}, blockDigest2: []string{c.Uuid}},
}
CompareSummarizedReadCollections(checker, rc, expected)
c0.OwnerUuid: c0.TotalSize,
c1.OwnerUuid: c1.TotalSize,
},
- BlockToReplication: map[blockdigest.DigestWithSize]int{
+ BlockToDesiredReplication: map[blockdigest.DigestWithSize]int{
blockDigest1: 5,
blockDigest2: 8,
blockDigest3: 8,
log.Printf("Blocks In Collections: %d, "+
"\nBlocks In Keep: %d.",
- len(readCollections.BlockToReplication),
+ len(readCollections.BlockToDesiredReplication),
len(keepServerInfo.BlockToServers))
log.Println(replicationCounts.PrettyPrint())
pullServers := summary.ComputePullServers(kc,
&keepServerInfo,
- readCollections.BlockToReplication,
+ readCollections.BlockToDesiredReplication,
replicationSummary.UnderReplicatedBlocks)
pullLists := summary.BuildPullLists(pullServers)
type Locator blockdigest.DigestWithSize
func (l Locator) MarshalJSON() ([]byte, error) {
- //return []byte("\"" + l.Digest.String() + "\""), nil
return []byte("\"" + blockdigest.DigestWithSize(l).String() + "\""), nil
}
server := cs.Get(RemoveProtocolPrefix(host))
_, hasBlock := serverHasBlock[server]
if hasBlock {
- ps.From = append(ps.From, server)
+ // The from field should include the protocol.
+ ps.From = append(ps.From, cs.Get(host))
} else if len(ps.To) < maxToFields {
_, writable := writableServers[server]
if writable {
keepServerInfo keep.ReadServers) (rlbsm ReplicationLevelBlockSetMap) {
rlbsm = make(ReplicationLevelBlockSetMap)
- for block, requestedReplication := range readCollections.BlockToReplication {
+ for block, requestedReplication := range readCollections.BlockToDesiredReplication {
rlbsm.Insert(
ReplicationLevels{
Requested: requestedReplication,
}
for block, servers := range keepServerInfo.BlockToServers {
- if 0 == readCollections.BlockToReplication[block] {
+ if 0 == readCollections.BlockToDesiredReplication[block] {
rlbsm.Insert(
ReplicationLevels{Requested: 0, Actual: len(servers)},
block)