#
# Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0, which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# This Source Code may also be made available under the following Secondary
# Licenses when the conditions for such availability set forth in the
# Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
# version 2 with the GNU Classpath Exception, which is available at
# https://www.gnu.org/software/classpath/license.html.
#
# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
#


# Message ID information is here:
# http://wikis.sun.com/display/GlassFish/GlassFishV3LoggingMessageFormat

# health history
adding.instance=GMSBS2001: Adding instance {0} to health history table.
delete.key.not.present=GMSBS2002: Instance {0} was not in map when deleted from health history table.
deleting.instance=GMSBS2003: Deleting instance {0} from health history table.
duplicate.instance=GMSBS2004: Duplicate instance {0} ignored in health history.
key.already.present=GMSBS2005: State already known for instance {0}. Not adding to health history table.
unknown.instance=GMSBS2006: New state {0} added for unknown instance {1}

# gms adapter service
gmsadapter.not.available=GMSBS1001: Unable to load GMS classes. Group management service is not available.

# Diagnostic info for above.
GMSBS1001.diag.cause.1=GMS implementation classes are not present. See https://glassfish.dev.java.net/issues/show_bug.cgi?id=12850.
GMSBS1001.diag.check.1=Check that shoal-gms-impl.jar file is present.

GMSBS2002.diag.cause.1=More than one call may have been made to remove this instance \
  from the cluster. This has no other effect on the health history information.
GMSBS2002.diag.check.1=No action is necessary.

GMSBS2004.diag.cause.1=There may be more than one instance in the cluster with the same name.
GMSBS2004.diag.check.1=Check that instance names are unique within the cluster.
