[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [xmlblaster] error report in JdbcManagerCommonTable.java when using database for durable subscriptions



The code passed the tests, I have committed it.

Michele

Marcel Ruff wrote:
pikaiyuan wrote:

Hi,Marcel

I had found something report error when I using an oracle database for durable subscriptions(every message needs to be stored is about 5000k).the errors are:

[2003-8-23 11:19:41 WARN JdbcManagerCommonTable-XB_-xmlBlaster_192_168_80_11_3412-msgUnitStore_i
nforMessaging_192_168_80_11_3412sblszsnsrxx-addEntry()] Could not insert entry 'org.xmlBlaster.e
ngine.MsgUnitWrapper'-'sblszsnsrxx/2003-08-23 11:19:41.353000001-1060053581353000001': java.sql.SQLE
xception: inserted value too large for column: 18998
[2003-8-23 11:19:42 ERROR org.xmlBlaster.engine.msgstore.cache.PersistenceCachePlugin-msgUnitStor
e:xmlBlaster_192_168_80_11_3412/sblszsnsrxx] put: an error occured when writing to the persisten
t queue, transient entry sblszsnsrxx/2003-08-23 11:19:41.353000001 is not swapped and will be lost.
Is the DB up and running ? xmlBlasterException errorCode=[resource.db.unknown] serverSideExcepti
on=true node=[xmlBlaster_192_168_80_11_3412] location=[JdbcManagerCommonTable.addEntry] message=
[An unknown error with the backend database using JDBC occurred : java.sql.SQLException: inserted value too large for column: 18998] state:
<PersistenceCachePlugin id='msgUnitStore:xmlBlaster_192_168_80_11_3412/sblszsnsrxx' type='CACHE
' version='1.0' numOfEntries='95' numOfBytes='2094335'>
<MapPlugin id='msgUnitStore:xmlBlaster_192_168_80_11_3412/sblszsnsrxx' type='RAM' version='1.0
' numOfEntries='95' numOfBytes='2094335'>
<persistence relating='msgUnitStore' maxEntries='1000000' maxEntriesCache='1000000' maxBytes='209
7152'/>
</MapPlugin>
<JdbcQueueCommonTablePlugin id='msgUnitStore:xmlBlaster_192_168_80_11_3412/sblszsnsrxx' type='
JDBC' version='1.0' numOfEntries='0' numOfBytes='0'>
<persistence relating='msgUnitStore' maxEntries='100000000' maxEntriesCache='1000000'/>
<numOfPersistentsCached>0</numOfPersistentsCached>
<sizeOfPersistentsCached>0</sizeOfPersistentsCached>
<numOfEntriesCached>0</numOfEntriesCached>
<numOfBytesCached>0</numOfBytesCached>
<numOfEntries>0</numOfEntries>
<numOfBytes>0</numOfBytes>
<numOfPersistents>0</numOfPersistents>
<sizeOfPersistents>0</sizeOfPersistents>
</JdbcQueueCommonTablePlugin>
</PersistenceCachePlugin>

i had modified some codes in JdbcManagerCommonTable.java, and the problem is solved.
the modification are:
//preStatement.setBytes(5, blob);
//use this bytes array to construct a InputStream ByteArrayInputStream blob_stream = new ByteArrayInputStream(blob) ;
// preStatement.setBytes(5, blob);
preStatement.setBinaryStream(5, blob_stream,(int)sizeInBytes);

In my option,setBytes mothed is limited by length of blob object, but setBinaryStream not.

Marcel, any problem in my modification?


Thanks for this big fix.
If Michele approves it (check other databases) he will fix it in our cvs.

regards,

Marcel


	
regards

pikaiyuan
pi_kyuan at cvicse.com
2003-08-25








--
Michele Laghi
mailto:laghi at swissinfo.org
tel. +46 8 7492952 / mob. +46 70 4103964
http://eclettic.tripod.com
http://www.xmlBlaster.org