blob: 415b34629db63f3ef42873c5814200d6f739c585 [file] [log] [blame]
/*
* 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.jackrabbit.oak.api.jmx;
import javax.management.openmbean.CompositeData;
import javax.management.openmbean.TabularData;
import org.osgi.annotation.versioning.ProviderType;
@ProviderType
public interface IndexStatsMBean {
String TYPE = "IndexStats";
String STATUS_INIT = "init";
String STATUS_RUNNING = "running";
String STATUS_DONE = "done";
String STATUS_FAILING = "failing";
String STATUS_INTERRUPTED = "interrupted";
/**
* Name of the async indexing lane
*/
String getName();
/**
* @return The time the indexing job stared at, or {@code ""} if it is
* not currently running.
*/
String getStart();
/**
* @return The time the indexing job finished at, or {@code ""} if it
* is still running.
*/
String getDone();
/**
* Returns the current status of the indexing job
*
* @return the current status of the indexing job: {@value #STATUS_INIT},
* {@value #STATUS_RUNNING} or {@value #STATUS_DONE}
*/
String getStatus();
/**
* @return the last upto which the repository was indexed
*/
String getLastIndexedTime();
/**
* Pauses the background indexing process. Future changes are not indexed
* until the {@link #resume()} method is called.
*
* The pause call will take effect on the next run cycle and will affect all
* indexes marked as 'async'.
*
* Note: this is experimental and should only be used for
* debugging/diagnosis purposes!
*
*/
void pause();
@Description("Aborts any running indexing cycle and pauses the indexer. Invoke 'resume' once you are read to " +
"resume indexing again")
String abortAndPause();
/**
* Resumes the indexing process. All changes from the previous indexed state
* will be indexed.
*
* @see #pause()
*/
void resume();
/**
* Returns the value of the 'paused' flag
*
* @return true if the indexing job is paused
*/
boolean isPaused();
/**
* Returns the number of updates from the current run cycle. This value is
* kept until the next cycle begins.
*
* @return the number of updates from the current run cycle. This value is
* kept until the next cycle begins.
*/
long getUpdates();
/**
* Returns the number of which have been read so far. This value is
* kept until the next cycle begins.
*
* @return the number of node read from the current run cycle. This value is
* kept until the next cycle begins.
*/
long getNodesReadCount();
/**
* Returns the current reference checkpoint used by the async indexer
*
* @return the reference checkpoint
*/
String getReferenceCheckpoint();
/**
* Returns the processed checkpoint used by the async indexer. If this index
* round finishes successfully, the processed checkpoint will become the
* reference checkpoint, and the old reference checkpoint wil be released.
*
* @return the processed checkpoint
*/
String getProcessedCheckpoint();
/**
* Temporary checkpoints represent old checkpoints that have been processed
* but the cleanup was not successful of did not happen at all (like in the
* event the system was forcibly stopped).
*
* @return the already processed checkpoints
*/
String getTemporaryCheckpoints();
/**
* Returns the number of executions.
*
* @return the execution count
*/
long getTotalExecutionCount();
/**
* Returns the number of executions as a {@code org.apache.jackrabbit.api.stats.TimeSeries}.
*
* @return the execution count time series
*/
CompositeData getExecutionCount();
/**
* Returns the execution time as a {@code org.apache.jackrabbit.api.stats.TimeSeries}.
*
* @return the execution times time series
*/
@Deprecated
CompositeData getExecutionTime();
/**
* Returns the number of indexed nodes as a {@code org.apache.jackrabbit.api.stats.TimeSeries}.
*
* @return the indexed nodes time series
*/
CompositeData getIndexedNodesCount();
/**
* Returns the consolidated execution stats since last reset
* @return consolidated execution stats
*/
CompositeData getConsolidatedExecutionStats();
/**
* Resets the consolidated stats.
*/
@Deprecated
void resetConsolidatedExecutionStats();
/**
* Splits the current indexing tasks into 2, indexes that are passed in as
* an input will have their 'async' property updated to
* {@code newIndexTaskName}.
*
* Note that this call will *not* bootstrap a new indexing task for the
* given name.
*/
void splitIndexingTask(
@Name("paths") @Description("Comma separated list of paths of the index definitions") String paths,
@Name("newIndexTaskName") @Description("The indexing task name set on the async property") String newIndexTaskName);
/**
* Starts a new background indexing task and registers the JMX MBeans for it
*
*/
void registerAsyncIndexer(@Name("name") String name,
@Name("delayInSeconds") long delayInSeconds);
/**
* @return true if the indexing job is failing
*/
boolean isFailing();
/**
* @return The time the indexing job stared failing, or {@code ""} if the
* job is not currently failing.
*/
String getFailingSince();
/**
* @return the number of consecutive failed executions or {@code 0} if the
* job is not currently failing.
*/
long getConsecutiveFailedExecutions();
/**
* @return the latest indexing error seen, will not be reset once the job
* starts working again
*/
String getLatestError();
/**
* @return the time when the latest indexing error has been seen, will not
* be reset once the job starts working again
*/
String getLatestErrorTime();
TabularData getFailingIndexStats();
}