Search in sources :

Example 1 with LogStorageOptions

use of org.apache.ignite.raft.jraft.option.LogStorageOptions in project ignite-3 by apache.

the class LogManagerImpl method init.

@Override
public boolean init(final LogManagerOptions opts) {
    this.writeLock.lock();
    try {
        if (opts.getLogStorage() == null) {
            LOG.error("Fail to init log manager, log storage is null");
            return false;
        }
        this.raftOptions = opts.getRaftOptions();
        this.nodeMetrics = opts.getNodeMetrics();
        this.logStorage = opts.getLogStorage();
        this.configManager = opts.getConfigurationManager();
        this.nodeOptions = opts.getNode().getOptions();
        this.groupId = opts.getGroupId();
        LogStorageOptions lsOpts = new LogStorageOptions();
        lsOpts.setConfigurationManager(this.configManager);
        lsOpts.setLogEntryCodecFactory(opts.getLogEntryCodecFactory());
        if (!this.logStorage.init(lsOpts)) {
            LOG.error("Fail to init logStorage");
            return false;
        }
        this.firstLogIndex = this.logStorage.getFirstLogIndex();
        this.lastLogIndex = this.logStorage.getLastLogIndex();
        this.diskId = new LogId(this.lastLogIndex, getTermFromLogStorage(this.lastLogIndex));
        this.fsmCaller = opts.getFsmCaller();
        this.disruptor = opts.getLogManagerDisruptor();
        this.diskQueue = disruptor.subscribe(groupId, new StableClosureEventHandler(), (event, ex) -> reportError(-1, "LogManager handle event error"));
        if (this.nodeMetrics.getMetricRegistry() != null) {
            this.nodeMetrics.getMetricRegistry().register("jraft-log-manager-disruptor", new DisruptorMetricSet(this.diskQueue));
        }
    } finally {
        this.writeLock.unlock();
    }
    return true;
}
Also used : Configuration(org.apache.ignite.raft.jraft.conf.Configuration) NodeMetrics(org.apache.ignite.raft.jraft.core.NodeMetrics) RaftException(org.apache.ignite.raft.jraft.error.RaftException) LogEntryCorruptedException(org.apache.ignite.raft.jraft.error.LogEntryCorruptedException) Requires(org.apache.ignite.raft.jraft.util.Requires) LogEntry(org.apache.ignite.raft.jraft.entity.LogEntry) HashMap(java.util.HashMap) ReentrantReadWriteLock(java.util.concurrent.locks.ReentrantReadWriteLock) IgniteLogger(org.apache.ignite.lang.IgniteLogger) ConfigurationManager(org.apache.ignite.raft.jraft.conf.ConfigurationManager) NodeOptions(org.apache.ignite.raft.jraft.option.NodeOptions) SegmentList(org.apache.ignite.raft.jraft.util.SegmentList) ArrayList(java.util.ArrayList) StripedDisruptor(org.apache.ignite.raft.jraft.disruptor.StripedDisruptor) Map(java.util.Map) LogId(org.apache.ignite.raft.jraft.entity.LogId) LogStorageOptions(org.apache.ignite.raft.jraft.option.LogStorageOptions) EventHandler(com.lmax.disruptor.EventHandler) ReadWriteLock(java.util.concurrent.locks.ReadWriteLock) ErrorType(org.apache.ignite.raft.jraft.entity.EnumOutter.ErrorType) SnapshotMeta(org.apache.ignite.raft.jraft.entity.RaftOutter.SnapshotMeta) RingBuffer(com.lmax.disruptor.RingBuffer) Status(org.apache.ignite.raft.jraft.Status) ThreadHelper(org.apache.ignite.raft.jraft.util.ThreadHelper) GroupAware(org.apache.ignite.raft.jraft.disruptor.GroupAware) EntryType(org.apache.ignite.raft.jraft.entity.EnumOutter.EntryType) Utils(org.apache.ignite.raft.jraft.util.Utils) CountDownLatch(java.util.concurrent.CountDownLatch) ConfigurationEntry(org.apache.ignite.raft.jraft.conf.ConfigurationEntry) PeerId(org.apache.ignite.raft.jraft.entity.PeerId) List(java.util.List) Lock(java.util.concurrent.locks.Lock) LogManagerOptions(org.apache.ignite.raft.jraft.option.LogManagerOptions) EventTranslator(com.lmax.disruptor.EventTranslator) LogStorage(org.apache.ignite.raft.jraft.storage.LogStorage) FSMCaller(org.apache.ignite.raft.jraft.FSMCaller) ArrayDeque(org.apache.ignite.raft.jraft.util.ArrayDeque) DisruptorMetricSet(org.apache.ignite.raft.jraft.util.DisruptorMetricSet) RaftOptions(org.apache.ignite.raft.jraft.option.RaftOptions) CopyOnWriteArrayList(java.util.concurrent.CopyOnWriteArrayList) RaftError(org.apache.ignite.raft.jraft.error.RaftError) LogManager(org.apache.ignite.raft.jraft.storage.LogManager) DisruptorMetricSet(org.apache.ignite.raft.jraft.util.DisruptorMetricSet) LogStorageOptions(org.apache.ignite.raft.jraft.option.LogStorageOptions) LogId(org.apache.ignite.raft.jraft.entity.LogId)

