public void untrack(Tuple2<JobID, BlobKey> key) {
        checkNotNull(key);
        checkNotNull(key.f0);
        checkNotNull(key.f1);

        synchronized (lock) {
            blobKeyByJob.computeIfAbsent(key.f0, ignore -> new HashSet<>()).remove(key.f1);

            Long size = caches.remove(key);
            if (size != null) {
                checkState(size >= 0);
                total -= size;
            }
        }
    }
@Test
    void testUntrack() {
        assertThat(tracker.checkLimit(3L)).hasSize(1);
        tracker.untrack(Tuple2.of(jobId, blobKey));

        assertThat(tracker.getSize(jobId, blobKey)).isNull();
        assertThat(tracker.getBlobKeysByJobId(jobId)).isEmpty();
        assertThat(tracker.checkLimit(3L)).isEmpty();
    }