svn commit: r1367084 - in /qpid/trunk/qpid/java/broker-plugins/management-jmx/src: main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTes

2012-07-30 Thread robbie
Author: robbie
Date: Mon Jul 30 13:36:00 2012
New Revision: 1367084

URL: http://svn.apache.org/viewvc?rev=1367084view=rev
Log:
QPID-4170: prevent JMX threads from spinning in the Queue MBean if the content 
retrieval fails, log an error if it does. Add unit tests to expose issue and 
verify fix.

Modified:

qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java

qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java

Modified: 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java?rev=1367084r1=1367083r2=1367084view=diff
==
--- 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/mbeans/QueueMBean.java
 Mon Jul 30 13:36:00 2012
@@ -43,6 +43,7 @@ import javax.management.openmbean.Tabula
 import javax.management.openmbean.TabularDataSupport;
 import javax.management.openmbean.TabularType;
 import org.apache.commons.lang.time.FastDateFormat;
+import org.apache.log4j.Logger;
 import org.apache.qpid.management.common.mbeans.ManagedQueue;
 import org.apache.qpid.server.jmx.AMQManagedObject;
 import org.apache.qpid.server.jmx.ManagedObject;
@@ -59,6 +60,8 @@ import org.apache.qpid.server.queue.Queu
 
 public class QueueMBean extends AMQManagedObject implements ManagedQueue, 
QueueNotificationListener
 {
+private static final Logger LOGGER = Logger.getLogger(QueueMBean.class);
+
 private static final String[] VIEW_MSGS_COMPOSITE_ITEM_NAMES_DESC_ARRAY =
 VIEW_MSGS_COMPOSITE_ITEM_NAMES_DESC.toArray(new 
String[VIEW_MSGS_COMPOSITE_ITEM_NAMES_DESC.size()]);
 
@@ -370,12 +373,14 @@ public class QueueMBean extends AMQManag
 byte[] msgContent = new byte[bodySize];
 
 ByteBuffer buf = ByteBuffer.wrap(msgContent);
-int position = 0;
+int stored = serverMsg.getContent(buf, 0);
 
-while(position  bodySize)
+if(bodySize != stored)
 {
-position += serverMsg.getContent(buf, position);
-
+LOGGER.error(String.format(An unexpected amount of content was 
retrieved  +
+(expected %d, got %d bytes) when viewing content for 
message with ID %d  +
+on queue '%s' in virtual host '%s',
+bodySize, stored, messageId, _queue.getName(), 
_vhostMBean.getName()));
 }
 
 AMQMessageHeader header = serverMsg.getMessageHeader();
@@ -591,7 +596,7 @@ public class QueueMBean extends AMQManag
 }
 
 
