[JBoss JIRA] Created: (JBEE-35) jboss-servlet-api_3.0_spec 1.0.0.Beta1 release missing LocalString.properties
by Shelly McGowan (JIRA)
jboss-servlet-api_3.0_spec 1.0.0.Beta1 release missing LocalString.properties
------------------------------------------------------------------------------
Key: JBEE-35
URL: https://jira.jboss.org/jira/browse/JBEE-35
Project: JBoss JavaEE APIs
Issue Type: Bug
Reporter: Shelly McGowan
Assignee: Shelly McGowan
Fix For: 1.0.0.Beta2
Testing the newly released APIs integrated into JBoss AS, the build was successful but the server failed to start due to:
21:56:30,025 INFO [TomcatDeployment] deploy, ctxPath=/invoker
21:56:30,576 INFO [[/invoker]] Marking servlet JMXInvokerServlet as unavailable
21:56:30,577 ERROR [[/invoker]] Servlet /invoker threw load() exception: java.util.MissingResourceException: Can't find bundle for base name javax.servlet.LocalStrings, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1521)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1260)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:715)
at javax.servlet.GenericServlet.<clinit>(GenericServlet.java:93)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.jboss.web.tomcat.service.TomcatInjectionContainer.newInstance(TomcatInjectionContainer.java:278)
The 1.0.0.Beta1 release does not contain the LocalStrings.properties files:
javax/servlet/LocalStrings.properties
javax/servlet/http/LocalStrings.properties
To ensure these are added to the target jar, I have to add the following to the pom:
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/java</directory>
+ </resource>
+ </resources>
+ </build>
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 4 months
[JBoss JIRA] Created: (JGRP-1134) UNICAST.down(): move add to retransmitter out of the lock scope
by Bela Ban (JIRA)
UNICAST.down(): move add to retransmitter out of the lock scope
---------------------------------------------------------------
Key: JGRP-1134
URL: https://jira.jboss.org/jira/browse/JGRP-1134
Project: JGroups
Issue Type: Task
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.9
In UNICAST.down(), we acquire a lock per sender to which we send a message:
entry.lock(); // threads will only sync if they access the same entry
try {
seqno=entry.sent_msgs_seqno;
send_conn_id=entry.send_conn_id;
hdr=new UnicastHeader(UnicastHeader.DATA, seqno, send_conn_id, seqno == DEFAULT_FIRST_SEQNO);
msg.putHeader(getName(), hdr);
entry.sent_msgs.add(seqno, msg); // add *including* UnicastHeader, adds to retransmitter
entry.sent_msgs_seqno++;
}
finally {
entry.unlock();
}
the code
entry.sent_msgs.add()
is costly as it adds the message to the hashmap, but also to the retransmitter, which schedules a timer task etc.
The temp solution is to split add(0 into 2 part, which add the message to the hashmap (fast) and to the retransmitter (costly). The costly part is moved outside the lock scope, for example:
entry.lock(); // threads will only sync if they access the same entry
try {
seqno=entry.sent_msgs_seqno;
send_conn_id=entry.send_conn_id;
hdr=new UnicastHeader(UnicastHeader.DATA, seqno, send_conn_id, seqno == DEFAULT_FIRST_SEQNO);
msg.putHeader(getName(), hdr);
entry.sent_msgs.addToMessages(seqno, msg); // add *including* UnicastHeader, adds to hashmap
entry.sent_msgs_seqno++;
}
finally {
entry.unlock();
}
entry.sent_msgs.addToRetransmitter(seqno, msg); // adds to retransmitter
However, the issie is if the addition to the retransmitter fails (e.g. due to an OOME): then we'd have a message gap on the receiver !
SOLUTION:
#1 Do the add to the retransmitter in a loop. If there's a failure, sleep a bit and try again. Increase the sleep time and so on. Not very nice code, but works and doesn't ever *lose* a message. OK, if we get OOMEs, then sth's wrong anyway, but this covers temp OOMEs
#2 If there's an issue, set a flag. Next time around, we check the flag. If it is set, we re-add all messages in the hashmap into the retransmitter. Involves locking of the hashmaps and retransmitter, but that's OK since this case should almost never happen anyway !
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 4 months
[JBoss JIRA] Created: (JGRP-1105) UNICAST: don't send retransmission messages individually
by Bela Ban (JIRA)
UNICAST: don't send retransmission messages individually
--------------------------------------------------------
Key: JGRP-1105
URL: https://jira.jboss.org/jira/browse/JGRP-1105
Project: JGroups
Issue Type: Sub-task
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.9
Essentially the same as for NAKACK: instead of adding every message to the retransmitter and creating 1 timer task for it, we create SeqnoRanges in increments of (say) 1000 messages. SeqnoRange #1 is 1-1000, #2 is 1001-2000 and so on.
Every SeqnoRange has a low and a high, e.g. lo=1 and high=1000. However, we only retransmit messages with their bit set to 0 from low to bits.length: if we added messages 1-100 to the first range, then low=1, length=100 and high=1000. We only retransmit from 1-100.
This creates 1 task in the timer for 1000 messages, instead of 1000 tasks ! When adding a new message (e.g. 101), length() gets automatically adjusted, so retransmission will include 1-101 (only the 0 bits of course).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 4 months
[JBoss JIRA] Created: (JGRP-1135) UNICAST: add piggybacking of acks
by Bela Ban (JIRA)
UNICAST: add piggybacking of acks
---------------------------------
Key: JGRP-1135
URL: https://jira.jboss.org/jira/browse/JGRP-1135
Project: JGroups
Issue Type: Feature Request
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 2.10
For 2 sync RPCs between A and B, we have the following message exchange:
1: A --> DATA(15) --> B // A sends the first request to B
2: A <-- ACK(15) <-- B // B acks the request
3: A <-- DATA(27) <-- B // B sends the response to A
4: A --> ACK(27) --> B // A acks the response
5: A --> DATA(16) --> B // A sends the second request to B
6: A <-- ACK(16) <-- B // B acks the request
7: A <-- DATA(28) <-- B // B sends the response to A
8: A --> ACK(28) --> B // A acks the response
If we piggybacked acks, this would look as follows:
1: A --> DATA(15) --> B // A sends the first request to B
2: A <-- DATA-ACK(27,15) <-- B // B sends the response to A and acks A's request
3: A --> DATA(16,27) --> B // A sends the second request to B and acks B's response
4: A <-- DATA(28,16) <-- B // B sends the response to A and acks A's request
5: A --> ACK(28) --> B // A acks the response
So instead of 8 exchanges, we have 5. Note, however, that *message bundling* might mitigate this somewhat and not send 8 requests ! This needs to be investigated further.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 4 months