Arabic conversations not archived

Hi All;

I’ve installed Openfire on Ubuntu 12.04 LTS and working with no issues except that Arabic conversations are logged as questions marks (???) in the archive ! as in below example:

[2:47 PM]
user1
Hi
[2:47 PM]
user2:
hi
[2:48 PM]
user1:
What are you doing ?
[2:48 PM]
user2:
?? ??? ??
[2:48 PM]
user1:
:’(
[2:48 PM]
user2:
[2:52 PM]
user1:
wher?
[2:52 PM]
user1:
Where?
[2:52 PM]
user2:
?? ??? ?? ??? ??? ???

English conversations are archived well and end-to-end users can communicate well on client side.

What can I do?

Which database are you using? Which openfire version?

I’m running a 3.8.2 Openfire on MySQL 5.5.35-0ubuntu0.12.04.2 and ActiveDirectory for Authentication

Notes:

  • I tried the same on a test lab with the latest version (3.9.1) and the problem is the same

  • Also; I made a new test (send arabic message to offline user, when he logged in, message is ??? again

at the same time; message delivered correctly if both users are online.

Is the mysql database you created support UTF-8? Does openfire log any errors?

I’m afraid I’m not very familiar with MySQL. However,

Database was created using “mysql> CREATE DATABASE dbopenfire CHARACTER SET=‘utf8’;”

so I guess it should.

let me refer to a DB Admin and review server logs for error

character_set_system is utf8

HYG, Openfire errors from its log

at org.jivesoftware.database.DefaultConnectionProvider.getConnection(DefaultConnec tionProvider.java:86)

at org.jivesoftware.database.DbConnectionManager.getConnection(DbConnectionManager .java:124)

at org.jivesoftware.openfire.user.User.loadProperties(User.java:518)

at org.jivesoftware.openfire.user.User.getProperties(User.java:368)

at org.jivesoftware.openfire.user.User.isNameVisible(User.java:237)

at org.jivesoftware.openfire.plugin.SearchPlugin.replyDataFormResult(SearchPlugin. java:747)

at org.jivesoftware.openfire.plugin.SearchPlugin.processSetPacket(SearchPlugin.jav a:515)

at org.jivesoftware.openfire.plugin.SearchPlugin.handleSearchRequest(SearchPlugin. java:356)

at org.jivesoftware.openfire.plugin.SearchPlugin.handleIQRequest(SearchPlugin.java :294)

at org.jivesoftware.openfire.plugin.SearchPlugin.processPacket(SearchPlugin.java:2 40)

at org.jivesoftware.openfire.component.InternalComponentManager$RoutableComponents .process(InternalComponentManager.java:587)

at org.jivesoftware.openfire.spi.RoutingTableImpl.routeToComponent(RoutingTableImp l.java:356)

at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:238)

at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:326)

at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:121)

at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76)

at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:337)

at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler .java:93)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:302)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:194)

at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:181)

There should be a few more lines at the top of the trace, please look a bit closer at the logs

Here is the entire error log

Any hint where to look exactly?


javax.naming.directory.InvalidSearchFilterException: invalid attribute description; remaining name ‘’

at com.sun.jndi.ldap.Filter.encodeSimpleFilter(Filter.java:437)

at com.sun.jndi.ldap.Filter.encodeFilter(Filter.java:146)

at com.sun.jndi.ldap.Filter.encodeFilterList(Filter.java:741)

at com.sun.jndi.ldap.Filter.encodeComplexFilter(Filter.java:657)

at com.sun.jndi.ldap.Filter.encodeFilter(Filter.java:104)

at com.sun.jndi.ldap.Filter.encodeFilterString(Filter.java:74)

at com.sun.jndi.ldap.LdapClient.search(LdapClient.java:547)

at com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1985)

at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1847)

at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1772)

at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java: 386)

at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirC ontext.java:356)

at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirC ontext.java:339)

at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:267)

at org.jivesoftware.openfire.ldap.LdapManager.retrieveList(LdapManager.java:1879)

at org.jivesoftware.openfire.ldap.LdapGroupProvider.search(LdapGroupProvider.java: 174)

at org.jivesoftware.openfire.group.GroupManager.search(GroupManager.java:515)

at org.jivesoftware.openfire.roster.Roster.provideRosterItem(Roster.java:330)

at org.jivesoftware.openfire.roster.Roster.createRosterItem(Roster.java:311)

at org.jivesoftware.openfire.handler.IQRosterHandler.manageRoster(IQRosterHandler. java:243)

at org.jivesoftware.openfire.handler.IQRosterHandler.handleIQ(IQRosterHandler.java :122)

at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:65)

at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:374)

at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:121)

at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76)

at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:337)

at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler .java:93)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:302)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:194)

at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:181)

at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)

at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:185)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239)

at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)

at java.lang.Thread.run(Thread.java:744)