-private static class GetMessageVisitor implements QueueEntryVisitor
+protected static class GetMessageVisitor implements QueueEntryVisitor
 {
 
 private final long _messageNumber;

Modified: 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java?rev=1367084r1=1367083r2=1367084view=diff
==
--- 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/management-jmx/src/test/java/org/apache/qpid/server/jmx/mbeans/QueueMBeanTest.java
 Mon Jul 30 13:36:00 2012
@@ -18,12 +18,14 @@
  */
 package org.apache.qpid.server.jmx.mbeans;
 
+import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Matchers.isNull;
 import static org.mockito.Matchers.argThat;
 
+import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.Collections;
 
@@ -31,19 +33,26 @@ import javax.management.ListenerNotFound
 import javax.management.Notification;
 import javax.management.NotificationListener;
 import javax.management.OperationsException;
+import javax.management.openmbean.CompositeDataSupport;
 
+import org.apache.qpid.management.common.mbeans.ManagedQueue;
 import org.apache.qpid.server.jmx.ManagedObjectRegistry;
+import org.apache.qpid.server.jmx.mbeans.QueueMBean.GetMessageVisitor;
+import org.apache.qpid.server.message.ServerMessage;
 import org.apache.qpid.server.model.Exchange;
 import org.apache.qpid.server.model.LifetimePolicy;
 import org.apache.qpid.server.model.Queue;
 import org.apache.qpid.server.model.Statistics;
 import 

svn commit: r1367095 - in /qpid/trunk/qpid/java: systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java test-profiles/JavaTransientExcludes

2012-07-30 Thread kwall
Author: kwall
Date: Mon Jul 30 13:59:07 2012
New Revision: 1367095

URL: http://svn.apache.org/viewvc?rev=1367095view=rev
Log:
QPID-4164: Patch to extend MaxDeliveryCountTest to check for this bug

Applied patch from Philip Harvey p...@philharveyonline.com

Modified:

qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java
qpid/trunk/qpid/java/test-profiles/JavaTransientExcludes

Modified: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java?rev=1367095r1=1367094r2=1367095view=diff
==
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java
 (original)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/client/MaxDeliveryCountTest.java
 Mon Jul 30 13:59:07 2012
@@ -41,6 +41,7 @@ import javax.jms.Session;
 import javax.jms.TextMessage;
 import javax.jms.Topic;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
@@ -67,6 +68,9 @@ public class MaxDeliveryCountTest extend
 private static final int MAX_DELIVERY_COUNT = 2;
 private CountDownLatch _awaitCompletion;
 
+/** index numbers of messages to be redelivered */
+private final ListInteger _redeliverMsgs = Arrays.asList(1, 2, 5, 14);
+
 public void setUp() throws Exception
 {
 //enable DLQ/maximumDeliveryCount support for all queues at the vhost 
level
@@ -144,13 +148,7 @@ public class MaxDeliveryCountTest extend
  */
 public void testAsynchronousClientAckSession() throws Exception
 {
-final ArrayListInteger redeliverMsgs = new ArrayListInteger();
-redeliverMsgs.add(1);
-redeliverMsgs.add(2);
-redeliverMsgs.add(5);
-redeliverMsgs.add(14);
-
-doTest(Session.CLIENT_ACKNOWLEDGE, redeliverMsgs, false, false);
+doTest(Session.CLIENT_ACKNOWLEDGE, _redeliverMsgs, false, false);
 }
 
 /**
@@ -159,13 +157,7 @@ public class MaxDeliveryCountTest extend
  */
 public void testAsynchronousTransactedSession() throws Exception
 {
-final ArrayListInteger redeliverMsgs = new ArrayListInteger();
-redeliverMsgs.add(1);
-redeliverMsgs.add(2);
-redeliverMsgs.add(5);
-redeliverMsgs.add(14);
-
-doTest(Session.SESSION_TRANSACTED, redeliverMsgs, false, false);
+doTest(Session.SESSION_TRANSACTED, _redeliverMsgs, false, false);
 }
 
 /**
@@ -174,13 +166,7 @@ public class MaxDeliveryCountTest extend
  */
 public void testAsynchronousAutoAckSession() throws Exception
 {
-final ArrayListInteger redeliverMsgs = new ArrayListInteger();
-redeliverMsgs.add(1);
-redeliverMsgs.add(2);
-redeliverMsgs.add(5);
-redeliverMsgs.add(14);
-
-doTest(Session.AUTO_ACKNOWLEDGE, redeliverMsgs, false, false);
+doTest(Session.AUTO_ACKNOWLEDGE, _redeliverMsgs, false, false);
 }
 
 /**
@@ -189,13 +175,7 @@ public class MaxDeliveryCountTest extend
  */
 public void testAsynchronousDupsOkSession() throws Exception
 {
-final ArrayListInteger redeliverMsgs = new ArrayListInteger();
-redeliverMsgs.add(1);
-redeliverMsgs.add(2);
-redeliverMsgs.add(5);
-redeliverMsgs.add(14);
-
-doTest(Session.DUPS_OK_ACKNOWLEDGE, redeliverMsgs, false, false);
+doTest(Session.DUPS_OK_ACKNOWLEDGE, _redeliverMsgs, false, false);
 }
 
 /**
@@ -204,13 +184,7 @@ public class MaxDeliveryCountTest extend
  */
 public void testSynchronousClientAckSession() throws Exception
 {
-final ArrayListInteger redeliverMsgs = new ArrayListInteger();
-redeliverMsgs.add(1);
-redeliverMsgs.add(2);
-redeliverMsgs.add(3);
-redeliverMsgs.add(14);
-
-doTest(Session.CLIENT_ACKNOWLEDGE, redeliverMsgs, true, false);
+doTest(Session.CLIENT_ACKNOWLEDGE, _redeliverMsgs, true, false);
 }
 
 /**
@@ -219,27 +193,22 @@ public class MaxDeliveryCountTest extend
  */
 public void testSynchronousTransactedSession() throws Exception
 {
-final ArrayListInteger redeliverMsgs = new ArrayListInteger();
-redeliverMsgs.add(1);
-redeliverMsgs.add(2);
-redeliverMsgs.add(5);
-redeliverMsgs.add(14);
-
-doTest(Session.SESSION_TRANSACTED, redeliverMsgs, true, false);
+doTest(Session.SESSION_TRANSACTED, _redeliverMsgs, true, false);
 }
 
 public void testDurableSubscription() throws Exception
 {
-final ArrayListInteger redeliverMsgs = new ArrayListInteger();
-redeliverMsgs.add(1);
-

svn commit: r1367307 - in /qpid/branches/0.18/qpid/java: client/src/main/java/org/apache/qpid/client/AMQSession.java client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java common/src/main/ja

2012-07-30 Thread rajith
Author: rajith
Date: Mon Jul 30 21:18:07 2012
New Revision: 1367307

URL: http://svn.apache.org/viewvc?rev=1367307view=rev
Log:
Porting to 0.18 branch.
QPID-3575 SessionExceptions (0-10 code path) are now marked as soft
errors. When a Session receives an exception it is closed and the
exception is notified via the ConnectionListener as well. However the
exception is marked as a soft-error, therefore the connection will not
be closed.

Modified:

qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java

qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java

qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java

Modified: 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java?rev=1367307r1=1367306r2=1367307view=diff
==
--- 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
 (original)
+++ 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession.java
 Mon Jul 30 21:18:07 2012
@@ -801,11 +801,8 @@ public abstract class AMQSessionC exten
 
 if (e instanceof AMQDisconnectedException)
 {
-if (_dispatcherThread != null)
-{
-// Failover failed and ain't coming back. Knife the dispatcher.
-_dispatcherThread.interrupt();
-}
+// Failover failed and ain't coming back. Knife the dispatcher.
+stopDispatcherThread();
 
}
 
@@ -834,6 +831,13 @@ public abstract class AMQSessionC exten
 }
 }
 
+protected void stopDispatcherThread()
+{
+if (_dispatcherThread != null)
+{
+_dispatcherThread.interrupt();
+}
+}
 /**
  * Commits all messages done in this transaction and releases any locks 
currently held.
  *

Modified: 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=1367307r1=1367306r2=1367307view=diff
==
--- 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
 (original)
+++ 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
 Mon Jul 30 21:18:07 2012
@@ -390,11 +390,7 @@ public class AMQSession_0_10 extends AMQ
  */
 public void sendClose(long timeout) throws AMQException, FailoverException
 {
-if (flushTask != null)
-{
-flushTask.cancel();
-flushTask = null;
-}
+cancelTimerTask();
 flushAcknowledgments();
 try
 {
@@ -1051,9 +1047,19 @@ public class AMQSession_0_10 extends AMQ
 {
 code = ee.getErrorCode().getValue();
 }
-AMQException amqe = new 
AMQException(AMQConstant.getConstant(code), se.getMessage(), se.getCause());
+AMQException amqe = new 
AMQException(AMQConstant.getConstant(code), false, se.getMessage(), 
se.getCause());
 _currentException = amqe;
 }
+cancelTimerTask();
+stopDispatcherThread();
+try
+{
+closed(_currentException);
+}
+catch(Exception e)
+{
+_logger.warn(Error closing session, e);
+}
 getAMQConnection().exceptionReceived(_currentException);
 }
 
@@ -1414,5 +1420,13 @@ public class AMQSession_0_10 extends AMQ
 return _qpidSession.isFlowBlocked();
 }
 
