This is an automated email from the ASF dual-hosted git repository.
ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 7c0abb78ebe IGNITE-24684 Remove IoStatisticsHolder from the code
(#5329)
7c0abb78ebe is described below
commit 7c0abb78ebe889b77083a25c6b61cf5e12183988
Author: Ivan Bessonov <[email protected]>
AuthorDate: Mon Mar 3 13:33:14 2025 +0300
IGNITE-24684 Remove IoStatisticsHolder from the code (#5329)
---
.../tree/AbstractBplusTreeReusePageMemoryTest.java | 4 +-
.../ignite/internal/pagememory/PageSupport.java | 13 ---
.../pagememory/datapage/DataPageReader.java | 12 +--
.../datapage/NonFragmentableDataPageReader.java | 12 +--
.../pagememory/datastructure/DataStructure.java | 45 +++------
.../internal/pagememory/freelist/FreeListImpl.java | 107 ++++++---------------
.../internal/pagememory/freelist/PagesList.java | 105 ++++++++------------
.../pagememory/inmemory/VolatilePageMemory.java | 12 +--
.../pagememory/metric/IoStatisticsHolder.java | 47 ---------
.../pagememory/metric/IoStatisticsHolderNoOp.java | 55 -----------
.../persistence/PersistentPageMemory.java | 25 +----
.../ignite/internal/pagememory/tree/BplusTree.java | 101 +++----------------
.../internal/pagememory/util/PageHandler.java | 42 +++-----
.../pagememory/freelist/FreeListImplTest.java | 4 +-
.../PersistentPageMemoryTableStorage.java | 4 +-
.../pagememory/VolatilePageMemoryDataRegion.java | 4 +-
.../pagememory/index/hash/HashIndexTree.java | 11 +--
.../pagememory/index/sorted/SortedIndexTree.java | 11 +--
.../mv/AbstractPageMemoryMvPartitionStorage.java | 3 +-
.../storage/pagememory/mv/BlobStorage.java | 26 ++---
.../pagememory/mv/CommitWriteInvokeClosure.java | 4 +-
.../mv/PersistentPageMemoryMvPartitionStorage.java | 7 +-
.../mv/RemoveWriteOnGcInvokeClosure.java | 4 +-
.../storage/pagememory/mv/BlobStorageTest.java | 3 +-
24 files changed, 158 insertions(+), 503 deletions(-)
diff --git
a/modules/page-memory/src/integrationTest/java/org/apache/ignite/internal/pagememory/tree/AbstractBplusTreeReusePageMemoryTest.java
b/modules/page-memory/src/integrationTest/java/org/apache/ignite/internal/pagememory/tree/AbstractBplusTreeReusePageMemoryTest.java
index 15f004829fb..5cb286168cc 100644
---
a/modules/page-memory/src/integrationTest/java/org/apache/ignite/internal/pagememory/tree/AbstractBplusTreeReusePageMemoryTest.java
+++
b/modules/page-memory/src/integrationTest/java/org/apache/ignite/internal/pagememory/tree/AbstractBplusTreeReusePageMemoryTest.java
@@ -20,7 +20,6 @@ package org.apache.ignite.internal.pagememory.tree;
import org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.freelist.FreeListImpl;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.reuse.ReuseList;
/**
@@ -43,8 +42,7 @@ public abstract class AbstractBplusTreeReusePageMemoryTest
extends AbstractBplus
pageMem,
rootId,
initNew,
- null,
- IoStatisticsHolderNoOp.INSTANCE
+ null
);
}
}
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/PageSupport.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/PageSupport.java
index d8d05502fd2..ad40cea4777 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/PageSupport.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/PageSupport.java
@@ -18,7 +18,6 @@
package org.apache.ignite.internal.pagememory;
import org.apache.ignite.internal.lang.IgniteInternalCheckedException;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
/**
* Class responsible for acquiring/releasing and locking/unlocking pages.
@@ -36,18 +35,6 @@ public interface PageSupport {
*/
long acquirePage(int groupId, long pageId) throws
IgniteInternalCheckedException;
- /**
- * Returns an absolute pointer to a page, associated with the given page
ID. Each page obtained with this method must be released by
- * calling {@link #releasePage(int, long, long)}. This method will
allocate a page with the given ID if it doesn't exist.
- *
- * @param groupId Group ID.
- * @param pageId Page ID.
- * @param statHolder Statistics holder to track IO operations.
- * @return Page pointer.
- * @throws IgniteInternalCheckedException If failed.
- */
- long acquirePage(int groupId, long pageId, IoStatisticsHolder statHolder)
throws IgniteInternalCheckedException;
-
/**
* Releases pages acquired by any of the {@code acquirePage} methods.
*
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datapage/DataPageReader.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datapage/DataPageReader.java
index c6a0afde5b8..dbaa137bfb3 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datapage/DataPageReader.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datapage/DataPageReader.java
@@ -24,7 +24,6 @@ import
org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.io.DataPageIo;
import org.apache.ignite.internal.pagememory.io.DataPagePayload;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
import org.jetbrains.annotations.Nullable;
/**
@@ -33,19 +32,16 @@ import org.jetbrains.annotations.Nullable;
public class DataPageReader {
private final PageMemory pageMemory;
private final int groupId;
- private final IoStatisticsHolder statisticsHolder;
/**
* Constructs a new instance.
*
- * @param pageMemory Page memory that will be used to lock and
access memory.
- * @param groupId ID of the cache group with which the reader
works (all pages must belong to this group)
- * @param statisticsHolder used to track statistics about operations
+ * @param pageMemory Page memory that will be used to lock and access
memory.
+ * @param groupId ID of the cache group with which the reader works (all
pages must belong to this group)
*/
- public DataPageReader(PageMemory pageMemory, int groupId,
IoStatisticsHolder statisticsHolder) {
+ public DataPageReader(PageMemory pageMemory, int groupId) {
this.pageMemory = pageMemory;
this.groupId = groupId;
- this.statisticsHolder = statisticsHolder;
}
/**
@@ -70,7 +66,7 @@ public class DataPageReader {
do {
final long pageId = pageId(currentLink);
- final long page = pageMemory.acquirePage(groupId, pageId,
statisticsHolder);
+ final long page = pageMemory.acquirePage(groupId, pageId);
try {
long pageAddr = pageMemory.readLock(groupId, pageId, page);
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datapage/NonFragmentableDataPageReader.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datapage/NonFragmentableDataPageReader.java
index 1e6ba1c21e4..faa291aa882 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datapage/NonFragmentableDataPageReader.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datapage/NonFragmentableDataPageReader.java
@@ -24,7 +24,6 @@ import
org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.io.DataPageIo;
import org.apache.ignite.internal.pagememory.io.DataPagePayload;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
import org.jetbrains.annotations.Nullable;
/**
@@ -33,19 +32,16 @@ import org.jetbrains.annotations.Nullable;
public abstract class NonFragmentableDataPageReader<T> {
private final PageMemory pageMemory;
private final int groupId;
- private final IoStatisticsHolder statisticsHolder;
/**
* Constructs a new instance.
*
- * @param pageMemory page memory that will be used to lock and
access memory
- * @param groupId ID of the cache group with which the reader
works (all pages must belong to this group)
- * @param statisticsHolder used to track statistics about operations
+ * @param pageMemory page memory that will be used to lock and access
memory
+ * @param groupId ID of the cache group with which the reader works (all
pages must belong to this group)
*/
- public NonFragmentableDataPageReader(PageMemory pageMemory, int groupId,
IoStatisticsHolder statisticsHolder) {
+ public NonFragmentableDataPageReader(PageMemory pageMemory, int groupId) {
this.pageMemory = pageMemory;
this.groupId = groupId;
- this.statisticsHolder = statisticsHolder;
}
/**
@@ -65,7 +61,7 @@ public abstract class NonFragmentableDataPageReader<T> {
final long pageId = pageId(link);
- final long page = pageMemory.acquirePage(groupId, pageId,
statisticsHolder);
+ final long page = pageMemory.acquirePage(groupId, pageId);
try {
long pageAddr = pageMemory.readLock(groupId, pageId, page);
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datastructure/DataStructure.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datastructure/DataStructure.java
index be7e700a702..5497d63ecee 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datastructure/DataStructure.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/datastructure/DataStructure.java
@@ -33,8 +33,6 @@ import org.apache.ignite.internal.pagememory.FullPageId;
import org.apache.ignite.internal.pagememory.PageIdAllocator;
import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.io.PageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.reuse.ReuseBag;
import org.apache.ignite.internal.pagememory.reuse.ReuseList;
import org.apache.ignite.internal.pagememory.util.PageHandler;
@@ -166,14 +164,13 @@ public abstract class DataStructure implements
ManuallyCloseable {
* <p>NOTE: Each page obtained with this method must be released by
calling {@link #releasePage}.
*
* @param pageId Page ID.
- * @param statHolder Statistics holder to track IO operations.
* @return Page pointer.
* @throws IgniteInternalCheckedException If failed.
*/
- protected final long acquirePage(long pageId, IoStatisticsHolder
statHolder) throws IgniteInternalCheckedException {
+ protected final long acquirePage(long pageId) throws
IgniteInternalCheckedException {
assert partitionId(pageId) >= 0 && partitionId(pageId) <=
MAX_PARTITION_ID : toDetailString(pageId);
- return pageMem.acquirePage(grpId, pageId, statHolder);
+ return pageMem.acquirePage(grpId, pageId);
}
/**
@@ -249,7 +246,6 @@ public abstract class DataStructure implements
ManuallyCloseable {
* @param h Handler.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -257,10 +253,9 @@ public abstract class DataStructure implements
ManuallyCloseable {
long pageId,
PageHandler<?, R> h,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
- return PageHandler.writePage(pageMem, grpId, pageId, h, null, null,
intArg, lockFailed, statHolder);
+ return PageHandler.writePage(pageMem, grpId, pageId, h, null, null,
intArg, lockFailed);
}
/**
@@ -271,7 +266,6 @@ public abstract class DataStructure implements
ManuallyCloseable {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -280,10 +274,9 @@ public abstract class DataStructure implements
ManuallyCloseable {
PageHandler<X, R> h,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
- return PageHandler.writePage(pageMem, grpId, pageId, h, null, arg,
intArg, lockFailed, statHolder);
+ return PageHandler.writePage(pageMem, grpId, pageId, h, null, arg,
intArg, lockFailed);
}
/**
@@ -295,7 +288,6 @@ public abstract class DataStructure implements
ManuallyCloseable {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -305,10 +297,9 @@ public abstract class DataStructure implements
ManuallyCloseable {
PageHandler<X, R> h,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
- return PageHandler.writePage(pageMem, grpId, pageId, page, h, null,
arg, intArg, lockFailed, statHolder);
+ return PageHandler.writePage(pageMem, grpId, pageId, page, h, null,
arg, intArg, lockFailed);
}
/**
@@ -320,7 +311,6 @@ public abstract class DataStructure implements
ManuallyCloseable {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -330,10 +320,9 @@ public abstract class DataStructure implements
ManuallyCloseable {
PageIo init,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
- return PageHandler.writePage(pageMem, grpId, pageId, h, init, arg,
intArg, lockFailed, statHolder);
+ return PageHandler.writePage(pageMem, grpId, pageId, h, init, arg,
intArg, lockFailed);
}
/**
@@ -344,7 +333,6 @@ public abstract class DataStructure implements
ManuallyCloseable {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -353,10 +341,9 @@ public abstract class DataStructure implements
ManuallyCloseable {
PageHandler<X, R> h,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
- return PageHandler.readPage(pageMem, grpId, pageId, h, arg, intArg,
lockFailed, statHolder);
+ return PageHandler.readPage(pageMem, grpId, pageId, h, arg, intArg,
lockFailed);
}
/**
@@ -368,7 +355,6 @@ public abstract class DataStructure implements
ManuallyCloseable {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -378,10 +364,9 @@ public abstract class DataStructure implements
ManuallyCloseable {
PageHandler<X, R> h,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
- return PageHandler.readPage(pageMem, grpId, pageId, page, h, arg,
intArg, lockFailed, statHolder);
+ return PageHandler.readPage(pageMem, grpId, pageId, page, h, arg,
intArg, lockFailed);
}
/**
@@ -392,7 +377,7 @@ public abstract class DataStructure implements
ManuallyCloseable {
* @throws IgniteInternalCheckedException if failed.
*/
protected final void init(long pageId, PageIo init) throws
IgniteInternalCheckedException {
- PageHandler.initPage(pageMem, grpId, pageId, init,
IoStatisticsHolderNoOp.INSTANCE);
+ PageHandler.initPage(pageMem, grpId, pageId, init);
}
/**
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/freelist/FreeListImpl.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/freelist/FreeListImpl.java
index 27bc6de0d70..cd22b370c58 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/freelist/FreeListImpl.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/freelist/FreeListImpl.java
@@ -36,8 +36,6 @@ import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.Storable;
import org.apache.ignite.internal.pagememory.io.DataPageIo;
import org.apache.ignite.internal.pagememory.io.PageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.reuse.LongListReuseBag;
import org.apache.ignite.internal.pagememory.reuse.ReuseBag;
import org.apache.ignite.internal.pagememory.reuse.ReuseList;
@@ -89,8 +87,6 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
private final PageHandler<ReuseBag, Long> rmvRow;
- private final IoStatisticsHolder statHolder;
-
private class WriteRowHandler implements PageHandler<Storable, Integer> {
@Override
public Integer run(
@@ -100,12 +96,11 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
long pageAddr,
PageIo iox,
Storable row,
- int written,
- IoStatisticsHolder statHolder
+ int written
) throws IgniteInternalCheckedException {
written = addRow(pageId, pageAddr, iox, row, written);
- putPage(((DataPageIo) iox).getFreeSpace(pageAddr), pageId,
pageAddr, statHolder);
+ putPage(((DataPageIo) iox).getFreeSpace(pageAddr), pageId,
pageAddr);
return written;
}
@@ -199,18 +194,16 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
* @param freeSpace Page free space.
* @param pageId Page ID.
* @param pageAddr Page address.
- * @param statHolder Statistics holder to track IO operations.
*/
protected void putPage(
int freeSpace,
long pageId,
- long pageAddr,
- IoStatisticsHolder statHolder
+ long pageAddr
) throws IgniteInternalCheckedException {
if (freeSpace > MIN_PAGE_FREE_SPACE) {
int bucket = bucket(freeSpace, false);
- put(null, pageId, pageAddr, bucket, statHolder);
+ put(null, pageId, pageAddr, bucket);
}
}
}
@@ -225,8 +218,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
long pageAddr,
PageIo iox,
CachedIterator it,
- int written,
- IoStatisticsHolder statHolder
+ int written
) throws IgniteInternalCheckedException {
DataPageIo io = (DataPageIo) iox;
@@ -238,7 +230,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
row = it.next();
// If the data row was completely written without
remainder, proceed to the next.
- if ((written = writeWholePages(row, statHolder)) ==
COMPLETE) {
+ if ((written = writeWholePages(row)) == COMPLETE) {
continue;
}
@@ -252,7 +244,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
assert written == COMPLETE;
}
- writeRowHnd.putPage(io.getFreeSpace(pageAddr), pageId, pageAddr,
statHolder);
+ writeRowHnd.putPage(io.getFreeSpace(pageAddr), pageId, pageAddr);
return written;
}
@@ -280,8 +272,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
long pageAddr,
PageIo iox,
ReuseBag reuseBag,
- int itemId,
- IoStatisticsHolder statHolder
+ int itemId
) throws IgniteInternalCheckedException {
DataPageIo io = (DataPageIo) iox;
@@ -305,7 +296,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
// It is possible that page was concurrently taken for
put, in this case put will handle bucket change.
pageId = maskPartId ?
PageIdUtils.maskPartitionId(pageId) : pageId;
- putIsNeeded = removeDataPage(pageId, pageAddr, io,
oldBucket, statHolder);
+ putIsNeeded = removeDataPage(pageId, pageAddr, io,
oldBucket);
}
}
@@ -314,7 +305,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
reuseBag.addFreePage(recyclePage(pageId, pageAddr));
}
} else if (putIsNeeded) {
- put(null, pageId, pageAddr, newBucket, statHolder);
+ put(null, pageId, pageAddr, newBucket);
}
}
@@ -342,8 +333,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
PageMemory pageMem,
long metaPageId,
boolean initNew,
- @Nullable AtomicLong pageListCacheLimit,
- IoStatisticsHolder statHolder
+ @Nullable AtomicLong pageListCacheLimit
) throws IgniteInternalCheckedException {
super(
freeListNamePrefix,
@@ -356,7 +346,6 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
);
this.pageListCacheLimit = pageListCacheLimit;
- this.statHolder = statHolder;
this.reuseList = this;
@@ -493,7 +482,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
try {
do {
- written = writeSinglePage(row, written, statHolder);
+ written = writeSinglePage(row, written);
} while (written != COMPLETE);
} catch (IgniteInternalCheckedException | Error e) {
throw e;
@@ -521,7 +510,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
while (written != COMPLETE || it.hasNext()) {
if (written == COMPLETE) {
- written = writeWholePages(it.next(), statHolder);
+ written = writeWholePages(it.next());
continue;
}
@@ -530,7 +519,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
DataPageIo initIo = null;
- long pageId = takePage(row.size() - written, row, statHolder);
+ long pageId = takePage(row.size() - written, row);
if (pageId == 0L) {
pageId = allocateDataPage(row.partition());
@@ -538,7 +527,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
initIo = DataPageIo.VERSIONS.latest();
}
- written = write(pageId, writeRowsHnd, initIo, it, written,
FAIL_I, statHolder);
+ written = write(pageId, writeRowsHnd, initIo, it, written,
FAIL_I);
assert written != FAIL_I; // We can't fail here.
}
@@ -581,19 +570,18 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
* data page.
*
* @param row Row to process.
- * @param statHolder Statistics holder to track IO operations.
* @return Number of bytes written, {@link #COMPLETE} if the row was fully
written, {@code 0} if data row was ignored because it is less
* than the max payload of an empty data page.
* @throws IgniteInternalCheckedException If failed.
*/
- private int writeWholePages(Storable row, IoStatisticsHolder statHolder)
throws IgniteInternalCheckedException {
+ private int writeWholePages(Storable row) throws
IgniteInternalCheckedException {
assert row.link() == 0 : row.link();
int written = 0;
int rowSize = row.size();
while (rowSize - written >= minSizeForDataPage) {
- written = writeSinglePage(row, written, statHolder);
+ written = writeSinglePage(row, written);
}
return written;
@@ -604,14 +592,13 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
*
* @param row Row to write.
* @param written Written size.
- * @param statHolder Statistics holder to track IO operations.
* @return Number of bytes written, {@link #COMPLETE} if the row was fully
written.
* @throws IgniteInternalCheckedException If failed.
*/
- private int writeSinglePage(Storable row, int written, IoStatisticsHolder
statHolder) throws IgniteInternalCheckedException {
+ private int writeSinglePage(Storable row, int written) throws
IgniteInternalCheckedException {
DataPageIo initIo = null;
- long pageId = takePage(row.size() - written, row, statHolder);
+ long pageId = takePage(row.size() - written, row);
if (pageId == 0L) {
pageId = allocateDataPage(row.partition());
@@ -619,7 +606,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
initIo = DataPageIo.VERSIONS.latest();
}
- written = write(pageId, writeRowHnd, initIo, row, written, FAIL_I,
statHolder);
+ written = write(pageId, writeRowHnd, initIo, row, written, FAIL_I);
assert written != FAIL_I; // We can't fail here.
@@ -631,16 +618,15 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
*
* @param size Required free space on page.
* @param row Row to write.
- * @param statHolder Statistics holder to track IO operations.
* @return Page identifier or {@code 0} if no page found in free list.
* @throws IgniteInternalCheckedException If failed.
*/
- private long takePage(int size, Storable row, IoStatisticsHolder
statHolder) throws IgniteInternalCheckedException {
+ private long takePage(int size, Storable row) throws
IgniteInternalCheckedException {
long pageId = 0;
if (size < minSizeForDataPage) {
for (int b = bucket(size, false) + 1; b < REUSE_BUCKET; b++) {
- pageId = takeEmptyPage(b, DataPageIo.VERSIONS, statHolder);
+ pageId = takeEmptyPage(b, DataPageIo.VERSIONS);
if (pageId != 0L) {
break;
@@ -650,7 +636,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
if (pageId == 0L) { // Handle reuse bucket.
if (reuseList == this) {
- pageId = takeEmptyPage(REUSE_BUCKET, DataPageIo.VERSIONS,
statHolder);
+ pageId = takeEmptyPage(REUSE_BUCKET, DataPageIo.VERSIONS);
} else {
pageId = reuseList.takeRecycledPage();
@@ -670,39 +656,6 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
return PageIdUtils.changePartitionId(pageId, row.partition());
}
- /**
- * Reused page must obtain correctly assaembled page id, then initialized
by proper {@link PageIo} instance and non-zero {@code itemId}
- * of reused page id must be saved into special place.
- *
- * @param row Row.
- * @param reusedPageId Reused page id.
- * @param statHolder Statistics holder to track IO operations.
- * @return Prepared page id.
- * @see PagesList#initReusedPage(long, long, int, byte, PageIo)
- */
- private long initReusedPage(Storable row, long reusedPageId,
IoStatisticsHolder statHolder) throws IgniteInternalCheckedException {
- long reusedPage = acquirePage(reusedPageId, statHolder);
- try {
- long reusedPageAddr = writeLock(reusedPageId, reusedPage);
-
- assert reusedPageAddr != 0;
-
- try {
- return initReusedPage(
- reusedPageId,
- reusedPageAddr,
- row.partition(),
- FLAG_DATA,
- DataPageIo.VERSIONS.latest()
- );
- } finally {
- writeUnlock(reusedPageId, reusedPage, reusedPageAddr, true);
- }
- } finally {
- releasePage(reusedPageId, reusedPage);
- }
- }
-
/** {@inheritDoc} */
@Override
public <S, R> R updateDataRow(
@@ -716,7 +669,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
long pageId = pageId(link);
int itemId = itemId(link);
- R updRes = write(pageId, pageHnd, arg, itemId, null, statHolder);
+ R updRes = write(pageId, pageHnd, arg, itemId, null);
assert updRes != null; // Can't fail here.
@@ -740,7 +693,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
ReuseBag bag = new LongListReuseBag();
- long nextLink = write(pageId, rmvRow, bag, itemId, FAIL_L,
statHolder);
+ long nextLink = write(pageId, rmvRow, bag, itemId, FAIL_L);
assert nextLink != FAIL_L; // Can't fail here.
@@ -748,7 +701,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
itemId = itemId(nextLink);
pageId = pageId(nextLink);
- nextLink = write(pageId, rmvRow, bag, itemId, FAIL_L,
statHolder);
+ nextLink = write(pageId, rmvRow, bag, itemId, FAIL_L);
assert nextLink != FAIL_L; // Can't fail here.
}
@@ -813,7 +766,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
assert reuseList == this : "not allowed to be a reuse list";
try {
- put(bag, 0, 0L, REUSE_BUCKET, IoStatisticsHolderNoOp.INSTANCE);
+ put(bag, 0, 0L, REUSE_BUCKET);
} catch (AssertionError e) {
throw corruptedFreeListException(e);
} catch (IgniteInternalCheckedException | Error e) {
@@ -829,7 +782,7 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
assert reuseList == this : "not allowed to be a reuse list";
try {
- return takeEmptyPage(REUSE_BUCKET, null,
IoStatisticsHolderNoOp.INSTANCE);
+ return takeEmptyPage(REUSE_BUCKET, null);
} catch (AssertionError e) {
throw corruptedFreeListException(e);
} catch (IgniteInternalCheckedException | Error e) {
@@ -863,7 +816,9 @@ public class FreeListImpl extends PagesList implements
FreeList, ReuseList {
@Override
public void saveMetadata() throws IgniteInternalCheckedException {
- saveMetadata(statHolder);
+ // Double inheritance here. We inherit interface method from the
FreeList interface, and the implementation from the PagesList
+ // class. These two versions must be joined here by calling the super
method.
+ super.saveMetadata();
}
@Override
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/freelist/PagesList.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/freelist/PagesList.java
index 392fa85676c..0ac5a2ef014 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/freelist/PagesList.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/freelist/PagesList.java
@@ -54,8 +54,6 @@ import
org.apache.ignite.internal.pagememory.freelist.io.PagesListNodeIo;
import org.apache.ignite.internal.pagememory.io.DataPageIo;
import org.apache.ignite.internal.pagememory.io.IoVersions;
import org.apache.ignite.internal.pagememory.io.PageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.reuse.ReuseBag;
import org.apache.ignite.internal.pagememory.util.PageHandler;
import org.apache.ignite.internal.pagememory.util.PageIdUtils;
@@ -129,8 +127,7 @@ public abstract class PagesList extends DataStructure {
long pageAddr,
PageIo iox,
Void ignore,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) {
assert getPageId(pageAddr) == pageId;
@@ -158,8 +155,7 @@ public abstract class PagesList extends DataStructure {
long pageAddr,
PageIo iox,
Void ignore,
- int oldBucket,
- IoStatisticsHolder statHolder
+ int oldBucket
) throws IgniteInternalCheckedException {
decrementBucketSize(oldBucket);
@@ -174,7 +170,7 @@ public abstract class PagesList extends DataStructure {
}
if (newBucket >= 0) {
- put(null, pageId, pageAddr, newBucket, statHolder);
+ put(null, pageId, pageAddr, newBucket);
}
return TRUE;
@@ -232,7 +228,7 @@ public abstract class PagesList extends DataStructure {
while (nextId != 0) {
final long pageId = nextId;
- final long page = acquirePage(pageId,
IoStatisticsHolderNoOp.INSTANCE);
+ final long page = acquirePage(pageId);
try {
long pageAddr = readLock(pageId, page); // No
concurrent recycling on init.
@@ -274,7 +270,7 @@ public abstract class PagesList extends DataStructure {
while (prevId != 0L) {
final long pageId = prevId;
- final long page = acquirePage(pageId,
IoStatisticsHolderNoOp.INSTANCE);
+ final long page = acquirePage(pageId);
try {
long pageAddr = readLock(pageId, page);
@@ -324,15 +320,14 @@ public abstract class PagesList extends DataStructure {
/**
* Save metadata without exclusive lock on it.
*
- * @param statHolder Statistics holder to track IO operations.
* @throws IgniteInternalCheckedException If failed.
*/
- protected void saveMetadata(IoStatisticsHolder statHolder) throws
IgniteInternalCheckedException {
+ protected void saveMetadata() throws IgniteInternalCheckedException {
long nextPageId = metaPageId;
assert nextPageId != 0;
- flushBucketsCache(statHolder);
+ flushBucketsCache();
if (!changed) {
return;
@@ -355,10 +350,9 @@ public abstract class PagesList extends DataStructure {
/**
* Flush onheap cached pages lists to page memory.
*
- * @param statHolder Statistic holder.
* @throws IgniteInternalCheckedException If failed to write a page.
*/
- private void flushBucketsCache(IoStatisticsHolder statHolder) throws
IgniteInternalCheckedException {
+ private void flushBucketsCache() throws IgniteInternalCheckedException {
if (!isCachingApplicable() || !pageCacheChanged) {
return;
}
@@ -391,7 +385,7 @@ public abstract class PagesList extends DataStructure {
log.debug("Move page from heap to PageMemory
[list={}, bucket={}, pageId={}]", name(), bucket, pageId);
}
- Boolean res = write(pageId, putBucket, bucket, null,
statHolder);
+ Boolean res = write(pageId, putBucket, bucket, null);
if (res == null) {
// Return page to onheap pages list if can't lock
it.
@@ -450,7 +444,7 @@ public abstract class PagesList extends DataStructure {
}
curId = nextPageId;
- curPage = acquirePage(curId,
IoStatisticsHolderNoOp.INSTANCE);
+ curPage = acquirePage(curId);
curAddr = writeLock(curId, curPage);
curIo = PagesListMetaIo.VERSIONS.latest();
@@ -460,7 +454,7 @@ public abstract class PagesList extends DataStructure {
releaseAndWriteUnlock(curId, curPage, curAddr);
curId = nextPageId;
- curPage = acquirePage(curId,
IoStatisticsHolderNoOp.INSTANCE);
+ curPage = acquirePage(curId);
curAddr = writeLock(curId, curPage);
curIo =
PagesListMetaIo.VERSIONS.forPage(curAddr);
@@ -492,7 +486,7 @@ public abstract class PagesList extends DataStructure {
while (nextPageId != 0L) {
long pageId = nextPageId;
- long page = acquirePage(pageId, IoStatisticsHolderNoOp.INSTANCE);
+ long page = acquirePage(pageId);
try {
long pageAddr = writeLock(pageId, page);
@@ -754,7 +748,7 @@ public abstract class PagesList extends DataStructure {
while (tailId != 0L) {
final long pageId = tailId;
- final long page = acquirePage(pageId,
IoStatisticsHolderNoOp.INSTANCE);
+ final long page = acquirePage(pageId);
try {
long pageAddr = readLock(pageId, page);
@@ -796,15 +790,13 @@ public abstract class PagesList extends DataStructure {
* @param dataId Data page ID.
* @param dataAddr Data page address.
* @param bucket Bucket.
- * @param statHolder Statistics holder to track IO operations.
* @throws IgniteInternalCheckedException If failed.
*/
protected final void put(
@Nullable ReuseBag bag,
final long dataId,
final long dataAddr,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) throws IgniteInternalCheckedException {
assert bag == null ^ dataAddr == 0L;
@@ -837,7 +829,7 @@ public abstract class PagesList extends DataStructure {
continue;
}
- final long tailPage = acquirePage(tailId, statHolder);
+ final long tailPage = acquirePage(tailId);
try {
long tailAddr = writeLockPage(tailId, tailPage, bucket,
lockAttempt++, bag); // Explicit check.
@@ -872,14 +864,14 @@ public abstract class PagesList extends DataStructure {
ok = bag != null
// Here we can always take pages from the bag to
build our list.
- ? putReuseBag(tailId, tailAddr, io, bag, bucket,
statHolder) :
+ ? putReuseBag(tailId, tailAddr, io, bag, bucket) :
// Here we can use the data page to build list
only if it is empty and
// it is being put into reuse bucket. Usually this
will be true, but there is
// a case when there is no reuse bucket in the
free list, but then deadlock
// on node page allocation from separate reuse
list is impossible.
// If the data page is not empty it can not be put
into reuse bucket and thus
// the deadlock is impossible as well.
- putDataPage(tailId, tailAddr, io, dataId,
dataAddr, bucket, statHolder);
+ putDataPage(tailId, tailAddr, io, dataId,
dataAddr, bucket);
if (ok) {
if (debugLogEnabled) {
@@ -908,7 +900,6 @@ public abstract class PagesList extends DataStructure {
* @param dataId Data page ID.
* @param dataAddr Data page address.
* @param bucket Bucket.
- * @param statHolder Statistics holder to track IO operations.
* @return {@code true} If succeeded.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -918,8 +909,7 @@ public abstract class PagesList extends DataStructure {
PagesListNodeIo io,
final long dataId,
final long dataAddr,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) throws IgniteInternalCheckedException {
if (io.getNextId(pageAddr) != 0L) {
return false; // Splitted.
@@ -928,7 +918,7 @@ public abstract class PagesList extends DataStructure {
int idx = io.addPage(pageAddr, dataId, pageSize());
if (idx == -1) {
- handlePageFull(pageId, pageAddr, io, dataId, dataAddr, bucket,
statHolder);
+ handlePageFull(pageId, pageAddr, io, dataId, dataAddr, bucket);
} else {
incrementBucketSize(bucket);
@@ -981,7 +971,6 @@ public abstract class PagesList extends DataStructure {
* @param dataId Data page ID.
* @param dataAddr Data page address.
* @param bucket Bucket index.
- * @param statHolder Statistics holder to track IO operations.
* @throws IgniteInternalCheckedException If failed.
*/
private void handlePageFull(
@@ -990,8 +979,7 @@ public abstract class PagesList extends DataStructure {
PagesListNodeIo io,
final long dataId,
final long dataAddr,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) throws IgniteInternalCheckedException {
DataPageIo dataIo = pageMem.ioRegistry().resolve(dataAddr);
@@ -1012,7 +1000,7 @@ public abstract class PagesList extends DataStructure {
} else {
// Just allocate a new node page and add our data page there.
final long nextId = allocatePage(null);
- final long nextPage = acquirePage(nextId, statHolder);
+ final long nextPage = acquirePage(nextId);
try {
long nextPageAddr = writeLock(nextId, nextPage); // Newly
allocated page.
@@ -1048,7 +1036,6 @@ public abstract class PagesList extends DataStructure {
* @param io IO.
* @param bag Reuse bag.
* @param bucket Bucket.
- * @param statHolder Statistics holder to track IO operations.
* @return {@code true} If succeeded.
* @throws IgniteInternalCheckedException if failed.
*/
@@ -1057,8 +1044,7 @@ public abstract class PagesList extends DataStructure {
final long pageAddr,
PagesListNodeIo io,
ReuseBag bag,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) throws IgniteInternalCheckedException {
assert bag != null : "bag is null";
assert !bag.isEmpty() : "bag is empty";
@@ -1083,7 +1069,7 @@ public abstract class PagesList extends DataStructure {
int idx = io.addPage(prevAddr, nextId, pageSize());
if (idx == -1) { // Attempt to add page failed: the node page
is full.
- final long nextPage = acquirePage(nextId, statHolder);
+ final long nextPage = acquirePage(nextId);
try {
long nextPageAddr = writeLock(nextId, nextPage); //
Page from reuse bag can't be concurrently recycled.
@@ -1196,14 +1182,12 @@ public abstract class PagesList extends DataStructure {
*
* @param bucket Bucket index.
* @param initIoVers Optional IO to initialize page.
- * @param statHolder Statistics holder to track IO operations.
* @return Removed page ID.
* @throws IgniteInternalCheckedException If failed.
*/
protected long takeEmptyPage(
int bucket,
- @Nullable IoVersions<?> initIoVers,
- IoStatisticsHolder statHolder
+ @Nullable IoVersions<?> initIoVers
) throws IgniteInternalCheckedException {
PagesCache pagesCache = getBucketCache(bucket, false);
@@ -1235,7 +1219,7 @@ public abstract class PagesList extends DataStructure {
continue;
}
- final long tailPage = acquirePage(tailId, statHolder);
+ final long tailPage = acquirePage(tailId);
try {
long tailAddr = writeLockPage(tailId, tailPage, bucket,
lockAttempt++, null); // Explicit check.
@@ -1302,7 +1286,7 @@ public abstract class PagesList extends DataStructure {
// to prevent empty page leak to data pages.
if (!isReuseBucket(bucket)) {
if (prevId != 0L) {
- Boolean ok = write(prevId, cutTail, null,
bucket, FALSE, statHolder);
+ Boolean ok = write(prevId, cutTail, null,
bucket, FALSE);
assert ok == TRUE : ok;
@@ -1324,7 +1308,7 @@ public abstract class PagesList extends DataStructure {
assert prevId != 0L;
- Boolean ok = write(prevId, cutTail, bucket, FALSE,
statHolder);
+ Boolean ok = write(prevId, cutTail, bucket, FALSE);
assert ok == TRUE : ok;
@@ -1460,7 +1444,6 @@ public abstract class PagesList extends DataStructure {
* @param dataAddr Data page address.
* @param dataIo Data page IO.
* @param bucket Bucket index.
- * @param statHolder Statistics holder to track IO operations.
* @return {@code True} if page was removed.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -1468,8 +1451,7 @@ public abstract class PagesList extends DataStructure {
final long dataId,
final long dataAddr,
DataPageIo dataIo,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) throws IgniteInternalCheckedException {
final long pageId = dataIo.getFreeListPageId(dataAddr);
@@ -1501,7 +1483,7 @@ public abstract class PagesList extends DataStructure {
log.debug("Remove page from pages list [list={}, bucket={},
dataId={}, pageId={}]", name(), bucket, dataId, pageId);
}
- final long page = acquirePage(pageId, statHolder);
+ final long page = acquirePage(pageId);
try {
long nextId;
@@ -1542,7 +1524,7 @@ public abstract class PagesList extends DataStructure {
if (nextId == 0L) {
long prevId = io.getPreviousId(pageAddr);
- recycleId = mergeNoNext(pageId, pageAddr, prevId, bucket,
statHolder);
+ recycleId = mergeNoNext(pageId, pageAddr, prevId, bucket);
}
} finally {
writeUnlock(pageId, page, pageAddr, rmvd);
@@ -1550,7 +1532,7 @@ public abstract class PagesList extends DataStructure {
// Perform a fair merge after lock release (to have a correct
locking order).
if (nextId != 0L) {
- recycleId = merge(pageId, page, nextId, bucket, statHolder);
+ recycleId = merge(pageId, page, nextId, bucket);
}
if (recycleId != 0L) {
@@ -1567,8 +1549,7 @@ public abstract class PagesList extends DataStructure {
long pageId,
long pageAddr,
long prevId,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) throws IgniteInternalCheckedException {
// If we do not have a next page (we are tail) and we are on reuse
bucket,
// then we can leave as is as well, because it is normal to have an
empty tail page here.
@@ -1577,7 +1558,7 @@ public abstract class PagesList extends DataStructure {
}
if (prevId != 0L) { // Cut tail if we have a previous page.
- Boolean ok = write(prevId, cutTail, null, bucket, FALSE,
statHolder);
+ Boolean ok = write(prevId, cutTail, null, bucket, FALSE);
assert ok == TRUE : ok;
} else {
@@ -1596,15 +1577,14 @@ public abstract class PagesList extends DataStructure {
final long pageId,
final long page,
long nextId,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) throws IgniteInternalCheckedException {
assert nextId != 0; // We should do mergeNoNext then.
// Lock all the pages in correct order (from next to previous) and do
the merge in retry loop.
for (; ; ) {
final long curId = nextId;
- final long curPage = curId == 0L ? 0L : acquirePage(curId,
statHolder);
+ final long curPage = curId == 0L ? 0L : acquirePage(curId);
try {
boolean write = false;
@@ -1629,7 +1609,7 @@ public abstract class PagesList extends DataStructure {
// Check if we see a consistent state of the world.
if (io.getNextId(pageAddr) == curId && (curId == 0L) ==
(curAddr == 0L)) {
- long recycleId = doMerge(pageId, pageAddr, io, curId,
curAddr, bucket, statHolder);
+ long recycleId = doMerge(pageId, pageAddr, io, curId,
curAddr, bucket);
write = true;
@@ -1659,13 +1639,12 @@ public abstract class PagesList extends DataStructure {
PagesListNodeIo io,
long nextId,
long nextAddr,
- int bucket,
- IoStatisticsHolder statHolder
+ int bucket
) throws IgniteInternalCheckedException {
long prevId = io.getPreviousId(pageAddr);
if (nextId == 0L) {
- return mergeNoNext(pageId, pageAddr, prevId, bucket, statHolder);
+ return mergeNoNext(pageId, pageAddr, prevId, bucket);
} else {
// No one must be able to merge it while we keep a reference.
assert getPageId(nextAddr) == nextId;
@@ -1678,7 +1657,7 @@ public abstract class PagesList extends DataStructure {
nextIo.setPreviousId(nextAddr, 0);
} else {
// Do a fair merge: link previous and next to each other.
- fairMerge(prevId, pageId, nextId, nextAddr, statHolder);
+ fairMerge(prevId, pageId, nextId, nextAddr);
}
return recyclePage(pageId, pageAddr);
@@ -1692,17 +1671,15 @@ public abstract class PagesList extends DataStructure {
* @param pageId Page ID.
* @param nextId Next page ID.
* @param nextAddr Next page address.
- * @param statHolder Statistics holder to track IO operations.
* @throws IgniteInternalCheckedException If failed.
*/
private void fairMerge(
final long prevId,
long pageId,
long nextId,
- long nextAddr,
- IoStatisticsHolder statHolder
+ long nextAddr
) throws IgniteInternalCheckedException {
- long prevPage = acquirePage(prevId, statHolder);
+ long prevPage = acquirePage(prevId);
try {
final long prevAddr = writeLock(prevId, prevPage); // No check, we
keep a reference.
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/inmemory/VolatilePageMemory.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/inmemory/VolatilePageMemory.java
index 0b83dcab1b9..1f1777a8229 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/inmemory/VolatilePageMemory.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/inmemory/VolatilePageMemory.java
@@ -39,8 +39,6 @@ import
org.apache.ignite.internal.pagememory.mem.DirectMemoryProvider;
import org.apache.ignite.internal.pagememory.mem.DirectMemoryRegion;
import org.apache.ignite.internal.pagememory.mem.IgniteOutOfMemoryException;
import org.apache.ignite.internal.pagememory.mem.unsafe.UnsafeMemoryProvider;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.util.PageIdUtils;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.IgniteUtils;
@@ -425,21 +423,13 @@ public class VolatilePageMemory implements PageMemory {
// *** PageSupport methods ***
@Override public long acquirePage(int cacheId, long pageId) {
- return acquirePage(cacheId, pageId, IoStatisticsHolderNoOp.INSTANCE);
- }
-
- @Override public long acquirePage(int cacheId, long pageId,
IoStatisticsHolder statHolder) {
assert started;
int pageIdx = PageIdUtils.pageIndex(pageId);
Segment seg = segment(pageIdx);
- long absPtr = seg.acquirePage(pageIdx);
-
- statHolder.trackLogicalRead(absPtr + PAGE_OVERHEAD);
-
- return absPtr;
+ return seg.acquirePage(pageIdx);
}
@Override public void releasePage(int cacheId, long pageId, long page) {
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/metric/IoStatisticsHolder.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/metric/IoStatisticsHolder.java
deleted file mode 100644
index d4083e18d99..00000000000
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/metric/IoStatisticsHolder.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.pagememory.metric;
-
-/**
- * Holder of IO statistics.
- */
-public interface IoStatisticsHolder {
- /**
- * Track logical read of given page.
- *
- * @param pageAddr Address of page.
- */
- void trackLogicalRead(long pageAddr);
-
- /**
- * Track physical and logical read of given page.
- *
- * @param pageAddr Start address of page.
- */
- void trackPhysicalAndLogicalRead(long pageAddr);
-
- /**
- * Returns a number of logical reads.
- */
- long logicalReads();
-
- /**
- * Returns a number of physical reads.
- */
- long physicalReads();
-}
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/metric/IoStatisticsHolderNoOp.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/metric/IoStatisticsHolderNoOp.java
deleted file mode 100644
index de0a66e2574..00000000000
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/metric/IoStatisticsHolderNoOp.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.pagememory.metric;
-
-/**
- * No Operation IO statistics holder. Use in case statistics shouldn't be
gathered.
- */
-public class IoStatisticsHolderNoOp implements IoStatisticsHolder {
- /** No-op statistics. */
- public static final IoStatisticsHolderNoOp INSTANCE = new
IoStatisticsHolderNoOp();
-
- /**
- * Private constructor.
- */
- private IoStatisticsHolderNoOp() {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override
- public void trackLogicalRead(long pageAddr) {
- }
-
- /** {@inheritDoc} */
- @Override
- public void trackPhysicalAndLogicalRead(long pageAddr) {
- }
-
- /** {@inheritDoc} */
- @Override
- public long logicalReads() {
- return 0;
- }
-
- /** {@inheritDoc} */
- @Override
- public long physicalReads() {
- return 0;
- }
-}
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PersistentPageMemory.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PersistentPageMemory.java
index ea7aa5d332f..ee2d254e7e7 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PersistentPageMemory.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/persistence/PersistentPageMemory.java
@@ -90,8 +90,6 @@ import
org.apache.ignite.internal.pagememory.mem.DirectMemoryProvider;
import org.apache.ignite.internal.pagememory.mem.DirectMemoryRegion;
import org.apache.ignite.internal.pagememory.mem.IgniteOutOfMemoryException;
import org.apache.ignite.internal.pagememory.mem.unsafe.UnsafeMemoryProvider;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointMetricsTracker;
import
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointPages;
import
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointProgress;
@@ -623,13 +621,7 @@ public class PersistentPageMemory implements PageMemory {
/** {@inheritDoc} */
@Override
public long acquirePage(int grpId, long pageId) throws
IgniteInternalCheckedException {
- return acquirePage(grpId, pageId, IoStatisticsHolderNoOp.INSTANCE,
false);
- }
-
- /** {@inheritDoc} */
- @Override
- public long acquirePage(int grpId, long pageId, IoStatisticsHolder
statHolder) throws IgniteInternalCheckedException {
- return acquirePage(grpId, pageId, statHolder, false);
+ return acquirePage(grpId, pageId, false);
}
/**
@@ -643,7 +635,7 @@ public class PersistentPageMemory implements PageMemory {
* @see #acquirePage(int, long) Sets additional flag indicating that page
was not found in memory and had to be allocated.
*/
public long acquirePage(int grpId, long pageId, AtomicBoolean
pageAllocated) throws IgniteInternalCheckedException {
- return acquirePage(grpId, pageId, IoStatisticsHolderNoOp.INSTANCE,
false, pageAllocated);
+ return acquirePage(grpId, pageId, false, pageAllocated);
}
/**
@@ -656,14 +648,13 @@ public class PersistentPageMemory implements PageMemory {
* @throws IgniteInternalCheckedException If failed.
* @see #acquirePage(int, long) Will read page from file if it is not
present in memory.
*/
- public long acquirePage(int grpId, long pageId, IoStatisticsHolder
statHolder, boolean restore) throws IgniteInternalCheckedException {
- return acquirePage(grpId, pageId, statHolder, restore, null);
+ public long acquirePage(int grpId, long pageId, boolean restore) throws
IgniteInternalCheckedException {
+ return acquirePage(grpId, pageId, restore, null);
}
private long acquirePage(
int grpId,
long pageId,
- IoStatisticsHolder statHolder,
boolean restore,
@Nullable AtomicBoolean pageAllocated
) throws IgniteInternalCheckedException {
@@ -693,8 +684,6 @@ public class PersistentPageMemory implements PageMemory {
seg.pageReplacementPolicy.onHit(relPtr);
- statHolder.trackLogicalRead(absPtr + PAGE_OVERHEAD);
-
return absPtr;
}
} finally {
@@ -803,10 +792,6 @@ public class PersistentPageMemory implements PageMemory {
seg.acquirePage(absPtr);
- if (!readPageFromStore) {
- statHolder.trackLogicalRead(absPtr + PAGE_OVERHEAD);
- }
-
return absPtr;
} finally {
seg.writeLock().unlock();
@@ -828,8 +813,6 @@ public class PersistentPageMemory implements PageMemory {
try {
pageStoreManager.read(grpId, pageId, buf, false);
- statHolder.trackPhysicalAndLogicalRead(pageAddr);
-
actualPageId = getPageId(buf);
} finally {
rwLock.writeUnlock(lockedPageAbsPtr + PAGE_LOCK_OFFSET,
actualPageId == 0 ? TAG_LOCK_ALWAYS : tag(actualPageId));
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/tree/BplusTree.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/tree/BplusTree.java
index bc7da3ad373..c476fb0cefa 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/tree/BplusTree.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/tree/BplusTree.java
@@ -58,8 +58,6 @@ import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.datastructure.DataStructure;
import org.apache.ignite.internal.pagememory.io.IoVersions;
import org.apache.ignite.internal.pagememory.io.PageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.reuse.LongListReuseBag;
import org.apache.ignite.internal.pagememory.reuse.ReuseBag;
import org.apache.ignite.internal.pagememory.reuse.ReuseList;
@@ -822,8 +820,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
long metaAddr,
PageIo iox,
Void ignore,
- int lvl,
- IoStatisticsHolder statHolder
+ int lvl
) {
// Safe cast because we should never recycle meta page until the
tree is destroyed.
BplusMetaIo io = (BplusMetaIo) iox;
@@ -856,8 +853,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
long pageAddr,
PageIo iox,
Long rootPageId,
- int lvl,
- IoStatisticsHolder statHolder
+ int lvl
) {
assert rootPageId != null;
@@ -891,8 +887,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
long pageAddr,
PageIo iox,
Long rootId,
- int notUsed,
- IoStatisticsHolder statHolder
+ int notUsed
) {
assert rootId != null;
@@ -1029,7 +1024,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
init(rootId, latestLeafIo());
// Initialize meta page with new root page.
- Bool res = write(metaPageId, initRoot, latestMetaIo(), rootId, 0,
FALSE, statisticsHolder());
+ Bool res = write(metaPageId, initRoot, latestMetaIo(), rootId, 0,
FALSE);
assert res == TRUE : res;
@@ -3858,7 +3853,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
// Set forward id to check the triangle invariant under the
write-lock.
fwdId(fwdId);
- res = write(pageId, page, lockTailExact, this, lvl, RETRY,
statisticsHolder());
+ res = write(pageId, page, lockTailExact, this, lvl, RETRY);
}
// Release tail if retry is required.
@@ -4072,7 +4067,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
releasePage(newRootId, newRootPage);
}
- Bool res = write(metaPageId, addRoot, newRootId, lvl +
1, FALSE, statisticsHolder());
+ Bool res = write(metaPageId, addRoot, newRootId, lvl +
1, FALSE);
assert res == TRUE : res;
@@ -4104,7 +4099,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
this.pageId = pageId;
this.fwdId = fwdId;
- return write(pageId, page, insert, this, lvl, RETRY,
statisticsHolder());
+ return write(pageId, page, insert, this, lvl, RETRY);
}
/**
@@ -4122,7 +4117,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
this.pageId = pageId;
this.fwdId = fwdId;
- return write(pageId, page, replace, this, lvl, RETRY,
statisticsHolder());
+ return write(pageId, page, replace, this, lvl, RETRY);
}
/**
@@ -5055,7 +5050,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
long backPage = acquirePage(backId);
try {
- return write(backId, backPage, lockBackAndRmvFromLeaf, this,
0, RETRY, statisticsHolder());
+ return write(backId, backPage, lockBackAndRmvFromLeaf, this,
0, RETRY);
} finally {
if (canRelease(backId, 0)) {
releasePage(backId, backPage);
@@ -5072,7 +5067,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
private Result doRemoveFromLeaf() throws
IgniteInternalCheckedException {
assert page != 0L;
- return write(pageId, page, rmvFromLeaf, this, 0, RETRY,
statisticsHolder());
+ return write(pageId, page, rmvFromLeaf, this, 0, RETRY);
}
/**
@@ -5085,7 +5080,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
private Result doLockTail(int lvl) throws
IgniteInternalCheckedException {
assert page != 0L;
- return write(pageId, page, lockTail, this, lvl, RETRY,
statisticsHolder());
+ return write(pageId, page, lockTail, this, lvl, RETRY);
}
/**
@@ -5116,7 +5111,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
long backPage = acquirePage(backId);
try {
- return write(backId, backPage, lockBackAndTail, this, lvl,
RETRY, statisticsHolder());
+ return write(backId, backPage, lockBackAndTail, this, lvl,
RETRY);
} finally {
if (canRelease(backId, lvl)) {
releasePage(backId, backPage);
@@ -5139,7 +5134,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
long fwdPage = acquirePage(fwdId);
try {
- return write(fwdId, fwdPage, lockTailForward, this, lvl,
RETRY, statisticsHolder());
+ return write(fwdId, fwdPage, lockTailForward, this, lvl,
RETRY);
} finally {
// If we were not able to lock forward page as tail, release
the page.
if (canRelease(fwdId, lvl)) {
@@ -5368,7 +5363,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
* @throws IgniteInternalCheckedException If failed.
*/
private void cutRoot(int lvl) throws IgniteInternalCheckedException {
- Bool res = write(metaPageId, cutRoot, lvl, FALSE,
statisticsHolder());
+ Bool res = write(metaPageId, cutRoot, lvl, FALSE);
assert res == TRUE : res;
}
@@ -6399,8 +6394,7 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
long pageAddr,
PageIo iox,
G g,
- int lvl,
- IoStatisticsHolder statHolder
+ int lvl
) throws IgniteInternalCheckedException {
assert PageIo.getPageId(pageAddr) == pageId
: "pageId mismatch [requested=" + pageId + ", stored=" +
PageIo.getPageId(pageAddr) + "]";
@@ -6576,71 +6570,6 @@ public abstract class BplusTree<L, T extends L> extends
DataStructure implements
return LOCK_RETRIES;
}
- /**
- * Acquires the page by the given ID.
- *
- * @param pageId Page ID.
- * @return Page absolute pointer.
- * @throws IgniteInternalCheckedException If failed.
- * @see DataStructure#acquirePage(long, IoStatisticsHolder)
- */
- protected final long acquirePage(long pageId) throws
IgniteInternalCheckedException {
- return acquirePage(pageId, statisticsHolder());
- }
-
- /**
- * Executes handler under the read lock or returns lockFailed if lock
failed.
- *
- * @param pageId Page ID.
- * @param h Handler.
- * @param arg Argument.
- * @param intArg Argument of type {@code int}.
- * @param lockFailed Result in case of lock failure due to page recycling.
- * @return Handler result.
- * @throws IgniteInternalCheckedException If failed.
- * @see DataStructure#read(long, PageHandler, Object, int, Object,
IoStatisticsHolder)
- */
- protected final <X, R> R read(
- long pageId,
- PageHandler<X, R> h,
- X arg,
- int intArg,
- R lockFailed
- ) throws IgniteInternalCheckedException {
- return read(pageId, h, arg, intArg, lockFailed, statisticsHolder());
- }
-
- /**
- * Executes handler under the read lock or returns lockFailed if lock
failed.
- *
- * @param pageId Page ID.
- * @param page Page pointer.
- * @param h Handler.
- * @param arg Argument.
- * @param intArg Argument of type {@code int}.
- * @param lockFailed Result in case of lock failure due to page recycling.
- * @return Handler result.
- * @throws IgniteInternalCheckedException If failed.
- * @see DataStructure#read(long, long, PageHandler, Object, int, Object,
IoStatisticsHolder)
- */
- protected final <X, R> R read(
- long pageId,
- long page,
- PageHandler<X, R> h,
- X arg,
- int intArg,
- R lockFailed
- ) throws IgniteInternalCheckedException {
- return read(pageId, page, h, arg, intArg, lockFailed,
statisticsHolder());
- }
-
- /**
- * Returns statistics holder to track IO operations.
- */
- protected IoStatisticsHolder statisticsHolder() {
- return IoStatisticsHolderNoOp.INSTANCE;
- }
-
/**
* PageIds converter with empty check.
*
diff --git
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/util/PageHandler.java
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/util/PageHandler.java
index 21b59f58369..dba6d06464c 100644
---
a/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/util/PageHandler.java
+++
b/modules/page-memory/src/main/java/org/apache/ignite/internal/pagememory/util/PageHandler.java
@@ -22,7 +22,6 @@ import static java.lang.Boolean.FALSE;
import org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.io.PageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
import org.jetbrains.annotations.Nullable;
/**
@@ -33,7 +32,7 @@ import org.jetbrains.annotations.Nullable;
*/
public interface PageHandler<X, R> {
/** No-op page handler. */
- PageHandler<Void, Boolean> NO_OP = (groupId, pageId, page, pageAddr, io,
arg, intArg, statHolder) -> Boolean.TRUE;
+ PageHandler<Void, Boolean> NO_OP = (groupId, pageId, page, pageAddr, io,
arg, intArg) -> Boolean.TRUE;
/**
* Handles the page.
@@ -45,7 +44,6 @@ public interface PageHandler<X, R> {
* @param io IO.
* @param arg Argument.
* @param intArg Argument of type {@code int}.
- * @param statHolder Statistics holder to track IO operations.
* @return Result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -56,8 +54,7 @@ public interface PageHandler<X, R> {
long pageAddr,
PageIo io,
X arg,
- int intArg,
- IoStatisticsHolder statHolder
+ int intArg
) throws IgniteInternalCheckedException;
/**
@@ -92,7 +89,6 @@ public interface PageHandler<X, R> {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -103,13 +99,12 @@ public interface PageHandler<X, R> {
PageHandler<X, R> h,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
- long page = pageMem.acquirePage(groupId, pageId, statHolder);
+ long page = pageMem.acquirePage(groupId, pageId);
try {
- return readPage(pageMem, groupId, pageId, page, h, arg, intArg,
lockFailed, statHolder);
+ return readPage(pageMem, groupId, pageId, page, h, arg, intArg,
lockFailed);
} finally {
pageMem.releasePage(groupId, pageId, page);
}
@@ -126,7 +121,6 @@ public interface PageHandler<X, R> {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -138,8 +132,7 @@ public interface PageHandler<X, R> {
PageHandler<X, R> h,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
long pageAddr = 0L;
@@ -150,7 +143,7 @@ public interface PageHandler<X, R> {
PageIo io = pageMem.ioRegistry().resolve(pageAddr);
- return h.run(groupId, pageId, page, pageAddr, io, arg, intArg,
statHolder);
+ return h.run(groupId, pageId, page, pageAddr, io, arg, intArg);
} finally {
if (pageAddr != 0L) {
pageMem.readUnlock(groupId, pageId, page);
@@ -165,7 +158,6 @@ public interface PageHandler<X, R> {
* @param groupId Group ID.
* @param pageId Page ID.
* @param init IO for new page initialization.
- * @param statHolder Statistics holder to track IO operations.
* @throws IgniteInternalCheckedException If failed.
* @see PageIo#initNewPage(long, long, int)
*/
@@ -173,8 +165,7 @@ public interface PageHandler<X, R> {
PageMemory pageMem,
int groupId,
long pageId,
- PageIo init,
- IoStatisticsHolder statHolder
+ PageIo init
) throws IgniteInternalCheckedException {
Boolean res = writePage(
pageMem,
@@ -184,8 +175,7 @@ public interface PageHandler<X, R> {
init,
null,
0,
- FALSE,
- statHolder
+ FALSE
);
assert res != FALSE;
@@ -202,7 +192,6 @@ public interface PageHandler<X, R> {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -215,11 +204,10 @@ public interface PageHandler<X, R> {
@Nullable PageIo init,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
boolean releaseAfterWrite = true;
- long page = pageMem.acquirePage(groupId, pageId, statHolder);
+ long page = pageMem.acquirePage(groupId, pageId);
try {
long pageAddr = pageMem.writeLock(groupId, pageId, page);
@@ -237,7 +225,7 @@ public interface PageHandler<X, R> {
init = pageMem.ioRegistry().resolve(pageAddr);
}
- R res = h.run(groupId, pageId, page, pageAddr, init, arg,
intArg, statHolder);
+ R res = h.run(groupId, pageId, page, pageAddr, init, arg,
intArg);
ok = true;
@@ -268,7 +256,6 @@ public interface PageHandler<X, R> {
* @param arg Argument.
* @param intArg Argument of type {@code int}.
* @param lockFailed Result in case of lock failure due to page recycling.
- * @param statHolder Statistics holder to track IO operations.
* @return Handler result.
* @throws IgniteInternalCheckedException If failed.
*/
@@ -281,8 +268,7 @@ public interface PageHandler<X, R> {
PageIo init,
X arg,
int intArg,
- R lockFailed,
- IoStatisticsHolder statHolder
+ R lockFailed
) throws IgniteInternalCheckedException {
long pageAddr = pageMem.writeLock(groupId, pageId, page);
@@ -300,7 +286,7 @@ public interface PageHandler<X, R> {
init = pageMem.ioRegistry().resolve(pageAddr);
}
- R res = h.run(groupId, pageId, page, pageAddr, init, arg, intArg,
statHolder);
+ R res = h.run(groupId, pageId, page, pageAddr, init, arg, intArg);
ok = true;
diff --git
a/modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/freelist/FreeListImplTest.java
b/modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/freelist/FreeListImplTest.java
index b7dafa76284..edfe1fc993f 100644
---
a/modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/freelist/FreeListImplTest.java
+++
b/modules/page-memory/src/test/java/org/apache/ignite/internal/pagememory/freelist/FreeListImplTest.java
@@ -49,7 +49,6 @@ import
org.apache.ignite.internal.pagememory.configuration.schema.VolatilePageMe
import
org.apache.ignite.internal.pagememory.configuration.schema.VolatilePageMemoryProfileConfigurationSchema;
import org.apache.ignite.internal.pagememory.inmemory.VolatilePageMemory;
import org.apache.ignite.internal.pagememory.io.DataPageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import
org.apache.ignite.internal.storage.configurations.StorageProfileConfiguration;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.internal.util.OffheapReadWriteLock;
@@ -149,8 +148,7 @@ public class FreeListImplTest extends
BaseIgniteAbstractTest {
pageMemory,
metaPageId,
true,
- null,
- IoStatisticsHolderNoOp.INSTANCE
+ null
) {
@Override
public void insertDataRow(Storable row) throws
IgniteInternalCheckedException {
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryTableStorage.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryTableStorage.java
index f1415bcdf81..1727c156ba5 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryTableStorage.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/PersistentPageMemoryTableStorage.java
@@ -30,7 +30,6 @@ import
org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.lang.IgniteStringFormatter;
import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.freelist.FreeListImpl;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.persistence.GroupPartitionId;
import org.apache.ignite.internal.pagememory.persistence.PersistentPageMemory;
import
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointProgress;
@@ -171,8 +170,7 @@ public class PersistentPageMemoryTableStorage extends
AbstractPageMemoryTableSto
dataRegion.pageMemory(),
meta.freeListRootPageId(),
initNew,
- dataRegion.pageListCacheLimit(),
- IoStatisticsHolderNoOp.INSTANCE
+ dataRegion.pageListCacheLimit()
);
} catch (IgniteInternalCheckedException e) {
throw new StorageException("Error creating free list: [tableId={},
partitionId={}]", e, getTableId(), partId);
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataRegion.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataRegion.java
index f28a98a3bf2..c2d9f2bd6ae 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataRegion.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/VolatilePageMemoryDataRegion.java
@@ -28,7 +28,6 @@ import
org.apache.ignite.internal.pagememory.configuration.schema.VolatilePageMe
import org.apache.ignite.internal.pagememory.freelist.FreeListImpl;
import org.apache.ignite.internal.pagememory.inmemory.VolatilePageMemory;
import org.apache.ignite.internal.pagememory.io.PageIoRegistry;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.reuse.ReuseList;
import org.apache.ignite.internal.storage.StorageException;
import org.apache.ignite.internal.util.OffheapReadWriteLock;
@@ -105,8 +104,7 @@ public class VolatilePageMemoryDataRegion implements
DataRegion<VolatilePageMemo
metaPageId,
true,
// Because in memory.
- null,
- IoStatisticsHolderNoOp.INSTANCE
+ null
);
}
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/index/hash/HashIndexTree.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/index/hash/HashIndexTree.java
index 890668f7e5f..8c21bd479b1 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/index/hash/HashIndexTree.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/index/hash/HashIndexTree.java
@@ -69,7 +69,7 @@ public class HashIndexTree extends BplusTree<HashIndexRowKey,
HashIndexRow> {
super("HashIndexTree", grpId, grpName, partId, pageMem, globalRmvId,
metaPageId, reuseList);
this.inlineSize = readInlineSizeFromMetaIo();
- this.dataPageReader = new DataPageReader(pageMem, grpId,
statisticsHolder());
+ this.dataPageReader = new DataPageReader(pageMem, grpId);
init(false);
}
@@ -101,7 +101,7 @@ public class HashIndexTree extends
BplusTree<HashIndexRowKey, HashIndexRow> {
super("HashIndexTree", grpId, grpName, partId, pageMem, globalRmvId,
metaPageId, reuseList);
this.inlineSize = binaryTupleInlineSize(pageSize(),
ITEM_SIZE_WITHOUT_COLUMNS, indexDescriptor);
- this.dataPageReader = new DataPageReader(pageMem, grpId,
statisticsHolder());
+ this.dataPageReader = new DataPageReader(pageMem, grpId);
init(true);
@@ -187,7 +187,7 @@ public class HashIndexTree extends
BplusTree<HashIndexRowKey, HashIndexRow> {
private int readInlineSizeFromMetaIo() throws
IgniteInternalCheckedException {
Integer inlineSize = read(
metaPageId,
- (groupId, pageId, page, pageAddr, io, arg, intArg, statHolder)
-> ((HashIndexTreeMetaIo) io).getInlineSize(pageAddr),
+ (groupId, pageId, page, pageAddr, io, arg, intArg) ->
((HashIndexTreeMetaIo) io).getInlineSize(pageAddr),
null,
0,
-1
@@ -201,14 +201,13 @@ public class HashIndexTree extends
BplusTree<HashIndexRowKey, HashIndexRow> {
private void writeInlineSizeToMetaIo(int inlineSize) throws
IgniteInternalCheckedException {
Boolean result = write(
metaPageId,
- (groupId, pageId, page, pageAddr, io, arg, intArg, statHolder)
-> {
+ (groupId, pageId, page, pageAddr, io, arg, intArg) -> {
((HashIndexTreeMetaIo) io).setInlineSize(pageAddr,
inlineSize);
return Boolean.TRUE;
},
0,
- Boolean.FALSE,
- statisticsHolder()
+ Boolean.FALSE
);
assert result == Boolean.TRUE : result;
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/index/sorted/SortedIndexTree.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/index/sorted/SortedIndexTree.java
index c0c9d264141..2e78265d958 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/index/sorted/SortedIndexTree.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/index/sorted/SortedIndexTree.java
@@ -87,7 +87,7 @@ public class SortedIndexTree extends
BplusTree<SortedIndexRowKey, SortedIndexRow
this.inlineSize = initNew
? binaryTupleInlineSize(pageSize(), ITEM_SIZE_WITHOUT_COLUMNS,
indexDescriptor)
: readInlineSizeFromMetaIo();
- this.dataPageReader = new DataPageReader(pageMem, grpId,
statisticsHolder());
+ this.dataPageReader = new DataPageReader(pageMem, grpId);
this.binaryTupleComparator =
StorageUtils.binaryTupleComparator(indexDescriptor.columns());
init(initNew);
@@ -118,7 +118,7 @@ public class SortedIndexTree extends
BplusTree<SortedIndexRowKey, SortedIndexRow
super("SortedIndexTree", grpId, grpName, partId, pageMem, globalRmvId,
metaPageId, reuseList);
this.inlineSize = readInlineSizeFromMetaIo();
- this.dataPageReader = new DataPageReader(pageMem, grpId,
statisticsHolder());
+ this.dataPageReader = new DataPageReader(pageMem, grpId);
this.binaryTupleComparator = null;
init(false);
@@ -224,7 +224,7 @@ public class SortedIndexTree extends
BplusTree<SortedIndexRowKey, SortedIndexRow
private int readInlineSizeFromMetaIo() throws
IgniteInternalCheckedException {
Integer inlineSize = read(
metaPageId,
- (groupId, pageId, page, pageAddr, io, arg, intArg, statHolder)
-> ((SortedIndexTreeMetaIo) io).getInlineSize(pageAddr),
+ (groupId, pageId, page, pageAddr, io, arg, intArg) ->
((SortedIndexTreeMetaIo) io).getInlineSize(pageAddr),
null,
0,
-1
@@ -238,14 +238,13 @@ public class SortedIndexTree extends
BplusTree<SortedIndexRowKey, SortedIndexRow
private void writeInlineSizeToMetaIo(int inlineSize) throws
IgniteInternalCheckedException {
Boolean result = write(
metaPageId,
- (groupId, pageId, page, pageAddr, io, arg, intArg, statHolder)
-> {
+ (groupId, pageId, page, pageAddr, io, arg, intArg) -> {
((SortedIndexTreeMetaIo) io).setInlineSize(pageAddr,
inlineSize);
return Boolean.TRUE;
},
0,
- Boolean.FALSE,
- statisticsHolder()
+ Boolean.FALSE
);
assert result == Boolean.TRUE : result;
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
index 2929adbf32a..ad6f166a78a 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/AbstractPageMemoryMvPartitionStorage.java
@@ -39,7 +39,6 @@ import org.apache.ignite.internal.lang.IgniteStringFormatter;
import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.datapage.DataPageReader;
import org.apache.ignite.internal.pagememory.freelist.FreeListImpl;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.tree.BplusTree.TreeRowMapClosure;
import org.apache.ignite.internal.pagememory.tree.IgniteTree.InvokeClosure;
import org.apache.ignite.internal.pagememory.util.GradualTaskExecutor;
@@ -139,7 +138,7 @@ public abstract class AbstractPageMemoryMvPartitionStorage
implements MvPartitio
PageMemory pageMemory = tableStorage.dataRegion().pageMemory();
- rowVersionDataPageReader = new DataPageReader(pageMemory,
tableStorage.getTableId(), IoStatisticsHolderNoOp.INSTANCE);
+ rowVersionDataPageReader = new DataPageReader(pageMemory,
tableStorage.getTableId());
updateNextLinkHandler = new UpdateNextLinkHandler();
updateTimestampHandler = new UpdateTimestampHandler();
}
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/BlobStorage.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/BlobStorage.java
index 2ffc7fcc32c..d47a86b015a 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/BlobStorage.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/BlobStorage.java
@@ -23,8 +23,6 @@ import org.apache.ignite.internal.pagememory.PageIdAllocator;
import org.apache.ignite.internal.pagememory.PageMemory;
import org.apache.ignite.internal.pagememory.datastructure.DataStructure;
import org.apache.ignite.internal.pagememory.io.PageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.reuse.LongListReuseBag;
import org.apache.ignite.internal.pagememory.reuse.ReuseBag;
import org.apache.ignite.internal.pagememory.reuse.ReuseList;
@@ -43,8 +41,6 @@ public class BlobStorage extends DataStructure {
/** ID that means that no page was stored. */
public static final long NO_PAGE_ID = 0;
- private final IoStatisticsHolder statisticsHolder;
-
private final RecycleAndAddToReuseBag recycleAndAddToReuseBag = new
RecycleAndAddToReuseBag();
private final ReadFragment readFragment = new ReadFragment();
@@ -54,11 +50,10 @@ public class BlobStorage extends DataStructure {
/**
* Creates a new instance.
*/
- public BlobStorage(ReuseList reuseList, PageMemory pageMemory, int
groupId, int partitionId, IoStatisticsHolder statisticsHolder) {
+ public BlobStorage(ReuseList reuseList, PageMemory pageMemory, int
groupId, int partitionId) {
super("BlobStorage", groupId, null, partitionId, pageMemory,
PageIdAllocator.FLAG_AUX);
super.reuseList = reuseList;
- this.statisticsHolder = statisticsHolder;
}
/**
@@ -81,8 +76,7 @@ public class BlobStorage extends DataStructure {
readFragment,
readState,
0,
- false,
- IoStatisticsHolderNoOp.INSTANCE
+ false
);
assert ok : pageId;
@@ -134,8 +128,7 @@ public class BlobStorage extends DataStructure {
null,
state,
0,
- false,
- statisticsHolder
+ false
);
assert ok : state.pageId;
@@ -173,7 +166,7 @@ public class BlobStorage extends DataStructure {
while (pageId != NO_PAGE_ID) {
Long nextPageId = PageHandler.writePage(pageMem, grpId, pageId,
- recycleAndAddToReuseBag, null, reuseBag, 0, pageId,
IoStatisticsHolderNoOp.INSTANCE);
+ recycleAndAddToReuseBag, null, reuseBag, 0, pageId);
assert nextPageId != pageId : pageId;
@@ -203,8 +196,7 @@ public class BlobStorage extends DataStructure {
*/
private class ReadFragment implements PageHandler<ReadState, Boolean> {
@Override
- public Boolean run(int groupId, long pageId, long page, long pageAddr,
PageIo io, ReadState state, int unused,
- IoStatisticsHolder statHolder) throws
IgniteInternalCheckedException {
+ public Boolean run(int groupId, long pageId, long page, long pageAddr,
PageIo io, ReadState state, int unused) {
BlobFragmentIo blobIo = (BlobFragmentIo) io;
if (state.bytes == null) {
@@ -264,8 +256,9 @@ public class BlobStorage extends DataStructure {
*/
private class WriteFragment implements PageHandler<WriteState, Boolean> {
@Override
- public Boolean run(int groupId, long pageId, long page, long pageAddr,
PageIo io, WriteState state, int unused,
- IoStatisticsHolder statHolder) throws
IgniteInternalCheckedException {
+ public Boolean run(
+ int groupId, long pageId, long page, long pageAddr, PageIo io,
WriteState state, int unused
+ ) throws IgniteInternalCheckedException {
BlobFragmentIo blobIo = (BlobFragmentIo) io;
int capacityForBytes =
blobIo.getCapacityForFragmentBytes(pageSize(), state.isFirstPage());
@@ -305,8 +298,7 @@ public class BlobStorage extends DataStructure {
*/
private static class RecycleAndAddToReuseBag implements
PageHandler<ReuseBag, Long> {
@Override
- public Long run(int groupId, long pageId, long page, long pageAddr,
PageIo io, ReuseBag reuseBag, int unused,
- IoStatisticsHolder statHolder) {
+ public Long run(int groupId, long pageId, long page, long pageAddr,
PageIo io, ReuseBag reuseBag, int unused) {
BlobFragmentIo blobIo = (BlobFragmentIo) io;
long nextPageId = blobIo.getNextPageId(pageAddr);
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/CommitWriteInvokeClosure.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/CommitWriteInvokeClosure.java
index e52cb498cba..39fa14feb6b 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/CommitWriteInvokeClosure.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/CommitWriteInvokeClosure.java
@@ -26,7 +26,6 @@ import
org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.pagememory.freelist.FreeList;
import org.apache.ignite.internal.pagememory.io.DataPageIo;
import org.apache.ignite.internal.pagememory.io.PageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
import org.apache.ignite.internal.pagememory.tree.BplusTree;
import org.apache.ignite.internal.pagememory.tree.IgniteTree.InvokeClosure;
import org.apache.ignite.internal.pagememory.tree.IgniteTree.OperationType;
@@ -106,8 +105,7 @@ class CommitWriteInvokeClosure implements
InvokeClosure<VersionChain> {
long pageAddr,
PageIo io,
HybridTimestamp arg,
- int itemId,
- IoStatisticsHolder statHolder
+ int itemId
) throws IgniteInternalCheckedException {
DataPageIo dataIo = (DataPageIo) io;
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorage.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorage.java
index 9cd8105ab30..0e2eec55dae 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorage.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/PersistentPageMemoryMvPartitionStorage.java
@@ -32,7 +32,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.pagememory.DataRegion;
import org.apache.ignite.internal.pagememory.freelist.FreeListImpl;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.persistence.PersistentPageMemory;
import
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointListener;
import
org.apache.ignite.internal.pagememory.persistence.checkpoint.CheckpointManager;
@@ -145,8 +144,7 @@ public class PersistentPageMemoryMvPartitionStorage extends
AbstractPageMemoryMv
freeList,
dataRegion.pageMemory(),
tableStorage.getTableId(),
- partitionId,
- IoStatisticsHolderNoOp.INSTANCE
+ partitionId
);
}
@@ -508,8 +506,7 @@ public class PersistentPageMemoryMvPartitionStorage extends
AbstractPageMemoryMv
freeList,
tableStorage.dataRegion().pageMemory(),
tableStorage.getTableId(),
- partitionId,
- IoStatisticsHolderNoOp.INSTANCE
+ partitionId
);
updateRenewableState(
diff --git
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/RemoveWriteOnGcInvokeClosure.java
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/RemoveWriteOnGcInvokeClosure.java
index 73445a12261..aec1f3986af 100644
---
a/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/RemoveWriteOnGcInvokeClosure.java
+++
b/modules/storage-page-memory/src/main/java/org/apache/ignite/internal/storage/pagememory/mv/RemoveWriteOnGcInvokeClosure.java
@@ -30,7 +30,6 @@ import
org.apache.ignite.internal.lang.IgniteInternalCheckedException;
import org.apache.ignite.internal.pagememory.freelist.FreeList;
import org.apache.ignite.internal.pagememory.io.DataPageIo;
import org.apache.ignite.internal.pagememory.io.PageIo;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolder;
import org.apache.ignite.internal.pagememory.tree.BplusTree;
import org.apache.ignite.internal.pagememory.tree.IgniteTree.InvokeClosure;
import org.apache.ignite.internal.pagememory.tree.IgniteTree.OperationType;
@@ -106,8 +105,7 @@ public class RemoveWriteOnGcInvokeClosure implements
InvokeClosure<VersionChain>
long pageAddr,
PageIo io,
Long nextLink,
- int itemId,
- IoStatisticsHolder statHolder
+ int itemId
) throws IgniteInternalCheckedException {
DataPageIo dataIo = (DataPageIo) io;
diff --git
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/BlobStorageTest.java
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/BlobStorageTest.java
index 829d619c010..b2204a529cd 100644
---
a/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/BlobStorageTest.java
+++
b/modules/storage-page-memory/src/test/java/org/apache/ignite/internal/storage/pagememory/mv/BlobStorageTest.java
@@ -39,7 +39,6 @@ import
org.apache.ignite.internal.pagememory.configuration.schema.VolatilePageMe
import
org.apache.ignite.internal.pagememory.configuration.schema.VolatilePageMemoryProfileConfigurationSchema;
import org.apache.ignite.internal.pagememory.inmemory.VolatilePageMemory;
import org.apache.ignite.internal.pagememory.io.PageIoRegistry;
-import org.apache.ignite.internal.pagememory.metric.IoStatisticsHolderNoOp;
import org.apache.ignite.internal.pagememory.reuse.ReuseBag;
import org.apache.ignite.internal.pagememory.reuse.ReuseList;
import
org.apache.ignite.internal.storage.configurations.StorageProfileConfiguration;
@@ -89,7 +88,7 @@ class BlobStorageTest extends BaseIgniteAbstractTest {
pageMemory.start();
- blobStorage = new BlobStorage(reuseList, pageMemory, 1, 1,
IoStatisticsHolderNoOp.INSTANCE);
+ blobStorage = new BlobStorage(reuseList, pageMemory, 1, 1);
}
@Test