When looking up an address contaning a field value that doesn't exist, IdService will allocate a unique ID for that field value. Reads should never allocate unique IDs.
So
IdService.getId(int dimensionNum, byte[] input, int numIdBytes)
should change to something like
IdService.getId(int dimensionNum, byte[] input, int numIdBytes, boolean allocateIfAbsent)
When looking up an address contaning a field value that doesn't exist, IdService will allocate a unique ID for that field value. Reads should never allocate unique IDs.
So
IdService.getId(int dimensionNum, byte[] input, int numIdBytes)
should change to something like
IdService.getId(int dimensionNum, byte[] input, int numIdBytes, boolean allocateIfAbsent)