if (addressList == null) {
addressList = Sets.newHashSet();
chunksMapping.put(chunkId, addressList);
}
for (String host : hosts) {
addressList.add(new ServerAddress(host));
}
ServerAddress address = addressList.iterator().next();
List<ChunkInfo> chunkList = chunksInverseMapping.get(address
.getHost());
if (chunkList == null) {
chunkList = Lists.newArrayList();
chunksInverseMapping.put(address.getHost(), chunkList);
}
ChunkInfo chunkInfo = new ChunkInfo(Arrays.asList(hosts), chunkId);
DBObject minObj = (BasicDBObject) chunkObj.get(MIN);
Map<String, Object> minFilters = Maps.newHashMap();
Map minMap = minObj.toMap();
Set keySet = minMap.keySet();
for (Object keyObj : keySet) {
Object object = minMap.get(keyObj);
if (!(object instanceof MinKey)) {
minFilters.put(keyObj.toString(), object);
}
}
chunkInfo.setMinFilters(minFilters);
DBObject maxObj = (BasicDBObject) chunkObj.get(MAX);
Map<String, Object> maxFilters = Maps.newHashMap();
Map maxMap = maxObj.toMap();
keySet = maxMap.keySet();
for (Object keyObj : keySet) {
Object object = maxMap.get(keyObj);
if (!(object instanceof MaxKey)) {
maxFilters.put(keyObj.toString(), object);
}
}
chunkInfo.setMaxFilters(maxFilters);
chunkList.add(chunkInfo);
}
}
} else {
String chunkName = scanSpec.getDbName() + "."
+ scanSpec.getCollectionName();
List<String> hosts = clientURI.getHosts();
Set<ServerAddress> addressList = Sets.newHashSet();
for (String host : hosts) {
addressList.add(new ServerAddress(host));
}
chunksMapping.put(chunkName, addressList);
String host = hosts.get(0);
ServerAddress address = new ServerAddress(host);
ChunkInfo chunkInfo = new ChunkInfo(hosts, chunkName);
chunkInfo.setMinFilters(Collections.<String, Object> emptyMap());
chunkInfo.setMaxFilters(Collections.<String, Object> emptyMap());
List<ChunkInfo> chunksList = Lists.newArrayList();
chunksList.add(chunkInfo);
chunksInverseMapping.put(address.getHost(), chunksList);
}
} catch (UnknownHostException e) {
throw new DrillRuntimeException(e.getMessage(), e);
} finally {
if (client != null) {