Skip to content

Commit 9974d74

Browse files
berthougGautier Berthou
authored and
Gautier Berthou
committed
[HOPS-480] replace full table scan by primary key operation
1 parent a3d1943 commit 9974d74

File tree

1 file changed

+21
-14
lines changed

1 file changed

+21
-14
lines changed

src/main/java/io/hops/metadata/ndb/dalimpl/hdfs/BlockInfoClusterj.java

+21-14
Original file line numberDiff line numberDiff line change
@@ -316,23 +316,30 @@ public List<BlockInfo> findByIds(long[] blockIds, int[] inodeIds)
316316
return blks;
317317
}
318318

319-
public boolean existsOnAnyStorage(long blockId, List<Integer> sids) throws
319+
public boolean existsOnAnyStorage(int inodeId, long blockId, List<Integer> sids) throws
320320
StorageException {
321321
HopsSession session = connector.obtainSession();
322-
HopsQueryBuilder qb = session.getQueryBuilder();
323-
HopsQueryDomainType<ReplicaClusterj.ReplicaDTO> dobj =
324-
qb.createQueryDefinition(ReplicaClusterj.ReplicaDTO.class);
325-
326-
HopsPredicate pred1 = dobj.get("blockId").equal(dobj.param("blockId"));
327-
HopsPredicate pred2 = dobj.get("storageId").in(dobj.param("sids"));
328-
dobj.where(pred1.and(pred2));
329-
330-
HopsQuery<ReplicaClusterj.ReplicaDTO> query = session.createQuery(dobj);
331-
332-
query.setParameter("blockId", blockId);
333-
query.setParameter("sids", sids);
322+
323+
List<ReplicaClusterj.ReplicaDTO> dtos = new ArrayList<>();
324+
for(Integer sid: sids){
325+
Object[] pk = new Object[]{inodeId, blockId, sid};
326+
ReplicaClusterj.ReplicaDTO dto = session.newInstance(ReplicaClusterj.ReplicaDTO.class, pk);
327+
dto.setHashBucket(NOT_FOUND_ROW);
328+
dto = session.load(dto);
329+
dtos.add(dto);
330+
331+
}
332+
session.flush();
333+
boolean exist = false;
334+
for(ReplicaClusterj.ReplicaDTO dto: dtos){
335+
if(dto.getHashBucket()!=NOT_FOUND_ROW){
336+
exist = true;
337+
break;
338+
}
339+
}
340+
session.release(dtos);
334341

335-
return query.getResultList().size() > 0;
342+
return exist;
336343
}
337344

338345
private List<BlockInfo> readBlockInfoBatch(final HopsSession session,

0 commit comments

Comments
 (0)