BufferFrontedFileStoreCache.maxMemoryBlocks is under-estimated. For example, when max-storage-object-size=8000000, maxMemoryBlocks is 488 at the line #575 in org.teiid.common.buffer.impl.BufferFrontedFileStoreCache.initialize() (after that, it is decrimented some times, but it does not matter). main[1] run > Breakpoint hit: "thread=MSC service thread 1-3", org.teiid.common.buffer.impl.BufferFrontedFileStoreCache.initialize(), line=573 bci=163 573 maxMemoryBlocks = Math.min(maxMemoryBlocks, maxStorageObjectSize>>LOG_BLOCK_SIZE + ((maxStorageObjectSize&BufferFrontedFileStoreCache.BLOCK_MASK)>0?1:0)); MSC service thread 1-3[1] next > Step completed: "thread=MSC service thread 1-3", org.teiid.common.buffer.impl.BufferFrontedFileStoreCache.initialize(), line=575 bci=198 575 cleaningThreshold = Math.min(maxMemoryBlocks<<4, blocks>>1); MSC service thread 1-3[1] dump this this = { ...snip... maxStorageObjectSize: 8000000 ...snip... maxMemoryBlocks: 488 An actual cache object size for maxMemoryBlocks: 488 is roughly:- 8192 * 488 = 3997696 It is less than half of maxStorageObjectSize. It sometimes causes TEIID30001. Steps to reproduce: 1. set 8000000 to max-storage-object-size 2. attach a debugger to JDV and observe maxMemoryBlocks
Steven Hawkins <shawkins> updated the status of jira TEIID-3443 to Resolved
Steven Hawkins <shawkins> updated the status of jira TEIID-3443 to Closed