Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Incomplete
-
jcs-2.0-beta-1
-
None
Description
There is a bug in BlockDiskCache which makes it limited to 2GB in size. If I try to write more, I'm getting the following exception:
Exception in thread "CacheEventQueue.QProcessor-sliderCache" java.lang.IllegalArgumentException: Negative position
at sun.nio.ch.FileChannelImpl.write(FileChannelImpl.java:754)
at org.apache.commons.jcs.auxiliary.disk.block.BlockDisk.write(BlockDisk.java:216)
at org.apache.commons.jcs.auxiliary.disk.block.BlockDiskCache.processUpdate(BlockDiskCache.java:394)
at org.apache.commons.jcs.auxiliary.AbstractAuxiliaryCacheEventLogging.updateWithEventLogging(AbstractAuxiliaryCacheEventLogging.java:65)
at org.apache.commons.jcs.auxiliary.disk.AbstractDiskCache.doUpdate(AbstractDiskCache.java:804)
at org.apache.commons.jcs.auxiliary.disk.AbstractDiskCache$MyCacheListener.handlePut(AbstractDiskCache.java:662)
at org.apache.commons.jcs.engine.AbstractCacheEventQueue$PutEvent.doRun(AbstractCacheEventQueue.java:350)
at org.apache.commons.jcs.engine.AbstractCacheEventQueue$AbstractCacheEvent.run(AbstractCacheEventQueue.java:269)
at org.apache.commons.jcs.engine.CacheEventQueue$QProcessor.run(CacheEventQueue.java:304)
The reason is that method calculateByteOffsetForBlock in BlockDisk class returns int instead of long.