I have some Java service code in production (not written by me!) that does something similar to:
IDataCursor cursor = pipeline.getCursor(); # do something with cursor cursor.destroy(); cursor.next(); String key = cursor.getKey(); String value = cursor.getString(); # and so on.
So, it works with an IDataCursor that has been returned to the pool using the destroy() method.
The service works fine on a lightly loaded system, and appears to work most of the time on our production system, but hangs at arbitrary times. That makes sense to me - some other service gets the cursor from the pool, now two services are sharing the same cursor - some very specific timing occurs that causes the service to hang.
To satisfy my management though, I need to reproduce the hang on a development system. It seems to me that the surest way to do this is to reduce the size of the cursor pool, so the destroyed cursor is more likely to get reused.
Does anyone know a way to do this (or have some other suggestion)