Openfire 4.1.1 - Users are being arbitrarily added to groups - Can't delete them

We’re trying to centrally manage our rosters so all employees can see other departments. However, I’m seeing something I can’t explain. I’ve gone through and cleaned up our groups to simplify sharing. Even before that, I have users that were in groups they never should have been in at all. Now, when I log into the admin console I can see several users in all departments when I only ever added them to one. When I try to remove the user from the group I get the green “User has been removed” message, but the user stays in the group.

This is starting to cause serious problems for us here as now my users rosters are inaccurate. Is there any way I can fix this, or go into the actual database and start ripping people out of groups? What is going on? Please help!!!

Spark 2.8.3 on Windows using Java 111+

Openfire 4.1.1 on Ubuntu 14.04LTS with open Java 1.7

I just did some digging in the logs, and I see this when I try to remove someone from a group they shouldnt be in:

… 15 more

at com.mysql.jdbc.PreparedStatement.executeBatchedInserts(PreparedStatement.java:1 714)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2246)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2262)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2334)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4164)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4232)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructor AccessorImpl.java:45)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor Impl.java:57)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘fromJIDResource’ in 'field list’
at java.lang.Thread.run(Thread.java:745)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at org.jivesoftware.openfire.archive.ConversationManager$1.run(ConversationManager .java:190)
at org.jivesoftware.openfire.archive.ConversationManager$ArchivingTask.run(Convers ationManager.java:1010)
at $java.sql.Statement$$EnhancerByProxool$$e4463a8f.executeBatch()
at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)
at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:43)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1382)
at com.mysql.jdbc.PreparedStatement.executeBatchedInserts(PreparedStatement.java:1 760)
java.sql.BatchUpdateException: Unknown column ‘fromJIDResource’ in 'field list’
2017.02.07 08:54:54 org.jivesoftware.openfire.archive.ConversationManager - Unknown column ‘fromJIDResource’ in ‘field list’

Something is definitely going on. Every time I go into my “Groups” tab it’s random. Problem users revert back to normal, normal users become problem users. What the hell is going on with my group sharing & how do I fix it?

Can you confirm that incorrect groups affiliation is actually showing on the client and not just in Admin Console? There were reports of Admin Console showing wrong information since 4.1.0.

1 Like

The best I can give you is “maybe”. I have had some users tell me they are now only seeing the groups they belong to, others are telling me they have a new “unfiled users” group they’ve never seen before. I also know that manipulating the groups while users are logged in wreaks havoc with the roster. On my own Spark install if I moved user A into Group 1 & then look at the roster, it gives the appearance of the corrupted groups.

Those users maybe saw the result of you fixing the groups (as you say, changing groups while users are logged creates a mess in the client until it relogins). So, don’t do anything to the seemingly bad groups/users and wait for reports or ask users next day if they see problems.

I’m now getting calls/complaints about inconsistent rosters. Numerous users now log in and only see the group they are assigned to and not all shared groups. I’m at the point now where I’m going to just rip the server out and fully rebuild it from scratch as I don’t get what is happening.

If I reboot the server on everyone when I get a complaint it seems to “fix” it.

Are the shared groups in rosters a know issue?

I think your option for now is to downgrade to 4.0.x version. There is a ticket for an issue when it only affects Admin Console [OF-1269] Admin Console shows wrong group affiliation information for some users - IgniteRealtime JIRA I think only this ticket is closest to your issue (but it seems it was an older issue than 4.1.x, maybe just it happens more often now) [OF-1263] Contact List sharing shows stale data - IgniteRealtime JIRA

I’ll give this a shot momentarily. Just have to grab a 4.0x .deb file for my server & I can get this taken care of. Thanks!

If you haven’t done that already, can you give it a try with this build? Project-Debian-distribution-files It has a fix for caching issue which might be causing your problem.