Closed abyrd closed 5 years ago
As expected restarting the backend cleared out the malfunctioning map, but why did this ever happen in the first place? We are currently using what appears to be the latest version of trove4j 3.4.3, which hasn't been updated since 2013. Maybe we're somehow generating zillions of different network IDs and inserting them in a loop but that seems unlikely.
We think this has been solved by PR #201. This non-threadsafe map was being updated by multiple threads. The error message was probably meaningless - interleaved reads and writes from multiple threads were probably just trashing the whole data structure in some unpredictable way. We're now using synchronized data structures.
When starting a single point analysis for which no workers are running, I'm seeing:
Other users are also seeing this around the same time.
The line that appears to be failing is:
recentlyRequestedWorkers.put(category, System.currentTimeMillis());
How can the key set of and Object-int map be full? If this is a problem with the width of the index variable, how could we have anywhere near the 2 giga-entries that a signed int would allow?
I'm going to guess this is a bug in Trove and advocate upgrading to a newer version.