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

PTD & Persistence ... le retour ;o)



Hi Marcel ,
it's again and again the same guy wich is polute your mailbox with the 
same subject !
;o) So, in some mail I tried to change the subject , for the same eternal 
problem. At each time you stopped the thread. Like if the subject is 
horrible ;o)
What subject ?
When using Persistence Message and Destination Qos with ForceQueuing,
the persistent message file is never erased from filesystem.
To reproduce the problem just make a little modification in
	testsuite.org.xmlBlaster.TestPtDQueue.java
	in public void testPtUnknownDestination()
	when Construct a message and send it to "Martin Unknown"
	just add <isDurable /> in the Qos
code would be like :
         // Construct a message and send it to "Martin Unknown"
	String xmlKey = "<key oid='' contentMime='text/plain'>\n</key>";
	 String qos = "<qos> <isDurable /> "    // <-- add just this flag
		+"   <destination queryType='EXACT'>" 
		+receiverName
		+"      <ForceQueuing />" +
		"   </destination>"
		+"</qos>";
	...
So, I take my brain and go in the xmlBlaster engine to trace all the 
operations ...
look at that scenario :
1/ RequestBroker.loadPersistentMessages()
	do a publish() of messages found in persistence folder.
2/ RequestBroker.publish()
	...
	if (publishQoS.isPubSubStyle()) {
	...
	messageContainerMap.put();
	...
	}else if (publishQoS.isPTP_Style()) {
	...
	destinationClient.sendUpdate();    // <-- Go there
	...
	}
3/ ClientInfo.sendUpdate()
	... client not logged ...
	queueMessage(msgUnitWrapper, destination);
4/ ClientInfo.notifyAboutLogin() {
	...
	if (messageQueue != null) {
	...
	while (true) {
		MessageUnitWrapper msgUnitWrapper = messageQueue.pull();
		...
But at any time the  PersistenceDriver will be notified that it has to 
erase a message.
It's why my last posted messages ask for a code guideline to decide where 
it is possible and the 'right place' to code this notification. I didn't 
found any idea, because ClientInfo seems to doesn't know the 
RequestBroker wich handled the persistenceDriver....
Perhaps ClientInfo can send a xmlBlaster message to the RequestBroker 
engine (without isDurable) to erase this knid of message ?? ;o)
Voilą Marcel ...
It's where I'm blocking when I try to design the system architecture for 
my current project.
Perhaps Guys who has developped the PersistenceDriver can get a idea 
about that ?
The rest of xmlBlaster is working fine.
I'll tell you more in few weeks when the project will be in test, online.
Cyrille