commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (JCS-156) BlockDiskCache is limited to 2GB.
Date Mon, 13 Jun 2016 14:22:21 GMT

    [ https://issues.apache.org/jira/browse/JCS-156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15327469#comment-15327469
] 

Sebb commented on JCS-156:
--------------------------

I agree - there are lots of places where it is assumed that a block number is an int.
Changing this would break BC unless new methods were added, and anyway that would not stop
existing code from breaking.

Seems to me the simplest fix (short of a complete redesign) is to detect the problem earlier
and throw a better Exception.

> BlockDiskCache is limited to 2GB.
> ---------------------------------
>
>                 Key: JCS-156
>                 URL: https://issues.apache.org/jira/browse/JCS-156
>             Project: Commons JCS
>          Issue Type: Bug
>          Components: Composite Cache
>    Affects Versions: jcs-2.0-beta-1
>            Reporter: Alexander Malyshev
>            Assignee: Thomas Vandahl
>         Attachments: jcs.patch
>
>
> 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.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message