+private void cancelTimerTask()
+{
+if (flushTask != null)
+{
+flushTask.cancel();
+flushTask = null;
+}
+}
 }
 

Modified: 
qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java?rev=1367307r1=1367306r2=1367307view=diff
==
--- 
qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java
 (original)
+++ 
qpid/branches/0.18/qpid/java/common/src/main/java/org/apache/qpid/AMQException.java
 Mon Jul 30 21:18:07 2012
@@ -40,6 +40,8 @@ public class AMQException extends Except
 /** Holds the AMQ error code constant associated with this exception. */
 private AMQConstant _errorCode;

+private boolean _isHardError;
+
 /**
  * Creates an exception with an optional error code, optional message and 
optional underlying cause.
  *

svn commit: r1367308 - in /qpid/branches/0.18/qpid/java: client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java

2012-07-30 Thread rajith
Author: rajith
Date: Mon Jul 30 21:18:12 2012
New Revision: 1367308

URL: http://svn.apache.org/viewvc?rev=1367308view=rev
Log:
Porting to 0.18 branch.
QPID-3575
The added a system prop to revert to the previous behavior if need be.
Modified the SelectorTest#testRuntimeSelectorError test case to suit the
new behavior.

(cherry picked from commit 1b11ea556b73c4374a1c93d8707dc9aa57b209e1)

Modified:

qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java

qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java

Modified: 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=1367308r1=1367307r2=1367308view=diff
==
--- 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
 (original)
+++ 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
 Mon Jul 30 21:18:12 2012
@@ -128,7 +128,8 @@ public class AMQSession_0_10 extends AMQ
  * Used to store the range of in tx messages
  */
 private final RangeSet _txRangeSet = RangeSetFactory.createRangeSet();
