Skip to content

Inefficient recovery of BRIN indexes #537

@eolivelli

Description

@eolivelli

Another flavour of #127

during recovery of a large table with BRIN indexes we can see BRIN index checkpoints, with an fsync (force0)

hdb-mucca-activator" #29 daemon prio=5 os_prio=0 cpu=731142,82ms elapsed=1803,92s tid=0x00007f5a5d51c800 nid=0x168ba runnable  [0x00007f59d58d4000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.FileDispatcherImpl.force0(java.base@13.0.1/Native Method)
        at sun.nio.ch.FileDispatcherImpl.force(java.base@13.0.1/FileDispatcherImpl.java:82)
        at sun.nio.ch.FileChannelImpl.force(java.base@13.0.1/FileChannelImpl.java:461)
        at herddb.utils.ManagedFile.sync(ManagedFile.java:115)
        at herddb.file.FileDataStorageManager.writeIndexPage(FileDataStorageManager.java:910)
        at herddb.file.FileDataStorageManager.writeIndexPage(FileDataStorageManager.java:938)
        at herddb.index.brin.BRINIndexManager$IndexDataStorageImpl.createDataPage(BRINIndexManager.java:470)
        at herddb.index.brin.BlockRangeIndex$Block.checkpointNoLock(BlockRangeIndex.java:665)
        at herddb.index.brin.BlockRangeIndex$Block.checkpoint(BlockRangeIndex.java:679)
        at herddb.index.brin.BlockRangeIndex$Block.unloadNoLock(BlockRangeIndex.java:691)
        at herddb.index.brin.BlockRangeIndex$Block.unload(BlockRangeIndex.java:702)
        at herddb.index.brin.BlockRangeIndex$Block.unload(BlockRangeIndex.java:730)
        at herddb.index.brin.BlockRangeIndex$Block.ensureBlockLoaded(BlockRangeIndex.java:499)
        at herddb.index.brin.BlockRangeIndex$Block.delete(BlockRangeIndex.java:380)
        at herddb.index.brin.BlockRangeIndex.delete(BlockRangeIndex.java:1055)
        at herddb.index.brin.BRINIndexManager.recordDeleted(BRINIndexManager.java:421)
        at herddb.core.TableManager.applyDelete(TableManager.java:1677)
        at herddb.core.TableManager.onTransactionCommit(TableManager.java:1467)
        at herddb.core.TableSpaceManager.apply(TableSpaceManager.java:368)
        at herddb.core.TableSpaceManager$ApplyEntryOnRecovery.accept(TableSpaceManager.java:1858)
        at herddb.core.TableSpaceManager$ApplyEntryOnRecovery.accept(TableSpaceManager.java:1847)
        at herddb.cluster.BookkeeperCommitLog.recovery(BookkeeperCommitLog.java:477)
        at herddb.core.TableSpaceManager.recover(TableSpaceManager.java:299)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions