Error “java.lang.IllegalArgumentException: Comparison method violates its general contract!” observed in NCM GUI making NCM not useable.
NCM will be accessible only on killing the application forcefully.
NCM - 10.1.x
Log on to the Application Server and update two files ncm-as and powerup.jnlp
Changes needed in ncm-as:
service vcmaster stop
source /etc/voyence.conf
-Djava.util.Arrays.useLegacyMergeSort=true
CATALINA_OPTS="-Djava.awt.headless=true -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.host=127.0.0.1 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.login.config=JmxConfig -Dcom.sun.management.jmxremote.access.file=$TOMCAT_HOME/conf/jmxremote.access -Dcom.sun.management.jmxremote.password.file=$TOMCAT_HOME/conf/jmxremote.password -Djava.util.Arrays.useLegacyMergeSort=true -Djava.rmi.server.useCodebaseOnly=true -Xms2048m -Xmx4096m -XX:+UseParallelGC -XX:NewRatio=2 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:+CMSClassUnloadingEnabled -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m -Dorg.apache.activemq.broker.jmx.createConnector=false -Dorg.apache.activemq.SERIALIZABLE_PACKAGES=* -Djava.security.auth.login.config=$TOMCAT_HOME/conf/auth.conf -Djdk.tls.client.protocols=TLSv1.2 -Dorg.apache.catalina.connector.RECYCLE_FACADES=true -Dorg.apache.catalina.connector.response.ENFORCE_ENCODING_IN_GET_WRITER=true -Dorg.apache.catalina.STRICT_SERVLET_COMPLIANCE=true
-Djava.util.Arrays.useLegacyMergeSort=true"
Changes needed in powerup.jnlp:
First, Source the Voyence file:
source /etc/voyence.conf
<property name="jnlp.java.util.Arrays.useLegacyMergeSort" value="true"/>
service vcmaster start
This will resolve the issue.