Massiv bug with Avatars and DB/2

Hi,

we are running OF 3.4.5 and 3.5.0 with the IM Gateway on DB/2 Community Edition. Our error log show a lot of errors due to type mismatches in the DB/2 tables and the software.

The error looks like this:

2008.04.21 07:38:15 org.jivesoftware.openfire.gateway.util.Log4JToOpenfireAppender.append(Log4JToOpe nfireAppender.java:49) Avatar: SQL exception while inserting avatar:

com.ibm.db2.jcc.b.SqlException: [1083][10403][http://3.50.152|http://3.50.152] Unzulässige Konvertierung: von “java.lang.String” in “java.sql.Blob” kann nicht konvertiert werden. ERRORCODE=-4474, SQLSTATE=null

at com.ibm.db2.jcc.b.wc.a(wc.java:55)

at com.ibm.db2.jcc.b.wc.a(wc.java:93)

at com.ibm.db2.jcc.b.ac.a(ac.java:645)

at com.ibm.db2.jcc.b.ac.a(ac.java:1082)

at com.ibm.db2.jcc.b.ac.a(ac.java:1052)

at com.ibm.db2.jcc.b.uk.a(uk.java:1685)

at com.ibm.db2.jcc.b.uk.Vb(uk.java:3801)

at com.ibm.db2.jcc.b.uk.e(uk.java:2884)

at com.ibm.db2.jcc.b.uk.e(uk.java:3238)

at com.ibm.db2.jcc.b.uk.zb(uk.java:568)

at com.ibm.db2.jcc.b.uk.executeUpdate(uk.java:551)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)

at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)

at com.ibm.db2.jcc.b.al$$EnhancerByProxool$$618dd3b0.executeUpdate(<generated&g t;)

at org.jivesoftware.openfire.gateway.avatars.Avatar.insertIntoDb(Avatar.java:277)

at org.jivesoftware.openfire.gateway.avatars.Avatar.<init>(Avatar.java:83)

at org.jivesoftware.openfire.gateway.session.TransportSession.loadAvatar(Transport Session.java:736)

at org.jivesoftware.openfire.gateway.session.TransportSession.<init>(Transpo rtSession.java:67)

at org.jivesoftware.openfire.gateway.protocols.oscar.OSCARSession.<init>(OSC ARSession.java:81)

at org.jivesoftware.openfire.gateway.protocols.oscar.OSCARTransport.registrationLo ggedIn(OSCARTransport.java:93)

at org.jivesoftware.openfire.gateway.BaseTransport.processPacket(BaseTransport.jav a:397)

at org.jivesoftware.openfire.gateway.BaseTransport.processPacket(BaseTransport.jav a:198)

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

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

at org.jivesoftware.openfire.PresenceRouter.handle(PresenceRouter.java:163)

at org.jivesoftware.openfire.PresenceRouter.route(PresenceRouter.java:69)

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

at org.jivesoftware.openfire.net.StanzaHandler.processPresence(StanzaHandler.java: 316)

at org.jivesoftware.openfire.net.ClientStanzaHandler.processPresence(ClientStanzaH andler.java:84)

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

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

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

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:180)

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$Worker.runTask(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

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

at java.lang.Thread.run(Unknown Source)

2008.04.21 07:38:37 org.jivesoftware.openfire.gateway.util.Log4JToOpenfireAppender.append(Log4JToOpe nfireAppender.java:49) Avatar: SQL exception while inserting avatar:

com.ibm.db2.jcc.b.SqlException: [1083][10403][http://3.50.152|http://3.50.152] Unzulässige Konvertierung: von “java.lang.String” in “java.sql.Blob” kann nicht konvertiert werden. ERRORCODE=-4474, SQLSTATE=null

at com.ibm.db2.jcc.b.wc.a(wc.java:55)

at com.ibm.db2.jcc.b.wc.a(wc.java:93)

at com.ibm.db2.jcc.b.ac.a(ac.java:645)

at com.ibm.db2.jcc.b.ac.a(ac.java:1082)

at com.ibm.db2.jcc.b.ac.a(ac.java:1052)

at com.ibm.db2.jcc.b.uk.a(uk.java:1685)

at com.ibm.db2.jcc.b.uk.Vb(uk.java:3801)

at com.ibm.db2.jcc.b.uk.e(uk.java:2884)

at com.ibm.db2.jcc.b.uk.e(uk.java:3238)

at com.ibm.db2.jcc.b.uk.zb(uk.java:568)

at com.ibm.db2.jcc.b.uk.executeUpdate(uk.java:551)

at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)

at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)

at com.ibm.db2.jcc.b.al$$EnhancerByProxool$$618dd3b0.executeUpdate(<generated&g t;)

at org.jivesoftware.openfire.gateway.avatars.Avatar.insertIntoDb(Avatar.java:277)

at org.jivesoftware.openfire.gateway.avatars.Avatar.<init>(Avatar.java:118)

at org.jivesoftware.openfire.gateway.protocols.oscar.BasicFlapConnection$2.handleR esponse(BasicFlapConnection.java:262)

at net.kano.joscar.snac.SnacRequest.gotResponse(SnacRequest.java:344)

at net.kano.joscar.snac.ClientSnacProcessor.continueHandling(ClientSnacProcessor.j ava:727)

at net.kano.joscar.snac.AbstractSnacProcessor.processPacket(AbstractSnacProcessor. java:447)

at net.kano.joscar.snac.AbstractSnacProcessor.access$100(AbstractSnacProcessor.jav a:134)

at net.kano.joscar.snac.AbstractSnacProcessor$1.handlePacket(AbstractSnacProcessor .java:208)

at net.kano.joscar.flap.AbstractFlapProcessor.processPacketSynchronously(AbstractF lapProcessor.java:231)

at net.kano.joscar.flap.AsynchronousFlapProcessor$BackgroundPacketProcessor.tryPro cessingPackets(AsynchronousFlapProcessor.java:75)

at net.kano.joscar.flap.AsynchronousFlapProcessor$BackgroundPacketProcessor.run(As ynchronousFlapProcessor.java:63)

at java.lang.Thread.run(Unknown Source)

We are investigating the error on code level and will try to find the wrong part. Any help is appreciated.

Kind regards,

Walter

Hi, I would say this is primarily due to not knowing DB2 well enough. Since writing these scripts though, I’ve gotten to know DB2 a little better. Now, that said, if you wouldn’t mind, please try editing your database and changing the gatewayAvatars imageData column to a CLOB instead of a BLOB. I am 90% certain that will take care of it. If you wouldn’t mind, please report back if that fixes your problem!

Yes that helps. Great.

Awesome, thanks for the test! Will be fixed in 1.2.4. See GATE-426.

Hello,

running the gateway 1.2.2a on OF 3.4.5 we had to change the DB configuration to this:

CREATE

TABLE GATEWAYAVATARS

(

JID VARCHAR(255) NOT NULL,

XMPPHASH VARCHAR(255),

LEGACYIDENTIFIER VARCHAR(255),

CREATEDATE BIGINT NOT NULL,

LASTUPDATE BIGINT,

IMAGETYPE VARCHAR(25),

IMAGEDATA VARCHAR(30000)

)

The CLOB did not help for 1.2.2a on OF 3.4.5. We will recheck the CLOB change again.

Sorry for the bad news,

Walter