/*
* 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.usergrid.persistence.graph;
import org.safehaus.guicyfig.Default;
import org.safehaus.guicyfig.FigSingleton;
import org.safehaus.guicyfig.GuicyFig;
import org.safehaus.guicyfig.Key;
/**
*
*
*/
@FigSingleton
public interface GraphFig extends GuicyFig {
String SCAN_PAGE_SIZE = "usergrid.graph.scan.page.size";
String REPAIR_CONCURRENT_SIZE = "usergrid.graph.repair.concurrent.size";
/**
* The size of the shards. This is approximate, and should be set lower than what you would like your max to be
*/
String SHARD_SIZE = "usergrid.graph.shard.size";
/**
* Number of shards we can cache.
*/
String SHARD_CACHE_SIZE = "usergrid.graph.shard.cache.size";
/**
* Get the cache timeout. The local cache will exist for this amount of time max (in millis).
*/
String SHARD_CACHE_TIMEOUT = "usergrid.graph.shard.cache.timeout";
/**
* Provide the ability to default disable the cache for obtaining the read shard group
*/
String SHARD_READ_CACHE_ENABLED = "usergrid.graph.shard.read.cache.enabled";
/**
* Number of worker threads to refresh the cache
*/
String SHARD_CACHE_REFRESH_WORKERS = "usergrid.graph.shard.refresh.worker.count";
/**
* The size of the worker count for shard auditing
*/
String SHARD_AUDIT_QUEUE_SIZE = "usergrid.graph.shard.audit.worker.queue.size";
/**
* The size of the worker count for shard auditing
*/
String SHARD_AUDIT_WORKERS = "usergrid.graph.shard.audit.worker.count";
String SHARD_REPAIR_CHANCE = "usergrid.graph.shard.repair.chance";
/**
* The minimum amount of time than can occur (in millis) between shard allocation and compaction. Must be at least 2x the cache
* timeout. Set to 2.5x the cache timeout to be safe
*
* Note that you should also pad this for node clock drift. A good value for this would be 2x the shard cache
* timeout + 30 seconds, assuming you have NTP and allow a max drift of 30 seconds
*/
String SHARD_MIN_DELTA = "usergrid.graph.shard.min.delta";
String COUNTER_WRITE_FLUSH_COUNT = "usergrid.graph.shard.counter.beginFlush.count";
String COUNTER_WRITE_FLUSH_INTERVAL = "usergrid.graph.shard.counter.beginFlush.interval";
String COUNTER_WRITE_FLUSH_QUEUE_SIZE = "usergrid.graph.shard.counter.queue.size";
String SMART_SHARD_SEEK_ENABLED = "usergrid.graph.smartshard.seek.enabled";
@Default("1000")
@Key(SCAN_PAGE_SIZE)
int getScanPageSize();
@Default("5")
@Key(REPAIR_CONCURRENT_SIZE)
int getRepairConcurrentSize();
@Default( ".10" )
@Key( SHARD_REPAIR_CHANCE )
double getShardRepairChance();
@Default( "50000" )
@Key( SHARD_SIZE )
long getShardSize();
@Default("30000")
@Key(SHARD_CACHE_TIMEOUT)
long getShardCacheTimeout();
@Default("false")
@Key(SHARD_READ_CACHE_ENABLED)
boolean getShardReadCacheEnabled();
@Default("90000")
@Key(SHARD_MIN_DELTA)
long getShardMinDelta();
@Default("100000")
@Key(SHARD_CACHE_SIZE)
long getShardCacheSize();
@Default("2")
@Key(SHARD_CACHE_REFRESH_WORKERS)
int getShardCacheRefreshWorkerCount();
@Default( "20" )
@Key( SHARD_AUDIT_WORKERS )
int getShardAuditWorkerCount();
@Default( "1000" )
@Key( SHARD_AUDIT_QUEUE_SIZE )
int getShardAuditWorkerQueueSize();
@Default("10000")
@Key(COUNTER_WRITE_FLUSH_COUNT)
long getCounterFlushCount();
@Default("30000")
@Key(COUNTER_WRITE_FLUSH_INTERVAL)
long getCounterFlushInterval();
@Default("1000")
@Key(COUNTER_WRITE_FLUSH_QUEUE_SIZE)
int getCounterFlushQueueSize();
@Default("true")
@Key(SMART_SHARD_SEEK_ENABLED)
boolean getSmartShardSeekEnabled();
}