-private int _txSize = 0;
+private int _txSize = 0;
+private boolean _isHardError = 
Boolean.getBoolean(qpid.session.is_hard_error);
 //--- constructors
 
 /**
@@ -1047,7 +1048,7 @@ public class AMQSession_0_10 extends AMQ
 {
 code = ee.getErrorCode().getValue();
 }
-AMQException amqe = new 
AMQException(AMQConstant.getConstant(code), false, se.getMessage(), 
se.getCause());
+AMQException amqe = new 
AMQException(AMQConstant.getConstant(code), _isHardError, se.getMessage(), 
se.getCause());
 _currentException = amqe;
 }
 cancelTimerTask();

Modified: 
qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java?rev=1367308r1=1367307r2=1367308view=diff
==
--- 
qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java
 (original)
+++ 
qpid/branches/0.18/qpid/java/systests/src/main/java/org/apache/qpid/test/client/message/SelectorTest.java
 Mon Jul 30 21:18:12 2012
@@ -233,7 +233,7 @@ public class SelectorTest extends QpidBr
 {
 
 }
-assertTrue(Connection should be closed, _connection.isClosed());
+assertFalse(Connection should not be closed, _connection.isClosed());
 }
 
 public void testSelectorWithJMSMessageID() throws Exception



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1367309 - /qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java

2012-07-30 Thread rajith
Author: rajith
Date: Mon Jul 30 21:18:16 2012
New Revision: 1367309

URL: http://svn.apache.org/viewvc?rev=1367309view=rev
Log:
Porting to 0.18 branch.
QPID-3575 Changed the name of the system prop to
qpid.session.legacy_exception_behaviour. The system prop will now
restore the old behavior.

(cherry picked from commit 3f3d5165649e78bba094dce6443ff9eeeb56af0c)

Modified:

qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java

Modified: 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java?rev=1367309r1=1367308r2=1367309view=diff
==
--- 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
 (original)
+++ 
qpid/branches/0.18/qpid/java/client/src/main/java/org/apache/qpid/client/AMQSession_0_10.java
 Mon Jul 30 21:18:16 2012
@@ -129,7 +129,7 @@ public class AMQSession_0_10 extends AMQ
  */
 private final RangeSet _txRangeSet = RangeSetFactory.createRangeSet();
 private int _txSize = 0;
