001/**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package org.apache.activemq.leveldb;
019
020import org.apache.activemq.broker.jmx.MBeanInfo;
021
022import java.io.File;
023
024/**
025 * <p>
026 * </p>
027 *
028 * @author <a href="http://hiramchirino.com">Hiram Chirino</a>
029 */
030public interface LevelDBStoreViewMBean {
031
032    @MBeanInfo("The directory holding the store index data.")
033    String getIndexDirectory();
034
035    @MBeanInfo("The directory holding the store log data.")
036    String getLogDirectory();
037
038    @MBeanInfo("The size the log files are allowed to grow to.")
039    long getLogSize();
040
041    @MBeanInfo("The implementation of the LevelDB index being used.")
042    String getIndexFactory();
043
044    @MBeanInfo("Are writes synced to disk.")
045    boolean getSync();
046
047    @MBeanInfo("Is data verified against checksums as it's loaded back from disk.")
048    boolean getVerifyChecksums();
049
050    @MBeanInfo("The maximum number of open files the index will open at one time.")
051    int getIndexMaxOpenFiles();
052
053    @MBeanInfo("Number of keys between restart points for delta encoding of keys in the index")
054    int getIndexBlockRestartInterval();
055
056    @MBeanInfo("Do aggressive checking of store data")
057    boolean getParanoidChecks();
058
059    @MBeanInfo("Amount of data to build up in memory for the index before converting to a sorted on-disk file.")
060    int getIndexWriteBufferSize();
061
062    @MBeanInfo("Approximate size of user data packed per block for the index")
063    int getIndexBlockSize();
064
065    @MBeanInfo("The type of compression to use for the index")
066    String getIndexCompression();
067
068    @MBeanInfo("The size of the cache index")
069    long getIndexCacheSize();
070
071    @MBeanInfo("The maximum amount of async writes to buffer up")
072    int getAsyncBufferSize();
073
074    @MBeanInfo("The number of units of work which have been closed.")
075    long getUowClosedCounter();
076    @MBeanInfo("The number of units of work which have been canceled.")
077    long getUowCanceledCounter();
078    @MBeanInfo("The number of units of work which started getting stored.")
079    long getUowStoringCounter();
080    @MBeanInfo("The number of units of work which completed getting stored")
081    long getUowStoredCounter();
082
083    @MBeanInfo("Gets and resets the maximum time (in ms) a unit of work took to complete.")
084    double resetUowMaxCompleteLatency();
085    @MBeanInfo("Gets and resets the maximum time (in ms) an index write batch took to execute.")
086    double resetMaxIndexWriteLatency();
087    @MBeanInfo("Gets and resets the maximum time (in ms) a log write took to execute (includes the index write latency).")
088    double resetMaxLogWriteLatency();
089    @MBeanInfo("Gets and resets the maximum time (in ms) a log flush took to execute.")
090    double resetMaxLogFlushLatency();
091    @MBeanInfo("Gets and resets the maximum time (in ms) a log rotation took to perform.")
092    double resetMaxLogRotateLatency();
093
094    @MBeanInfo("Gets the maximum time (in ms) a unit of work took to complete.")
095    double getUowMaxCompleteLatency();
096    @MBeanInfo("Gets the maximum time (in ms) an index write batch took to execute.")
097    double getMaxIndexWriteLatency();
098    @MBeanInfo("Gets the maximum time (in ms) a log write took to execute (includes the index write latency).")
099    double getMaxLogWriteLatency();
100    @MBeanInfo("Gets the maximum time (in ms) a log flush took to execute.")
101    double getMaxLogFlushLatency();
102    @MBeanInfo("Gets the maximum time (in ms) a log rotation took to perform.")
103    double getMaxLogRotateLatency();
104
105    @MBeanInfo("Gets the index statistics.")
106    String getIndexStats();
107
108    @MBeanInfo("Compacts disk usage")
109    void compact();
110
111}