Example 2 with LogStorageOptions

use of org.apache.ignite.raft.jraft.option.LogStorageOptions in project ignite-3 by apache.

the class BaseLogStorageTest method setup.

@BeforeEach
public void setup() throws Exception {
    this.confManager = new ConfigurationManager();
    this.logEntryCodecFactory = LogEntryV1CodecFactory.getInstance();
    this.logStorage = newLogStorage();
    final LogStorageOptions opts = newLogStorageOptions();
    this.logStorage.init(opts);
}
Also used : LogStorageOptions(org.apache.ignite.raft.jraft.option.LogStorageOptions) ConfigurationManager(org.apache.ignite.raft.jraft.conf.ConfigurationManager) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 3 with LogStorageOptions

use of org.apache.ignite.raft.jraft.option.LogStorageOptions in project ignite-3 by apache.

the class BaseLogStorageTest method newLogStorageOptions.

protected LogStorageOptions newLogStorageOptions() {
    final LogStorageOptions opts = new LogStorageOptions();
    opts.setConfigurationManager(this.confManager);
    opts.setLogEntryCodecFactory(this.logEntryCodecFactory);
    return opts;
}
Also used : LogStorageOptions(org.apache.ignite.raft.jraft.option.LogStorageOptions)

Example 4 with LogStorageOptions

use of org.apache.ignite.raft.jraft.option.LogStorageOptions in project ignite-3 by apache.

the class LogStorageBenchmark method main.

public static void main(final String[] args) {
    String testPath = Paths.get(SystemPropertyUtil.get("user.dir"), "log_storage").toString();
    System.out.println("Test log storage path: " + testPath);
    int batchSize = 100;
    int logSize = 16 * 1024;
    int totalLogs = 30 * 1024;
    LogStorage logStorage = new RocksDBLogStorage(testPath, new RaftOptions());
    // LogStorage logStorage = new LocalLogStorage(testPath, new RaftOptions());
    LogStorageOptions opts = new LogStorageOptions();
    opts.setConfigurationManager(new ConfigurationManager());
    opts.setLogEntryCodecFactory(LogEntryV1CodecFactory.getInstance());
    logStorage.init(opts);
    new LogStorageBenchmark(logStorage, logSize, totalLogs, batchSize).doTest();
}
Also used : RaftOptions(org.apache.ignite.raft.jraft.option.RaftOptions) LogStorageOptions(org.apache.ignite.raft.jraft.option.LogStorageOptions) LogStorage(org.apache.ignite.raft.jraft.storage.LogStorage) ConfigurationManager(org.apache.ignite.raft.jraft.conf.ConfigurationManager)

Aggregations

LogStorageOptions (org.apache.ignite.raft.jraft.option.LogStorageOptions)4 ConfigurationManager (org.apache.ignite.raft.jraft.conf.ConfigurationManager)3 RaftOptions (org.apache.ignite.raft.jraft.option.RaftOptions)2 LogStorage (org.apache.ignite.raft.jraft.storage.LogStorage)2 EventHandler (com.lmax.disruptor.EventHandler)1 EventTranslator (com.lmax.disruptor.EventTranslator)1 RingBuffer (com.lmax.disruptor.RingBuffer)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 Lock (java.util.concurrent.locks.Lock)1 ReadWriteLock (java.util.concurrent.locks.ReadWriteLock)1 ReentrantReadWriteLock (java.util.concurrent.locks.ReentrantReadWriteLock)1 IgniteLogger (org.apache.ignite.lang.IgniteLogger)1 FSMCaller (org.apache.ignite.raft.jraft.FSMCaller)1 Status (org.apache.ignite.raft.jraft.Status)1 Configuration (org.apache.ignite.raft.jraft.conf.Configuration)1