[Design of JBoss Deployment Framework] - Re: Designing of jain-slee deployers for Jboss5.
by alexandrem
"alesj" wrote : There is no such mechanism in new deployers.
| Since they work on a totally different system of what we used to have.
|
| Before if was (mostly) single deployer that did it all,
| not it's a chain of unrelated deployers that are metadata driven.
| So, even if some deployer is 'missing' that doesn't mean deployment wasn't deployed.
| It just might be that that particualr deployer didn't provide it's input/output,
| but that's hard/costly to fix - it would mean you have to re-deploy all deployments.
|
| But I agree, it make sense to do this for those deployments which we know weren't 'touched' by any deployer.
| Perhaps a MC/Deployers 2.2 feature. ;-)
Hope so! It's a must-have feature, IMO. :)
"alesj" wrote :
| In your case I see two options.
|
| 1) put SLEE into deployers
| - conceptually ugly/wrong and not hot-re-deployable
|
Hmm... wouldn't like to have this and it's not possible without separating some components, as Mobicents depends on certain components that are not loaded at this stage.
"alesj" wrote :
| 2) use jboss-dependency.xml
| - http://www.jboss.org/community/docs/DOC-13178
|
| e.g. some pseudo xml code
| <dependency xmlns="urn:jboss:dependency:1.0">
| | <item whenRequired="Describe">SLEEDeployer</item>
| | </dependency>
|
| Where your SLEEDeployer gets SLEE injected.
|
| The only issue here is in which phase your SLEEDeployer kicks in?
| If it's before PreDescribe, this won't work, since we're already past that.
|
This looked like a good option... but we start at PARSE phase, and that seems like an issue, cause adding the jboss-dependency.xml didn't solved the problem.
Something I might consider would be running everything at the Real deployer, but that was a problem also due to the fact that we relied on the old deployers behavior, which would deliver, in different stages, childs first than parents, ie, if a.jar had {a1.jar, a2.jar} inside, CREATE/START would process it like: {a1.jar, a2.jar, a.jar} but now in order to achieve that behavior I need to call the old ACCEPTS/INIT on Parse and CREATE/START on Real.
One other thing I've noticed and would like some help on it, is the fact that the jars are not exploded anymore into a tmp folder, the reference to them now comes as, and using the above example, .../server/default/deploy/a.jar/a1.jar and .../server/default/deploy/a.jar/a2.jar instead of the old way .../server/default/tmp/deploy/tmpXXXXXa.jar-contents/a1.jar. We used JarFile/JarEntry to handle it but now it fails due to those references not being a valid path for JarFile/JarEntry. I've managed a workaround for it, having a wrapper for the DeploymentUnit which will then enable me to return an InputStream to read the files... but not sure this is a good practice.
Thanks & sorry for the (very) long post,
Alexandre Mendonca
JBoss R&D
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4193913#4193913
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4193913
17 years, 4 months
[Design of Messaging on JBoss (Messaging/JBoss)] - Re: Paging code review
by clebert.suconic@jboss.com
anonymous wrote : 1. Use OrdereredExecutorFactory for thread management. This should make the global pager redundant.
I have this done on my local copy already.. I'm just waiting some tests to finish before I commit this tomorrow.
anonymous wrote : 3. Much of the functionality currently in PagingManagerImpl is better placed in PagingStoreImpl, e.g. addSize, ondePage. This would also simplify the code since less lookups would be needed and several methods could be removed or made private.
done
anonymous wrote : 4. PagingStoreImpl - The locking is very complex. Can this be simplified by using Condition objects with the lock? Or perhaps we can disallow concurrent writes to the same page - which would simplify the locking. IS there really much performance to be gained by concurrent writes to the same page? Can this be verified with a test?
The readWriteLock is used to avoid synchronized access on the verification on isPaging(). I wanted to not create any contention when paging is not activated.
I have changed the code not allow multiple writes, but the lock schema is pretty much the same.
anonymous wrote :
| 6. PagingStoreImpl::page()
|
| Calculation of block size and lock acquisition:
|
|
done
anonymous wrote :
| 7. PagingStoreImpl::page
|
| pagedUsedSize is being incremented twice?
|
|
Not really.. openNewPage is setting it to 0, then it needs to be added again.
anonymous wrote :
| 8. TransactionImpl:
|
| An address can switch from paging to not paging mid way during a transaction before it is committed, resulting in the transactions messages being routed out of order
|
| 9. TransactionImpl:
|
| Currently paged messages are paged on commit(). If there are a lot of paged messages this could hold up the remoting thread for a significant amount of time,
|
| One of the design principles of the server is each operation should be quick to complete to avoid starving other operations.l
|
| We should consider instead, writing transactional actions straight to a file in the paging case, then on commit, since we know they are on file we can process them on a different thread and the commit can return ok immediately. This would also allow us to deal with huge transactions, much bigger than can fit in memory at once
|
|
I want to do that as part HugeTransaction task.
anonymous wrote : 10. Currently routing code is duplicated in ServerSessionImpl::send, TransactionImpl and in depage logic. This should be put in one place.
This goes beyond of paging... but I will do that tomorrow.
I'm still missing 2, but that should be easy. (Unless we decide to do something more complex such as hole-detection the way I have done on the Journal).
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4193911#4193911
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4193911
17 years, 4 months
[Design of Messaging on JBoss (Messaging/JBoss)] - Re: JBM 2.0 Strict ordering via ordering groups
by timfox
"ataylor" wrote : anonymous wrote : What's the advantage in allowing multiple consumers? If you're ordering, then by definition, you will need to serialise consumption
|
| I was just taking this from the comments on the Jira, 'In order to guarantee strict ordering, even on rollback or in the presence of multiple consumers or with xa transactions, the queue needs to ensure that no more than one message with the value of ordering group is being delivered at any one time.'
|
I still don't see the advantage of multiple consumers.
anonymous wrote :
| So you send 10 messages, 5 for group A, with seq 1 to 5, and 5 for group B again with seq 1 to 5. A consumer consumes message group A seq 1 but does not acknowledge, the next message in group A with seq 2 can't be delivered but message group B seq 1 can, This gives you strict ordering within the defined group.
|
Yes, but the current message grouping also provides that same ordering guarantee, does it not?
anonymous wrote :
| The producer can specify on send the sequence number of a message to specify its delivery order.
I'm not sure what that means. Again, does not message groups preserve delivery order.
I'm just trying to understand here how message grouping does not accomplish the goal.
The goal here is to provide strict ordering of delivery of messages, even on rollback and with multiple consumers.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4193875#4193875
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4193875
17 years, 4 months