|
From: Bob K. <bob...@us...> - 2004-10-21 03:08:40
|
Update of /cvsroot/ebxmlms/ebxmlms/src/hk/hku/cecid/phoenix/message/handler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27780/src/hk/hku/cecid/phoenix/message/handler Modified Files: MessageServiceHandler.java Log Message: Fix the problem receiving a ack request message with ultra-slow database. The problem is that the message is not stored on db before trying to check the DB for sending out ack. Problem is fixed by commit the store db before send the ack. Fix the problem on checkPersistence function which still work on file, changed so that it works on persistence layer. Index: MessageServiceHandler.java =================================================================== RCS file: /cvsroot/ebxmlms/ebxmlms/src/hk/hku/cecid/phoenix/message/handler/MessageServiceHandler.java,v retrieving revision 1.191 retrieving revision 1.192 diff -C2 -d -r1.191 -r1.192 *** MessageServiceHandler.java 1 Sep 2004 04:16:52 -0000 1.191 --- MessageServiceHandler.java 21 Oct 2004 03:08:27 -0000 1.192 *************** *** 3156,3161 **** logger.debug("=> MessageServiceHandler.checkPersistence"); ! try { // Do checking on its permissions File dir = new File(messageRepository); --- 3156,3167 ---- logger.debug("=> MessageServiceHandler.checkPersistence"); ! PersistenceHandler handler ! = PersistenceManager.getRepositoryPersistenceHandler(); ! DataSource source = null; ! OutputStream ostream = null; ! String err = null; try { + source = handler.createNewObject(); + /* // Do checking on its permissions File dir = new File(messageRepository); *************** *** 3201,3205 **** } } - // Randomly read TEST_PERSISTENCE_FILE_NUMBER number of files int numFile; --- 3207,3210 ---- *************** *** 3221,3224 **** --- 3226,3230 ---- ; } + */ // Write a file of length TEST_PERSISTENCE_FILE_LENGTH to *************** *** 3228,3232 **** b[i] = (byte) 0xAA; } ! File tmpFile = File.createTempFile("msh", null, dir); FileOutputStream fos = new FileOutputStream(tmpFile); --- 3234,3247 ---- b[i] = (byte) 0xAA; } ! ostream = source.getOutputStream(); ! for (long i = TEST_PERSISTENCE_FILE_LENGTH; i >= 0; ! i -= BLOCK_SIZE) { ! if (i >= BLOCK_SIZE) { ! ostream.write(b); ! } else { ! ostream.write(b, 0, (int) i); ! } ! } ! /* File tmpFile = File.createTempFile("msh", null, dir); FileOutputStream fos = new FileOutputStream(tmpFile); *************** *** 3246,3264 **** tmpFile.deleteOnExit(); } } catch (IOException e) { ! String err = ErrorMessages.getMessage( ErrorMessages.ERR_HERMES_FILE_IO_ERROR, e); logger.error(err); ! logger.debug("<= MessageServiceHandler.checkPersistence"); ! return err; ! } catch (Exception e) { ! String err = ErrorMessages.getMessage( ! ErrorMessages.ERR_HERMES_UNKNOWN_ERROR, e); logger.error(err); ! return err; } logger.debug("<= MessageServiceHandler.checkPersistence"); ! return null; } --- 3261,3300 ---- tmpFile.deleteOnExit(); } + */ } catch (IOException e) { ! err = ErrorMessages.getMessage( ErrorMessages.ERR_HERMES_FILE_IO_ERROR, e); logger.error(err); ! } catch (PersistenceException e) { ! err = ErrorMessages.getMessage( ! ErrorMessages.ERR_HERMES_FILE_IO_ERROR, e); logger.error(err); ! } finally { ! String finalError = null; ! if (ostream != null) { ! try { ! ostream.close(); ! } catch (IOException e) { ! finalError = "Error on closing output stream " ! + "for check persistence : " + e.toString(); ! logger.error(finalError); ! } ! } ! if (source != null) { ! try { ! handler.removeObject(source.getName()); ! } catch (PersistenceException e) { ! finalError = "Error on removing datasource from persistence" ! + " for check persistence : " + e.toString(); ! logger.error(finalError); ! } ! } ! if (err == null) { ! err = finalError; ! } } logger.debug("<= MessageServiceHandler.checkPersistence"); ! return err; } *************** *** 5030,5034 **** final EbxmlMessage ackMessage = generateAcknowledgment( ebxmlMessage, messageId); ! if (suppressedAck) { logger.debug("Ack sending suppressed"); --- 5066,5078 ---- final EbxmlMessage ackMessage = generateAcknowledgment( ebxmlMessage, messageId); ! /* ! * the commit statement is added due to ! * the situation when we face some ultra-slow ! * database, which will not able to store the ! * message through MessageServer.store() before ! * the sending the ack, which will query for ! * message. ! */ ! tx.commit(); if (suppressedAck) { logger.debug("Ack sending suppressed"); |