docs: public void close() {
  		// make sure that we close only once
  		if (!this.closed.compareAndSet(false, true)) {
  			return;
  		}
  
  		// clear the current probe side channel, if there is one
  		if (this.currentSpilledProbeSide != null) {
  			try {
  				this.currentSpilledProbeSide.getChannel().closeAndDelete();
  			} catch (Throwable t) {
  				LOG.warn("Could not close and delete the temp file for the current spilled partition probe side.", t);
  			}
  		}
  
  		// clear the memory in the partitions
  		clearPartitions();
  
  		// return the write-behind buffers
  		for (int i = 0; i < this.buildSpillRetBufferNumbers; i++) {
  			try {
  				this.availableMemory.add(this.buildSpillReturnBuffers.take());
  			} catch (InterruptedException iex) {
  				throw new RuntimeException("Hashtable closing was interrupted");
  			}
  		}
  		this.buildSpillRetBufferNumbers = 0;
  	}