code: public boolean tryProbe(BaseRow record) throws IOException {
  		if (!this.probeIterator.hasSource()) {
  			// set the current probe value when probeIterator is null at the begging.
  			this.probeIterator.setInstance(record);
  		}
  		// calculate the hash
  		BinaryRow probeKey = probeSideProjection.apply(record);
  		final int hash = hash(probeKey.hashCode(), this.currentRecursionDepth);
  
  		BinaryHashPartition p = this.partitionsBeingBuilt.get(hash % partitionsBeingBuilt.size());
  
  		// for an in-memory partition, process set the return iterators, else spill the probe records
  		if (p.isInMemory()) {
  			this.probeKey = probeKey;
  			this.probeRow = record;
  			p.bucketArea.startLookup(hash);
  			return true;
  		} else {
  			if (p.testHashBloomFilter(hash)) {
  				BinaryRow row = originProbeSideSerializer.baseRowToBinary(record);
  				p.insertIntoProbeBuffer(row);
  			}
  			return false;
  		}
  	}
docs: Find matched build side rows for a probe row.
  @return return false if the target partition has spilled, we will spill this probe row too.
  The row will be re-match in rebuild phase.