We are using prepared statement to insert data into database in an online mission critical process with environment JDK 220.127.116.11.
We are using HashMap.get for populating values in prepared statement.
In some cases the call to HashMap.get is blocked/halted. The stat of thread is "Runnable" in profiling report. The occurrence of that specific issue is _20_ in _120k_ calls.
The respective database session is showing the last executed query in database session, but actually the data is never inserted, the state of database session is "net-norm", a normal db conditional wait state. The thread never come backs and we have to kill db session manually.
We are suspecting and profiling report is showing that that HashMap.get is blocking our process.
Edited by: k5m on Dec 27, 2011 5:12 PM
You may want to check if your updating the HashMap concurrently. If you are then the HashMap can get internally corrupt (The items in one bucket can get a circular linked reference) and result in a infinite loop upon calling get(). If this is the case use ConcurrentHashMap instead.