use of org.apache.geode.management.internal.cli.domain.SubscriptionQueueSizeResult in project geode by apache.
the class GetSubscriptionQueueSizeFunction method execute.
@Override
public void execute(FunctionContext context) {
final Cache cache = CliUtil.getCacheIfExists();
final String memberNameOrId = CliUtil.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
String[] args = (String[]) context.getArguments();
String durableClientId = null, cqName = null;
SubscriptionQueueSizeResult result = new SubscriptionQueueSizeResult(memberNameOrId);
durableClientId = args[0];
cqName = args[1];
try {
CacheClientNotifier cacheClientNotifier = CacheClientNotifier.getInstance();
if (cacheClientNotifier != null) {
CacheClientProxy cacheClientProxy = cacheClientNotifier.getClientProxy(durableClientId);
// Check if the client is present or not
if (cacheClientProxy != null) {
if (cqName != null && !cqName.isEmpty()) {
CqService cqService = cacheClientProxy.getCache().getCqService();
if (cqService != null) {
CqQuery cqQuery = cqService.getClientCqFromServer(cacheClientProxy.getProxyID(), cqName);
if (cqQuery != null) {
CqQueryVsdStats cqVsdStats = ((InternalCqQuery) cqQuery).getVsdStats();
if (cqVsdStats != null) {
long queueSize = cqVsdStats.getNumHAQueuedEvents();
result.setSubscriptionQueueSize(queueSize);
} else {
result.setErrorMessage(CliStrings.format(CliStrings.COUNT_DURABLE_CQ_EVENTS__DURABLE_CQ_STATS_NOT_FOUND, durableClientId, cqName));
}
} else {
result.setErrorMessage(CliStrings.format(CliStrings.COUNT_DURABLE_CQ_EVENTS__DURABLE_CQ_NOT_FOUND, durableClientId, cqName));
}
} else {
result.setErrorMessage(CliStrings.COUNT_DURABLE_CQ_EVENTS__NO__CQS__REGISTERED);
}
} else {
result.setSubscriptionQueueSize(cacheClientNotifier.getDurableClientHAQueueSize(durableClientId));
}
} else {
result.setErrorMessage(CliStrings.format(CliStrings.NO_CLIENT_FOUND_WITH_CLIENT_ID, durableClientId));
}
} else {
result.setErrorMessage(CliStrings.NO_CLIENT_FOUND);
}
} catch (Exception e) {
result.setExceptionMessage(e.getMessage());
} finally {
context.getResultSender().lastResult(result);
}
}
use of org.apache.geode.management.internal.cli.domain.SubscriptionQueueSizeResult in project geode by apache.
the class DurableClientCommands method buildTableResultForQueueSize.
private Result buildTableResultForQueueSize(List<SubscriptionQueueSizeResult> results, String queueSizeColumnName) {
Result result = null;
boolean failure = true;
Map<String, List<String>> failureMap = new HashMap<String, List<String>>();
Map<String, Long> memberQueueSizeTable = new TreeMap<String, Long>();
/***
* Aggregate the results from the members
*/
for (SubscriptionQueueSizeResult memberResult : results) {
if (memberResult.isSuccessful()) {
failure = false;
memberResult.getSubscriptionQueueSize();
memberQueueSizeTable.put(memberResult.getMemberNameOrId(), memberResult.getSubscriptionQueueSize());
} else {
groupByMessage(memberResult.getErrorMessage(), memberResult.getMemberNameOrId(), failureMap);
}
}
if (!failure) {
TabularResultData table = ResultBuilder.createTabularResultData();
Set<String> members = memberQueueSizeTable.keySet();
for (String member : members) {
long queueSize = memberQueueSizeTable.get(member);
table.accumulate(CliStrings.COUNT_DURABLE_CQ_EVENTS__MEMBER, member);
table.accumulate(queueSizeColumnName, queueSize);
}
result = ResultBuilder.buildResult(table);
} else {
ErrorResultData erd = ResultBuilder.createErrorResultData();
buildErrorResult(erd, failureMap);
result = ResultBuilder.buildResult(erd);
}
return result;
}
use of org.apache.geode.management.internal.cli.domain.SubscriptionQueueSizeResult in project geode by apache.
the class DurableClientCommands method countDurableCqEvents.
@CliCommand(value = CliStrings.COUNT_DURABLE_CQ_EVENTS, help = CliStrings.COUNT_DURABLE_CQ_EVENTS__HELP)
@CliMetaData(shellOnly = false)
@ResourceOperation(resource = Resource.CLUSTER, operation = Operation.READ)
public Result countDurableCqEvents(@CliOption(key = CliStrings.COUNT_DURABLE_CQ_EVENTS__DURABLE__CLIENT__ID, mandatory = true, help = CliStrings.COUNT_DURABLE_CQ_EVENTS__DURABLE__CLIENT__ID__HELP) final String durableClientId, @CliOption(key = CliStrings.COUNT_DURABLE_CQ_EVENTS__DURABLE__CQ__NAME, mandatory = false, help = CliStrings.COUNT_DURABLE_CQ_EVENTS__DURABLE__CQ__NAME__HELP) final String cqName, @CliOption(key = CliStrings.COUNT_DURABLE_CQ_EVENTS__MEMBER, mandatory = false, help = CliStrings.COUNT_DURABLE_CQ_EVENTS__MEMBER__HELP, optionContext = ConverterHint.MEMBERIDNAME) final String[] memberNameOrId, @CliOption(key = CliStrings.COUNT_DURABLE_CQ_EVENTS__GROUP, mandatory = false, help = CliStrings.COUNT_DURABLE_CQ_EVENTS__GROUP__HELP, optionContext = ConverterHint.MEMBERGROUP) final String[] group) {
Result result = null;
try {
Set<DistributedMember> targetMembers = CliUtil.findMembers(group, memberNameOrId);
if (targetMembers.isEmpty()) {
return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
}
String[] params = new String[2];
params[0] = durableClientId;
params[1] = cqName;
final ResultCollector<?, ?> rc = CliUtil.executeFunction(new GetSubscriptionQueueSizeFunction(), params, targetMembers);
final List<SubscriptionQueueSizeResult> funcResults = (List<SubscriptionQueueSizeResult>) rc.getResult();
String queueSizeColumnName;
if (cqName != null && !cqName.isEmpty()) {
queueSizeColumnName = CliStrings.format(CliStrings.COUNT_DURABLE_CQ_EVENTS__SUBSCRIPTION__QUEUE__SIZE__CLIENT, cqName);
} else {
queueSizeColumnName = CliStrings.format(CliStrings.COUNT_DURABLE_CQ_EVENTS__SUBSCRIPTION__QUEUE__SIZE__CLIENT, durableClientId);
}
result = buildTableResultForQueueSize(funcResults, queueSizeColumnName);
} catch (Exception e) {
result = ResultBuilder.createGemFireErrorResult(e.getMessage());
}
return result;
}
Aggregations