Ok, this is probably going to be a long post.
I am workign with Openfire 3.8.2 on CentOS release 5.9 (Final) with kernel 2.6.18-348.1.1.el5 #1 SMP. (64 bit).
The server, incase it's important has 16GB of EDO DDR3, and 2x QuadCore Intel XEON CPU's
I'm using a custom JDBC/MySQL integration. Users seem to work greatm and when I bring up a list of groups, the list seems fine, and the numbers of users in each group seems fine. But when I try and bring up a list of users in any group via the admin console, I get this error:
HTTP ERROR 500
Problem accessing /group-edit.jsp. Reason:
Illegal JID: Wasuremono @chat.misticpets.com
Caused by:
java.lang.IllegalArgumentException: Illegal JID: Wasuremono @chat.misticpets.com at org.xmpp.packet.JID.<init>(JID.java:542) at org.xmpp.packet.JID.<init>(JID.java:496) at org.jivesoftware.openfire.XMPPServer.createJID(XMPPServer.java:304) at org.jivesoftware.openfire.group.JDBCGroupProvider.getMembers(JDBCGroupProvider.java:187) at org.jivesoftware.openfire.group.JDBCGroupProvider.getGroup(JDBCGroupProvider.java:154) at org.jivesoftware.openfire.group.GroupManager.getGroup(GroupManager.java:330) at org.jivesoftware.openfire.group.GroupManager.getGroup(GroupManager.java:309) at org.jivesoftware.openfire.group.GroupCollection$GroupIterator.getNextElement(GroupCollection.java:113) at org.jivesoftware.openfire.group.GroupCollection$GroupIterator.hasNext(GroupCollection.java:76) at org.jivesoftware.openfire.admin.group_002dedit_jsp._jspService(group_002dedit_jsp.java:480) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1359) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:74) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:50) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:78) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:164) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110) at org.eclipse.jetty.server.Server.handle(Server.java:349) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441) at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:919) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:582) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.IllegalArgumentException: The input is not a valid JID node: Wasuremono at org.xmpp.packet.JID.nodeprep(JID.java:294) at org.xmpp.packet.JID.<init>(JID.java:529) ... 47 more
Caused by:
java.lang.IllegalArgumentException: The input is not a valid JID node: Wasuremono at org.xmpp.packet.JID.nodeprep(JID.java:294) at org.xmpp.packet.JID.<init>(JID.java:529) at org.xmpp.packet.JID.<init>(JID.java:496) at org.jivesoftware.openfire.XMPPServer.createJID(XMPPServer.java:304) at org.jivesoftware.openfire.group.JDBCGroupProvider.getMembers(JDBCGroupProvider.java:187) at org.jivesoftware.openfire.group.JDBCGroupProvider.getGroup(JDBCGroupProvider.java:154) at org.jivesoftware.openfire.group.GroupManager.getGroup(GroupManager.java:330) at org.jivesoftware.openfire.group.GroupManager.getGroup(GroupManager.java:309) at org.jivesoftware.openfire.group.GroupCollection$GroupIterator.getNextElement(GroupCollection.java:113) at org.jivesoftware.openfire.group.GroupCollection$GroupIterator.hasNext(GroupCollection.java:76) at org.jivesoftware.openfire.admin.group_002dedit_jsp._jspService(group_002dedit_jsp.java:480) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1359) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.jivesoftware.util.LocaleFilter.doFilter(LocaleFilter.java:74) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.jivesoftware.util.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:50) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.jivesoftware.admin.PluginFilter.doFilter(PluginFilter.java:78) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.jivesoftware.admin.AuthCheckFilter.doFilter(AuthCheckFilter.java:164) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110) at org.eclipse.jetty.server.Server.handle(Server.java:349) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441) at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:919) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:582) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533) at java.lang.Thread.run(Unknown Source)
Now, based on the way the JID is first displayed, I figured there was empty space at the end of the username, but it wasn't apparent in the MySQL database. So I ran the following just in case...
UPDATE `users` SET `username` = TRIM( `username` )
which affected 0 rows, so just in case, I also ran
UPDATE `users` SET `username` = replace( `username`,` `,`` )
which also affected 0 rows...
The SQL that I use to call the users for the groups is as follows....
(SELECT @group_name :=? AS username) UNION (SELECT `to` AS username FROM friends WHERE `from`=@group_name AND `accepted`='Yes') UNION (SELECT `from` AS username FROM friends WHERE `to`=@group_name AND `accepted`='Yes') UNION (SELECT username FROM users u INNERJOIN alliance_members am ON am.userid=u.id INNERJOIN alliance a ON a.id=am.allianceid WHERE a.name=@group_name AND a.gChat='1' AND am.rank!='Alliance Leader')
If I left out a cruicial bit of information let me know.
Oh, the JID in question, does NOT appear in any of the group's I've tested.