< prev index next >

core/org.openjdk.jmc.flightrecorder.rules.jdk/src/main/java/org/openjdk/jmc/flightrecorder/rules/jdk/memory/MetaspaceOomRule.java

Print this page




  43 import org.openjdk.jmc.common.item.IItemCollection;
  44 import org.openjdk.jmc.common.unit.IQuantity;
  45 import org.openjdk.jmc.common.unit.UnitLookup;
  46 import org.openjdk.jmc.common.util.IPreferenceValueProvider;
  47 import org.openjdk.jmc.common.util.TypedPreference;
  48 import org.openjdk.jmc.flightrecorder.jdk.JdkAggregators;
  49 import org.openjdk.jmc.flightrecorder.jdk.JdkTypeIDs;
  50 import org.openjdk.jmc.flightrecorder.rules.IRule;
  51 import org.openjdk.jmc.flightrecorder.rules.Result;
  52 import org.openjdk.jmc.flightrecorder.rules.jdk.messages.internal.Messages;
  53 import org.openjdk.jmc.flightrecorder.rules.util.JfrRuleTopics;
  54 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit;
  55 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit.EventAvailability;
  56 
  57 public class MetaspaceOomRule implements IRule {
  58 
  59         private static final String RESULT_ID = "MetaspaceOom"; //$NON-NLS-1$
  60 
  61         private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
  62                 EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items, JdkTypeIDs.METASPACE_OOM);
  63                 if (eventAvailability == EventAvailability.UNAVAILABLE || eventAvailability == EventAvailability.DISABLED) {
  64                         return RulesToolkit.getEventAvailabilityResult(this, items, eventAvailability, JdkTypeIDs.METASPACE_OOM);
  65                 }
  66 
  67                 IQuantity oomCount = items.getAggregate(JdkAggregators.METASPACE_OOM_COUNT);
  68                 if (oomCount != null && oomCount.doubleValue() > 0) {
  69                         // FIXME: Configuration attribute instead of hard coded 1 as warning limit
  70                         double score = RulesToolkit.mapExp100(oomCount.clampedLongValueIn(UnitLookup.NUMBER_UNITY), 1);
  71                         String message = MessageFormat.format(Messages.getString(Messages.MetaspaceOomRuleFactory_TEXT_WARN),
  72                                         oomCount.displayUsing(IDisplayable.AUTO));
  73                         String longMessage = message + " " + Messages.getString(Messages.MetaspaceOomRuleFactory_TEXT_WARN_LONG); //$NON-NLS-1$
  74                         return new Result(this, score, message, longMessage);
  75                 }
  76                 return new Result(this, 0, Messages.getString(Messages.MetaspaceOomRuleFactory_TEXT_OK));
  77         }
  78 
  79         @Override
  80         public RunnableFuture<Result> evaluate(final IItemCollection items, final IPreferenceValueProvider valueProvider) {
  81                 FutureTask<Result> evaluationTask = new FutureTask<>(new Callable<Result>() {
  82                         @Override
  83                         public Result call() throws Exception {




  43 import org.openjdk.jmc.common.item.IItemCollection;
  44 import org.openjdk.jmc.common.unit.IQuantity;
  45 import org.openjdk.jmc.common.unit.UnitLookup;
  46 import org.openjdk.jmc.common.util.IPreferenceValueProvider;
  47 import org.openjdk.jmc.common.util.TypedPreference;
  48 import org.openjdk.jmc.flightrecorder.jdk.JdkAggregators;
  49 import org.openjdk.jmc.flightrecorder.jdk.JdkTypeIDs;
  50 import org.openjdk.jmc.flightrecorder.rules.IRule;
  51 import org.openjdk.jmc.flightrecorder.rules.Result;
  52 import org.openjdk.jmc.flightrecorder.rules.jdk.messages.internal.Messages;
  53 import org.openjdk.jmc.flightrecorder.rules.util.JfrRuleTopics;
  54 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit;
  55 import org.openjdk.jmc.flightrecorder.rules.util.RulesToolkit.EventAvailability;
  56 
  57 public class MetaspaceOomRule implements IRule {
  58 
  59         private static final String RESULT_ID = "MetaspaceOom"; //$NON-NLS-1$
  60 
  61         private Result getResult(IItemCollection items, IPreferenceValueProvider valueProvider) {
  62                 EventAvailability eventAvailability = RulesToolkit.getEventAvailability(items, JdkTypeIDs.METASPACE_OOM);
  63                 if (eventAvailability == EventAvailability.UNKNOWN || eventAvailability == EventAvailability.DISABLED) {
  64                         return RulesToolkit.getEventAvailabilityResult(this, items, eventAvailability, JdkTypeIDs.METASPACE_OOM);
  65                 }
  66 
  67                 IQuantity oomCount = items.getAggregate(JdkAggregators.METASPACE_OOM_COUNT);
  68                 if (oomCount != null && oomCount.doubleValue() > 0) {
  69                         // FIXME: Configuration attribute instead of hard coded 1 as warning limit
  70                         double score = RulesToolkit.mapExp100(oomCount.clampedLongValueIn(UnitLookup.NUMBER_UNITY), 1);
  71                         String message = MessageFormat.format(Messages.getString(Messages.MetaspaceOomRuleFactory_TEXT_WARN),
  72                                         oomCount.displayUsing(IDisplayable.AUTO));
  73                         String longMessage = message + " " + Messages.getString(Messages.MetaspaceOomRuleFactory_TEXT_WARN_LONG); //$NON-NLS-1$
  74                         return new Result(this, score, message, longMessage);
  75                 }
  76                 return new Result(this, 0, Messages.getString(Messages.MetaspaceOomRuleFactory_TEXT_OK));
  77         }
  78 
  79         @Override
  80         public RunnableFuture<Result> evaluate(final IItemCollection items, final IPreferenceValueProvider valueProvider) {
  81                 FutureTask<Result> evaluationTask = new FutureTask<>(new Callable<Result>() {
  82                         @Override
  83                         public Result call() throws Exception {


< prev index next >