-
I tried to recreate issue but I was unable to do so. I checked code of DNSResovler and each code related to parsing number is properly inside following clause
try { x = Integer.parseInt(z); } catch(Exception ex) {}
so it is impossible to receive NumberFormatException from there as it would be caught already.I checked DNSResovler against xmpp.org, gmail.com (both have IPv6 addresses) and it worked well. I also checked domain passed for adhoc command to add and it also worked fine (domain resolved only to IPv4 address!) .
I suppose that error might be related to DNS server which is used, which could return SRV record in improper format. I would also suggest to check if DNS SRV records are ok.
-
I also checked script and VHostItem implementation to find any possible source of this exception but I was unable to identify it. I suppose that in Tigase XMPP Server logs might be more information about this exception including possible source of origin.
-
User's comments form the forums:
bq. as the server was executing a groovy admin script, there is no other server log but the stanza itself with the stacktrace being passed around the processoers.
If it helps, the /etc/resolv.conf had the nameservers I've mentioned previously.
-
I looked once again into this issue and I think I might have found a cause.
I tried to replicate this issue and I was able to replicate it only by setting following property for @InitialDirContext@, example:
which is not valid DNS url, it should be
dns://[2a01:4f8:0:a0a1::add:1010]
and this causesNumberFormatException
in DNS resolution but it is thrown inside Java JDK DNS resolution implementation. Due to this I suppose thattigase.util.DNSResolver
implementation is OK and works fine.I suppose that having this set as system Java property might also cause this issue.
I also tried to check if setting IPv6 address of DNS server in
/etc/resolv.conf
file might cause this issue and I checked sources of implementation of DNS resolver in OpenJDK (which should be similar to Oracle JDK) but according to implementation there it should work OK.To investigate it more I would need to see
/etc/resolv.conf
file from server on which this issue appears and also I would need dump of all System properties of this JVM instance. Also it would be good to know exact implementation and version of JDK which is used by Tigase XMPP Server. -
/etc/resolv.conf
### Hetzner Online AG installimage # nameserver config nameserver 213.133.100.100 nameserver 213.133.98.98 nameserver 213.133.99.99 nameserver 2a01:4f8:0:a111::add:9898 nameserver 2a01:4f8:0:a102::add:9999 nameserver 2a01:4f8:0:a0a1::add:1010
Tigase version
Java version
java version "1.7.0_67" Java(TM) SE Runtime Environment (build 1.7.0_67-b01) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
System Properties
java.runtime.name: Java(TM) SE Runtime Environment sun.boot.library.path: /usr/lib/jvm/java-7-oracle/jre/lib/amd64 java.vm.version: 24.65-b04 hardened-mode: true java.vm.vendor: Oracle Corporation java.vendor.url: http://java.oracle.com/ path.separator: : java.vm.name: Java HotSpot(TM) 64-Bit Server VM file.encoding.pkg: sun.io user.country: US sun.java.launcher: SUN_STANDARD sun.os.patch.level: unknown admins: hosting-admin@buddycloud.net test: false java.vm.specification.name: Java Virtual Machine Specification user.dir: /opt/tigase-server java.runtime.version: 1.7.0_67-b01 java.awt.graphicsenv: sun.awt.X11GraphicsEnvironment java.endorsed.dirs: /usr/lib/jvm/java-7-oracle/jre/lib/endorsed os.arch: amd64 java.io.tmpdir: /tmp line.separator: java.vm.specification.vendor: Oracle Corporation os.name: Linux virt-hosts: buddycloud.net,anon.buddycloud.net sun.jnu.encoding: UTF-8 java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib property-file: etc/init.properties s2s-ejabberd-bug-workaround-active: true user-db-uri: jdbc:postgresql://db01.buddycloud.com:5432/integration_tigase?user=integration_tigase&password=passpass&useUnicode=true&characterEncoding=UTF-8&autoCreateUser=true debug: server,cert,conf,db,io,net,xml,xmpp,vhosts java.specification.name: Java Platform API Specification java.class.version: 51.0 java.net.preferIPv4Stack: true sun.management.compiler: HotSpot 64-Bit Tiered Compilers os.version: 3.13.0-29-generic user.home: /root user.timezone: Etc/UTC jdbc.drivers: com.mysql.jdbc.Driver:org.postgresql.Driver:org.apache.derby.jdbc.EmbeddedDriver java.awt.printerjob: sun.print.PSPrinterJob file.encoding: UTF-8 java.specification.version: 1.7 java.class.path: /opt/tigase-server/jars/derby.jar:/opt/tigase-server/jars/derbytools.jar:/opt/tigase-server/jars/groovy-all.jar:/opt/tigase-server/jars/hamcrest-core.jar:/opt/tigase-server/jars/javax.servlet.jar:/opt/tigase-server/jars/jdmkrt.jar:/opt/tigase-server/jars/jetty-continuation.jar:/opt/tigase-server/jars/jetty-deploy.jar:/opt/tigase-server/jars/jetty-http.jar:/opt/tigase-server/jars/jetty-io.jar:/opt/tigase-server/jars/jetty-osgi-boot.jar:/opt/tigase-server/jars/jetty-security.jar:/opt/tigase-server/jars/jetty-server.jar:/opt/tigase-server/jars/jetty-servlet.jar:/opt/tigase-server/jars/jetty-util.jar:/opt/tigase-server/jars/jetty-webapp.jar:/opt/tigase-server/jars/jetty-xml.jar:/opt/tigase-server/jars/jstun.jar:/opt/tigase-server/jars/jtds.jar:/opt/tigase-server/jars/jul-to-slf4j.jar:/opt/tigase-server/jars/licence-lib.jar:/opt/tigase-server/jars/logback-classic.jar:/opt/tigase-server/jars/logback-core.jar:/opt/tigase-server/jars/mysql-connector-java.jar:/opt/tigase-server/jars/org.apache.felix.bundlerepository.jar:/opt/tigase-server/jars/org.apache.felix.configadmin.jar:/opt/tigase-server/jars/org.apache.felix.main.jar:/opt/tigase-server/jars/org.apache.felix.shell.jar:/opt/tigase-server/jars/org.apache.felix.shell.remote.jar:/opt/tigase-server/jars/org.osgi.core.jar:/opt/tigase-server/jars/postgresql.jar:/opt/tigase-server/jars/slf4j-api.jar:/opt/tigase-server/jars/tigase-acs-muc.jar:/opt/tigase-server/jars/tigase-acs-pubsub.jar:/opt/tigase-server/jars/tigase-acs.jar:/opt/tigase-server/jars/tigase-extras.jar:/opt/tigase-server/jars/tigase-http-api.jar:/opt/tigase-server/jars/tigase-message-archiving.jar:/opt/tigase-server/jars/tigase-muc.jar:/opt/tigase-server/jars/tigase-pubsub.jar:/opt/tigase-server/jars/tigase-server.jar:/opt/tigase-server/jars/tigase-socks5.jar:/opt/tigase-server/jars/tigase-stats-collector-library.jar:/opt/tigase-server/jars/tigase-stats-collector-provider.jar:/opt/tigase-server/jars/tigase-stun.jar:/opt/tigase-server/jars/tigase-server.jar user.name: root comp-name-1: ext external: cs.buddycloud.net:passpass:listen:5270,media.buddycloud.net:passpass java.vm.specification.version: 1.7 debug-packages: org.codehaus.groovy sun.java.command: tigase.server.XMPPServer --property-file etc/init.properties java.home: /usr/lib/jvm/java-7-oracle/jre sun.arch.data.model: 64 user.language: en java.specification.vendor: Oracle Corporation awt.toolkit: sun.awt.X11.XToolkit java.vm.info: mixed mode java.version: 1.7.0_67 comp-class-1: tigase.server.ext.ComponentProtocol java.ext.dirs: /usr/lib/jvm/java-7-oracle/jre/lib/ext:/usr/java/packages/lib/ext sun.boot.class.path: /usr/lib/jvm/java-7-oracle/jre/lib/resources.jar:/usr/lib/jvm/java-7-oracle/jre/lib/rt.jar:/usr/lib/jvm/java-7-oracle/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-7-oracle/jre/lib/jsse.jar:/usr/lib/jvm/java-7-oracle/jre/lib/jce.jar:/usr/lib/jvm/java-7-oracle/jre/lib/charsets.jar:/usr/lib/jvm/java-7-oracle/jre/lib/jfr.jar:/usr/lib/jvm/java-7-oracle/jre/classes logback.configurationFile: /opt/tigase-server/etc/logback.xml java.vendor: Oracle Corporation file.separator: / sm-plugins: +jabber:iq:auth,+urn:ietf:params:xml:ns:xmpp+sasl,+urn:ietf:params:xml:ns:xmpp-bind,+urn:ietf:params:xml:ns:xmpp-session,+jabber:iq:register,+jabber:iq:roster,+presence,+jabber:iq:privacy,+jabber:iq:version,+http://jabber.org/protocol/stats,+starttls,+msgoffline,+vcard-temp,+http://jabber.org/protocol/commands,+jabber:iq:private,+urn:xmpp:ping,-basic-filter,-domain-filter,+pep,-zlib elements-number-limit: 100000 java.vendor.url.bug: http://bugreport.sun.com/bugreport/ vhost-tls-required: true sun.io.unicode.encoding: UnicodeLittle sun.cpu.endian: little user-db: pgsql sun.cpu.isalist:
-
After looking at provided content of
/etc/resolv.conf
and system properties I think that this version of JDK contains bug which causes this issue. This issue is caused by IPv6 address of DNS server in/etc/resolv.conf
file which is not properly interpreted by JVM as IPv6 address but as IPv4 address with port. Entry in/etc/resolv.conf
is OK as this is how IPv6 address of DNS server should be passed but for unknown reason this version of JDK is not working properly with this entry. -
Unfortunately in my own environment which had IPv6 configured and working lost IPv6 support when I changed hosting provider and current one cannot fix this issue for 3 months now so I could not check support in other JDK versions.
I do not know if our servers have IPv6 configured and if we have any DNS server configured to serve DNS records on IPv6 to verify other JDK versions for this issue.
Right now as a solution I would recommend to remove IPv6 addresses of DNS servers from
/etc/resolv.conf
file as there are IPv4 addresses pointing to the same DNS servers -
For completeness and the record. You tripped over a 4 year old Java bug: https://bugs.openjdk.java.net/browse/JDK-6991580
Type |
Bug
|
Priority |
Normal
|
Assignee | |
RedmineID |
2165
|
Here is the original report from a user on the forums: message#2833