-private boolean _isHardError = 
Boolean.getBoolean(qpid.session.is_hard_error);
+private boolean _isHardError = 
Boolean.getBoolean(qpid.session.legacy_exception_behaviour);
 //--- constructors
 
 /**
@@ -1051,15 +1051,18 @@ public class AMQSession_0_10 extends AMQ
 AMQException amqe = new 
AMQException(AMQConstant.getConstant(code), _isHardError, se.getMessage(), 
se.getCause());
 _currentException = amqe;
 }
-cancelTimerTask();
-stopDispatcherThread();
-try
-{
-closed(_currentException);
-}
-catch(Exception e)
+if (!_isHardError)
 {
-_logger.warn(Error closing session, e);
+cancelTimerTask();
+stopDispatcherThread();
+try
+{
+closed(_currentException);
+}
+catch(Exception e)
+{
+_logger.warn(Error closing session, e);
+}
 }
 getAMQConnection().exceptionReceived(_currentException);
 }



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1367354 - in /qpid/trunk/qpid/python/qpid: selector.py tests/messaging/endpoints.py

2012-07-30 Thread rhs
Author: rhs
Date: Mon Jul 30 23:03:46 2012
New Revision: 1367354

URL: http://svn.apache.org/viewvc?rev=1367354view=rev
Log:
QPID-4147: made selector handle interrupt based on patch from siddesh

Modified:
qpid/trunk/qpid/python/qpid/selector.py
qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py

Modified: qpid/trunk/qpid/python/qpid/selector.py
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/selector.py?rev=1367354r1=1367353r2=1367354view=diff
==
--- qpid/trunk/qpid/python/qpid/selector.py (original)
+++ qpid/trunk/qpid/python/qpid/selector.py Mon Jul 30 23:03:46 2012
@@ -16,7 +16,7 @@
 # specific language governing permissions and limitations
 # under the License.
 #
-import atexit, time
+import atexit, time, errno
 from compat import select, set, selectable_waiter
 from threading import Thread, Lock
 
@@ -111,12 +111,24 @@ class Selector:
   else:
 wakeup = min(wakeup, t)
 
-  if wakeup is None:
-timeout = None
-  else:
-timeout = max(0, wakeup - time.time())
+  rd = []
+  wr = []
+  ex = []
 
-  rd, wr, ex = select(self.reading, self.writing, (), timeout)
+  while True:
+try:
+  if wakeup is None:
+timeout = None
+  else:
+timeout = max(0, wakeup - time.time())
+  rd, wr, ex = select(self.reading, self.writing, (), timeout)
+  break
+except Exception, (err, strerror):
+  # Repeat the select call if we were interrupted.
+  if err == errno.EINTR:
+continue
+  else:
+raise
 
   for sel in wr:
 if sel.writing():

Modified: qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py?rev=1367354r1=1367353r2=1367354view=diff
==
--- qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py (original)
+++ qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py Mon Jul 30 
23:03:46 2012
@@ -1333,3 +1333,15 @@ class SenderTests(Base):
 self.drain(self.rcv, expected=msgs)
 self.ssn.acknowledge()
 assert caught, did not exceed capacity
+
+  def testEINTR(self):
+m1 = self.content(testEINTR, 0)
+m2 = self.content(testEINTR, 1)
+
+self.snd.send(m1, timeout=self.timeout())
+try:
+  os.setuid(500)
+  assert False, setuid should fail
+except:
+  pass
+self.snd.send(m2, timeout=self.timeout())



-
To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org
For additional commands, e-mail: commits-h...@qpid.apache.org



svn commit: r1367355 - in /qpid/proton/trunk/proton-c: CMakeLists.txt bindings/CMakeLists.txt bindings/python/CMakeLists.txt bindings/ruby/CMakeLists.txt docs/api/CMakeLists.txt

2012-07-30 Thread rhs
Author: rhs
Date: Mon Jul 30 23:04:17 2012
New Revision: 1367355

URL: http://svn.apache.org/viewvc?rev=1367355view=rev
Log:
updated build to install python and ruby bindings

Modified:
qpid/proton/trunk/proton-c/CMakeLists.txt
qpid/proton/trunk/proton-c/bindings/CMakeLists.txt
qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt
qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt
qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt

Modified: qpid/proton/trunk/proton-c/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff
==
--- qpid/proton/trunk/proton-c/CMakeLists.txt (original)
+++ qpid/proton/trunk/proton-c/CMakeLists.txt Mon Jul 30 23:04:17 2012
@@ -56,7 +56,7 @@ add_library (
   src/messenger.c
 )
 
-include(FindSWIG)
+find_package(SWIG)
 if (SWIG_FOUND)
   add_subdirectory(bindings)
 endif (SWIG_FOUND)

Modified: qpid/proton/trunk/proton-c/bindings/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff
==
--- qpid/proton/trunk/proton-c/bindings/CMakeLists.txt (original)
+++ qpid/proton/trunk/proton-c/bindings/CMakeLists.txt Mon Jul 30 23:04:17 2012
@@ -28,7 +28,7 @@ if (PYTHONLIBS_FOUND)
 endif (PYTHONLIBS_FOUND)
 
 # Build wrapper for Ruby:
-include(FindRuby)
+find_package(Ruby)
 if (RUBY_FOUND)
   add_subdirectory(ruby)
 endif (RUBY_FOUND)

Modified: qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff
==
--- qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt (original)
+++ qpid/proton/trunk/proton-c/bindings/python/CMakeLists.txt Mon Jul 30 
23:04:17 2012
@@ -3,3 +3,24 @@ set(CMAKE_SWIG_FLAGS -threads)
 swig_add_module(cproton python python.i)
 include_directories (${PYTHON_INCLUDE_PATH})
 swig_link_libraries(cproton ${BINDING_DEPS} ${PYTHON_LIBRARIES})
+
+find_package(PythonInterp REQUIRED)
+
+execute_process(COMMAND ${PYTHON_EXECUTABLE}
+-c from distutils.sysconfig import get_python_lib; print 
get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')
+OUTPUT_VARIABLE PYTHON_SITEARCH_PACKAGES
+OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+install(CODE execute_process(COMMAND ${PYTHON_EXECUTABLE} -m py_compile 
cproton.py
+  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}))
+install(CODE execute_process(COMMAND ${PYTHON_EXECUTABLE} -O -m py_compile 
cproton.py
+  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}))
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cproton.py
+  ${CMAKE_CURRENT_BINARY_DIR}/cproton.pyc
+  ${CMAKE_CURRENT_BINARY_DIR}/cproton.pyo
+DESTINATION ${PYTHON_SITEARCH_PACKAGES}
+COMPONENT Python)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/_cproton.so
+RENAME _cproton.so
+DESTINATION ${PYTHON_SITEARCH_PACKAGES}
+COMPONENT Python)

Modified: qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff
==
--- qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt (original)
+++ qpid/proton/trunk/proton-c/bindings/ruby/CMakeLists.txt Mon Jul 30 23:04:17 
2012
@@ -24,3 +24,14 @@ set_target_properties(cproton-ruby PROPE
 add_custom_command(TARGET cproton-ruby
POST_BUILD
COMMAND cmake -E rename cproton-ruby.so cproton.so)
+
+execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e puts 
RbConfig::CONFIG['prefix']
+OUTPUT_VARIABLE RUBY_PREFIX
+OUTPUT_STRIP_TRAILING_WHITESPACE)
+
+string(REPLACE ${RUBY_PREFIX} ${CMAKE_INSTALL_PREFIX} RUBY_PFX_ARCH_DIR 
${RUBY_ARCH_DIR})
+
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/cproton.so
+RENAME cproton.so
+DESTINATION ${RUBY_PFX_ARCH_DIR}
+COMPONENT Ruby)

Modified: qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt?rev=1367355r1=1367354r2=1367355view=diff
==
--- qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt (original)
+++ qpid/proton/trunk/proton-c/docs/api/CMakeLists.txt Mon Jul 30 23:04:17 2012
@@ -17,19 +17,20 @@
 # under the License.
 #
 
-include(FindDoxygen)
+find_package(Doxygen)
 if (DOXYGEN_FOUND)
-configure_file (${CMAKE_CURRENT_SOURCE_DIR}/user.doxygen.in
-