rhmessaging commits: r4021 - store/trunk/cpp/tests.
by rhmessaging-commits@lists.jboss.org
Author: kpvdr
Date: 2010-06-11 15:43:00 -0400 (Fri, 11 Jun 2010)
New Revision: 4021
Modified:
store/trunk/cpp/tests/Makefile.am
Log:
Additional path which enables out-of-tree builds to complete
Modified: store/trunk/cpp/tests/Makefile.am
===================================================================
--- store/trunk/cpp/tests/Makefile.am 2010-06-11 16:20:37 UTC (rev 4020)
+++ store/trunk/cpp/tests/Makefile.am 2010-06-11 19:43:00 UTC (rev 4021)
@@ -24,7 +24,7 @@
AM_CXXFLAGS = $(WARNING_CFLAGS) $(APR_CXXFLAGS) $(QPID_CXXFLAGS) -DBOOST_TEST_DYN_LINK
-INCLUDES=-I$(top_srcdir)/lib -I$(top_srcdir)/lib/gen
+INCLUDES=-I$(top_srcdir)/lib -I$(abs_builddir)/../lib -I$(top_srcdir)/lib/gen
TMP_DATA_DIR=$(abs_srcdir)/tmp_data_dir
14 years, 6 months
rhmessaging commits: r4020 - mgmt/newdata/rosemary/python/rosemary.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2010-06-11 12:20:37 -0400 (Fri, 11 Jun 2010)
New Revision: 4020
Modified:
mgmt/newdata/rosemary/python/rosemary/model.py
Log:
Add api for adding new sample data
Modified: mgmt/newdata/rosemary/python/rosemary/model.py
===================================================================
--- mgmt/newdata/rosemary/python/rosemary/model.py 2010-06-11 14:14:09 UTC (rev 4019)
+++ mgmt/newdata/rosemary/python/rosemary/model.py 2010-06-11 16:20:37 UTC (rev 4020)
@@ -449,6 +449,15 @@
obj._sync_time = datetime.now()
+ def add_object_sample(self, cursor, obj, columns=None):
+ assert isinstance(obj, RosemaryObject)
+ assert obj._id, obj
+
+ if columns is None:
+ columns = self.sql_table._columns
+
+ self.sql_samples_insert.execute(cursor, columns, obj.__dict__)
+
def delete_object(self, cursor, obj):
assert isinstance(obj, RosemaryObject)
assert obj._id
@@ -669,6 +678,9 @@
def delete(self, cursor):
self._class.delete_object(cursor, self)
+ def add_sample(self, cursor, columns=None):
+ self._class.add_object_sample(cursor, self, columns)
+
def fake_qmf_values(self):
self._qmf_agent_id = "__rosemary__"
self._qmf_object_id = str(datetime.now())
14 years, 6 months
rhmessaging commits: r4019 - mgmt/newdata/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2010-06-11 10:14:09 -0400 (Fri, 11 Jun 2010)
New Revision: 4019
Modified:
mgmt/newdata/cumin/python/cumin/session.py
Log:
A little extra logging
Modified: mgmt/newdata/cumin/python/cumin/session.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/session.py 2010-06-09 16:30:31 UTC (rev 4018)
+++ mgmt/newdata/cumin/python/cumin/session.py 2010-06-11 14:14:09 UTC (rev 4019)
@@ -98,6 +98,12 @@
def delAgent(self, qmf_agent):
log.info("Deleting agent %s", qmf_agent)
+ def newPackage(self, name):
+ log.info("New package %s", name)
+
+ def newClass(self, kind, classKey):
+ log.info("New class %s", classKey)
+
def methodResponse(self, broker, seq, response):
log.info("Method response for request %i received from %s",
seq, broker)
14 years, 6 months
rhmessaging commits: r4018 - store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb.
by rhmessaging-commits@lists.jboss.org
Author: rgemmell
Date: 2010-06-09 12:30:31 -0400 (Wed, 09 Jun 2010)
New Revision: 4018
Modified:
store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
Log:
Gather list of QueueEntry keys to be recovered and then pass close cursor before passing to the recovery handler, instead of recovering key by key.
This prevents DeadlockException when trying to acquire locks to remove invalid entries. Implement asynchronous transaction commit. Tweak debug logging.
Modified: store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java
===================================================================
--- store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java 2010-06-08 19:11:00 UTC (rev 4017)
+++ store/trunk/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStore.java 2010-06-09 16:30:31 UTC (rev 4018)
@@ -23,6 +23,7 @@
import java.io.File;
import java.lang.ref.SoftReference;
import java.nio.ByteBuffer;
+import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
@@ -696,6 +697,8 @@
{
QueueEntryRecoveryHandler qerh = recoveryHandler.begin(this);
+ ArrayList<QueueEntryKey> entries = new ArrayList<QueueEntryKey>();
+
Cursor cursor = null;
try
{
@@ -705,21 +708,27 @@
DatabaseEntry value = new DatabaseEntry();
- OperationStatus status = cursor.getNext(key, value, LockMode.RMW);
-
- while (status == OperationStatus.SUCCESS)
+ while (cursor.getNext(key, value, LockMode.RMW) == OperationStatus.SUCCESS)
{
+ QueueEntryKey qek = (QueueEntryKey) keyBinding.entryToObject(key);
- QueueEntryKey dd = (QueueEntryKey) keyBinding.entryToObject(key);
+ entries.add(qek);
+ }
- AMQShortString queueName = dd.getQueueName();
- long messageId = dd.getMessageId();
+ try
+ {
+ cursor.close();
+ }
+ finally
+ {
+ cursor = null;
+ }
+
+ for(QueueEntryKey entry : entries)
+ {
+ AMQShortString queueName = entry.getQueueName();
+ long messageId = entry.getMessageId();
- //Advance the cursor BEFORE passing the previous entry to the
- //recovery handler. This is required in order to release the
- //lock on the record in case the handler decides to remove it.
- status = cursor.getNext(key, value, LockMode.RMW);
-
qerh.queueEntry(queueName.asString(),messageId);
}
}
@@ -766,7 +775,7 @@
if (_log.isDebugEnabled())
{
- _log.debug("Message Id: " + messageId + " Removing");
+ _log.debug("Removing message id " + messageId);
}
@@ -833,7 +842,7 @@
cursor.close();
cursor = null;
- commit(tx);
+ commit(tx, true);
}
catch (DatabaseException e)
{
@@ -1030,8 +1039,11 @@
*/
public void createQueue(AMQQueue queue, FieldTable arguments) throws AMQException
{
- _log.debug("public void createQueue(AMQQueue queue(" + queue.getName() + ") = " + queue + "): called");
-
+ if (_log.isDebugEnabled())
+ {
+ _log.debug("public void createQueue(AMQQueue queue(" + queue.getName() + ") = " + queue + "): called");
+ }
+
if (_state != State.RECOVERING)
{
QueueRecord queueRecord= new QueueRecord(queue.getNameShortString(),
@@ -1067,8 +1079,11 @@
{
AMQShortString name = queue.getNameShortString();
- _log.debug("public void removeQueue(AMQShortString name = " + name + "): called");
-
+ if (_log.isDebugEnabled())
+ {
+ _log.debug("public void removeQueue(AMQShortString name = " + name + "): called");
+ }
+
DatabaseEntry key = new DatabaseEntry();
EntryBinding keyBinding = new AMQShortStringTB();
keyBinding.objectToEntry(name, key);
@@ -1149,7 +1164,7 @@
if (_log.isDebugEnabled())
{
- _log.debug("Message Id: " + messageId + " Dequeue");
+ _log.debug("Dequeue message id " + messageId);
}
try
@@ -1188,27 +1203,28 @@
*
* @throws AMQException If the operation fails for any reason.
*/
- public void commitTran(StoreContext context) throws AMQException
+ private StoreFuture commitTranImpl(StoreContext context, boolean syncCommit) throws AMQException
{
com.sleepycat.je.Transaction tx = (com.sleepycat.je.Transaction) context.getPayload();
- if (_log.isDebugEnabled())
- {
- _log.debug("public void commitTran(StoreContext context = " + context + "): called with [Transaction" + tx + "]");
- }
+ //if (_log.isDebugEnabled())
+ //{
+ // _log.debug("public void commitTranImpl() called with (Transaction=" + tx + ", syncCommit= "+ syncCommit + ")");
+ //}
if (tx == null)
{
throw new AMQException("Fatal internal error: transactional context is empty at commitTran");
}
-
+
+ StoreFuture result;
try
{
- commit(tx);
+ result = commit(tx, syncCommit);
if (_log.isDebugEnabled())
{
- _log.debug("commit tran completed");
+ _log.debug("commitTranImpl completed for [Transaction:" + tx + "]");
}
}
catch (DatabaseException e)
@@ -1219,15 +1235,10 @@
{
context.setPayload(null);
}
+
+ return result;
}
- public StoreFuture commitTranAsync(StoreContext context) throws AMQException
- {
- //TODO - Actually create an async commit implementation.
- commitTran(context);
- return IMMEDIATE_FUTURE;
- }
-
/**
* Abandons all operations performed within a given transactional context.
*
@@ -1241,7 +1252,7 @@
if (_log.isDebugEnabled())
{
- _log.debug("abort tran called: " + tx);
+ _log.debug("abortTran called for [Transaction:" + tx + "]");
}
try
@@ -1686,15 +1697,16 @@
}
}
- private void commit(com.sleepycat.je.Transaction tx) throws DatabaseException
+ private StoreFuture commit(com.sleepycat.je.Transaction tx, boolean syncCommit) throws DatabaseException
{
- // _log.debug("void commit(Transaction tx = " + tx + "): called");
+ // _log.debug("void commit(Transaction tx = " + tx + ", sync = " + syncCommit + "): called");
tx.commitNoSync();
- Commit commit = new Commit(_commitThread, tx);
- commit.commit();
-
+ BDBCommitFuture commitFuture = new BDBCommitFuture(_commitThread, tx, syncCommit);
+ commitFuture.commit();
+
+ return commitFuture;
}
public void startCommitThread()
@@ -1702,55 +1714,36 @@
_commitThread.start();
}
- private static final class Commit
+ private static final class BDBCommitFuture implements StoreFuture
{
- // private static final Logger _log = Logger.getLogger(Commit.class);
+ // private static final Logger _log = Logger.getLogger(BDBCommitFuture.class);
private final CommitThread _commitThread;
private final com.sleepycat.je.Transaction _tx;
private DatabaseException _databaseException;
private boolean _complete;
+ private boolean _syncCommit;
- public Commit(CommitThread commitThread, com.sleepycat.je.Transaction tx)
+ public BDBCommitFuture(CommitThread commitThread, com.sleepycat.je.Transaction tx, boolean syncCommit)
{
// _log.debug("public Commit(CommitThread commitThread = " + commitThread + ", Transaction tx = " + tx
// + "): called");
_commitThread = commitThread;
_tx = tx;
+ _syncCommit = syncCommit;
}
- public void prepare(boolean synch) throws DatabaseException
+ public synchronized void complete()
{
- // _log.debug("public void prepare(boolean synch = " + synch + "): called");
-
- try
+ if (_log.isDebugEnabled())
{
- if (synch)
- {
- // _log.debug("CommitSynch transaction: " + _tx);
- _tx.commitSync();
- }
- else
- {
- // _log.debug("CommitNoSynch transaction: " + _tx);
- _tx.commitNoSync();
- }
+ _log.debug("public synchronized void complete(): called (Transaction = " + _tx + ")");
}
- catch (DatabaseException e)
- {
- _databaseException = e;
- throw e;
- }
- }
- public synchronized void complete()
- {
- // _log.debug("public synchronized void complete(): called");
-
_complete = true;
- notify();
+ notifyAll();
}
public synchronized void abort(DatabaseException databaseException)
@@ -1761,16 +1754,23 @@
_complete = true;
_databaseException = databaseException;
- notify();
+ notifyAll();
}
public void commit() throws DatabaseException
{
- // _log.debug("public void commit(): called");
+ //_log.debug("public void commit(): called");
_commitThread.addJob(this);
- synchronized (this)
+
+ if(!_syncCommit)
{
+ _log.debug("CommitAsync was requested, returning immediately.");
+ return;
+ }
+
+ synchronized (BDBCommitFuture.this)
+ {
while (!_complete)
{
try
@@ -1792,13 +1792,34 @@
}
}
}
+
+ public synchronized boolean isComplete()
+ {
+ return _complete;
+ }
+
+ public void waitForCompletion()
+ {
+ while (!isComplete())
+ {
+ try
+ {
+ wait(250);
+ }
+ catch (InterruptedException e)
+ {
+ //TODO Should we ignore, or throw a 'StoreException'?
+ throw new RuntimeException(e);
+ }
+ }
+ }
}
/**
- * Implements a thread which batches and commits a queue of {@link Commit} operations. The commit operations
+ * Implements a thread which batches and commits a queue of {@link BDBCommitFuture} operations. The commit operations
* themselves are responsible for adding themselves to the queue and waiting for the commit to happen before
* continuing, but it is the responsibility of this thread to tell the commit operations when they have been
- * completed by calling back on their {@link Commit#complete()} and {@link Commit#abort} methods.
+ * completed by calling back on their {@link BDBCommitFuture#complete()} and {@link BDBCommitFuture#abort} methods.
*
* <p/><table id="crc"><caption>CRC Card</caption> <tr><th> Responsibilities <th> Collarations </table>
*/
@@ -1807,7 +1828,7 @@
// private final Logger _log = Logger.getLogger(CommitThread.class);
private final AtomicBoolean _stopped = new AtomicBoolean(false);
- private final AtomicReference<Queue<Commit>> _jobQueue = new AtomicReference<Queue<Commit>>(new ConcurrentLinkedQueue<Commit>());
+ private final AtomicReference<Queue<BDBCommitFuture>> _jobQueue = new AtomicReference<Queue<BDBCommitFuture>>(new ConcurrentLinkedQueue<BDBCommitFuture>());
private final CheckpointConfig _config = new CheckpointConfig();
private final Object _lock = new Object();
@@ -1848,21 +1869,21 @@
// we replace the old queue atomically with a new one and this avoids any need to
// copy elements out of the queue
- Queue<Commit> jobs = _jobQueue.getAndSet(new ConcurrentLinkedQueue<Commit>());
+ Queue<BDBCommitFuture> jobs = _jobQueue.getAndSet(new ConcurrentLinkedQueue<BDBCommitFuture>());
try
{
// _environment.checkpoint(_config);
_environment.sync();
- for (Commit commit : jobs)
+ for (BDBCommitFuture commit : jobs)
{
commit.complete();
}
}
catch (DatabaseException e)
{
- for (Commit commit : jobs)
+ for (BDBCommitFuture commit : jobs)
{
commit.abort(e);
}
@@ -1875,7 +1896,7 @@
return !_jobQueue.get().isEmpty();
}
- public void addJob(Commit commit)
+ public void addJob(BDBCommitFuture commit)
{
synchronized (_lock)
{
@@ -1995,7 +2016,11 @@
{
if(_ctx != null)
{
- BDBMessageStore.this.commitTran(_ctx);
+ //if(_log.isDebugEnabled())
+ //{
+ // _log.debug("Flushing message " + _messageId + " to store");
+ //}
+ BDBMessageStore.this.commitTranImpl(_ctx, true);
}
}
catch (AMQException e)
@@ -2059,12 +2084,12 @@
public void commitTran() throws AMQException
{
- BDBMessageStore.this.commitTran(_ctx);
+ BDBMessageStore.this.commitTranImpl(_ctx, true);
}
public StoreFuture commitTranAsync() throws AMQException
{
- return BDBMessageStore.this.commitTranAsync(_ctx);
+ return BDBMessageStore.this.commitTranImpl(_ctx, false);
}
public void abortTran() throws AMQException
14 years, 6 months
rhmessaging commits: r4017 - store/trunk/cpp/lib.
by rhmessaging-commits@lists.jboss.org
Author: kpvdr
Date: 2010-06-08 15:11:00 -0400 (Tue, 08 Jun 2010)
New Revision: 4017
Modified:
store/trunk/cpp/lib/MessageStoreImpl.cpp
store/trunk/cpp/lib/MessageStoreImpl.h
Log:
Fix for a recent regression in r.3982 in which a lock wich protects the TPL from being initialized by multiple threads was erroneously removed. The lock is now replaced.
Modified: store/trunk/cpp/lib/MessageStoreImpl.cpp
===================================================================
--- store/trunk/cpp/lib/MessageStoreImpl.cpp 2010-06-08 18:35:59 UTC (rev 4016)
+++ store/trunk/cpp/lib/MessageStoreImpl.cpp 2010-06-08 19:11:00 UTC (rev 4017)
@@ -408,7 +408,8 @@
void MessageStoreImpl::chkTplStoreInit()
{
- // Don't take lock unless necessary
+ // Prevent multiple threads from late-initializing the TPL
+ qpid::sys::Mutex::ScopedLock sl(tplInitLock);
if (!tplStorePtr->is_ready()) {
journal::jdir::create_dir(getTplBaseDir());
tplStorePtr->initialize(tplNumJrnlFiles, false, 0, tplJrnlFsizeSblks, tplWCacheNumPages, tplWCachePgSizeSblks);
Modified: store/trunk/cpp/lib/MessageStoreImpl.h
===================================================================
--- store/trunk/cpp/lib/MessageStoreImpl.h 2010-06-08 18:35:59 UTC (rev 4016)
+++ store/trunk/cpp/lib/MessageStoreImpl.h 2010-06-08 19:11:00 UTC (rev 4017)
@@ -124,6 +124,7 @@
// Pointer to Transaction Prepared List (TPL) journal instance
boost::shared_ptr<TplJournalImpl> tplStorePtr;
TplRecoverMap tplRecoverMap;
+ qpid::sys::Mutex tplInitLock;
JournalListMap journalList;
qpid::sys::Mutex journalListLock;
14 years, 6 months
rhmessaging commits: r4016 - mgmt/newdata/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2010-06-08 14:35:59 -0400 (Tue, 08 Jun 2010)
New Revision: 4016
Modified:
mgmt/newdata/cumin/python/cumin/session.py
Log:
Better error reporting in qmf call
Modified: mgmt/newdata/cumin/python/cumin/session.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/session.py 2010-06-08 18:31:24 UTC (rev 4015)
+++ mgmt/newdata/cumin/python/cumin/session.py 2010-06-08 18:35:59 UTC (rev 4016)
@@ -60,25 +60,27 @@
agent = self.qmf_session._getAgentForAgentAddr(obj._qmf_agent_id)
- assert agent
+ if not agent:
+ raise Exception("Agent '%s' is unknown" % obj._qmf_agent_id)
oid = ObjectId({"_agent_name": obj._qmf_agent_id,
"_object_name": obj._qmf_object_id})
- objs = agent.getObjects(_objectId=oid)
-
+ qmf_objs = agent.getObjects(_objectId=oid)
+
try:
- obj = objs[0]
+ qmf_obj = qmf_objs[0]
except IndexError:
- raise Exception("XXX no object!")
+ raise Exception("Object '%s' is unknown" % obj._qmf_object_id)
self.lock.acquire()
try:
- seq = obj._invoke(name, args, {"_async": True})
+ seq = qmf_obj._invoke(name, args, {"_async": True})
- if seq is not None:
- self.outstanding_method_calls[seq] = callback
+ assert seq is not None
+ self.outstanding_method_calls[seq] = callback
+
return seq
finally:
self.lock.release()
14 years, 6 months
rhmessaging commits: r4015 - mgmt/newdata/mint/python/mint.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2010-06-08 14:31:24 -0400 (Tue, 08 Jun 2010)
New Revision: 4015
Modified:
mgmt/newdata/mint/python/mint/session.py
Log:
Don't receive events
Modified: mgmt/newdata/mint/python/mint/session.py
===================================================================
--- mgmt/newdata/mint/python/mint/session.py 2010-06-07 21:33:00 UTC (rev 4014)
+++ mgmt/newdata/mint/python/mint/session.py 2010-06-08 18:31:24 UTC (rev 4015)
@@ -34,7 +34,9 @@
self.qmf_session = Session(MintConsole(self.app.model),
manageConnections=True,
- rcvObjects=self.app.update_enabled)
+ rcvObjects=self.app.update_enabled,
+ rcvEvents=False,
+ rcvHeartbeats=True)
self.add_broker(self.broker_uri)
14 years, 6 months
rhmessaging commits: r4014 - mgmt/newdata/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2010-06-07 17:33:00 -0400 (Mon, 07 Jun 2010)
New Revision: 4014
Modified:
mgmt/newdata/cumin/python/cumin/session.py
Log:
A new approach to making a method call
Modified: mgmt/newdata/cumin/python/cumin/session.py
===================================================================
--- mgmt/newdata/cumin/python/cumin/session.py 2010-06-07 17:36:52 UTC (rev 4013)
+++ mgmt/newdata/cumin/python/cumin/session.py 2010-06-07 21:33:00 UTC (rev 4014)
@@ -57,18 +57,24 @@
def call_method(self, callback, obj, name, args):
assert isinstance(obj, RosemaryObject)
+
+ agent = self.qmf_session._getAgentForAgentAddr(obj._qmf_agent_id)
+
+ assert agent
+
+ oid = ObjectId({"_agent_name": obj._qmf_agent_id,
+ "_object_name": obj._qmf_object_id})
+
+ objs = agent.getObjects(_objectId=oid)
- oid_args = {"_agent_name": obj._qmf_agent_id,
- "_object_name": obj._qmf_object_id}
+ try:
+ obj = objs[0]
+ except IndexError:
+ raise Exception("XXX no object!")
- broker = self.qmf_brokers[0]
- ck = ClassKey(obj._qmf_class_key)
- oid = ObjectId(oid_args)
-
self.lock.acquire()
try:
- seq = self.qmf_session._sendMethodRequest \
- (broker, ck, oid, name, args)
+ seq = obj._invoke(name, args, {"_async": True})
if seq is not None:
self.outstanding_method_calls[seq] = callback
14 years, 6 months
rhmessaging commits: r4013 - store/trunk/cpp/lib/jrnl.
by rhmessaging-commits@lists.jboss.org
Author: kpvdr
Date: 2010-06-07 13:36:52 -0400 (Mon, 07 Jun 2010)
New Revision: 4013
Modified:
store/trunk/cpp/lib/jrnl/enq_rec.cpp
Log:
Added TODO comment for code improvement
Modified: store/trunk/cpp/lib/jrnl/enq_rec.cpp
===================================================================
--- store/trunk/cpp/lib/jrnl/enq_rec.cpp 2010-06-07 14:17:33 UTC (rev 4012)
+++ store/trunk/cpp/lib/jrnl/enq_rec.cpp 2010-06-07 17:36:52 UTC (rev 4013)
@@ -307,14 +307,29 @@
else if (hdr_data_dblks - rec_offs_dblks <= max_size_dblks)
{
// Remainder of xid & data fits within this page; tail split
- if (offs < _enq_hdr._xidsize)
+
+ /*
+ * TODO: This section needs revision. Since it is known that the end of the page falls within the
+ * tail record, it is only necessary to write from the current offset to the end of the page under
+ * all circumstances. The multiple if/else combinations may be eliminated, as well as one memcpy()
+ * operation.
+ *
+ * Also note that Coverity has detected a possible memory overwrite in this block. It occurs if
+ * both the following two if() stmsts (numbered) are false. With rd_cnt = 0, this would result in
+ * the value of tail_rem > sizeof(tail_rec). Practically, this could only happen if the start and
+ * end of a page both fall within the same tail record, in which case the tail would have to be
+ * (much!) larger. However, the logic here does not account for this possibility.
+ *
+ * If the optimization above is undertaken, this code would probably be removed.
+ */
+ if (offs < _enq_hdr._xidsize) // 1
{
// some XID still outstanding, copy remainder of XID and data
const std::size_t rem = _enq_hdr._xidsize + _enq_hdr._dsize - offs;
std::memcpy((char*)_buff + offs, rptr, rem);
rd_cnt += rem;
}
- else if (offs < _enq_hdr._xidsize + _enq_hdr._dsize && !_enq_hdr.is_external())
+ else if (offs < _enq_hdr._xidsize + _enq_hdr._dsize && !_enq_hdr.is_external()) // 2
{
// some data still outstanding, copy remainder of data
const std::size_t data_offs = offs - _enq_hdr._xidsize;
14 years, 7 months
rhmessaging commits: r4012 - mgmt/newdata/wooly/python/wooly.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2010-06-07 10:17:33 -0400 (Mon, 07 Jun 2010)
New Revision: 4012
Modified:
mgmt/newdata/wooly/python/wooly/forms.py
mgmt/newdata/wooly/python/wooly/forms.strings
Log:
Style tweak for error messages; don't forget to call super
Modified: mgmt/newdata/wooly/python/wooly/forms.py
===================================================================
--- mgmt/newdata/wooly/python/wooly/forms.py 2010-06-07 13:31:09 UTC (rev 4011)
+++ mgmt/newdata/wooly/python/wooly/forms.py 2010-06-07 14:17:33 UTC (rev 4012)
@@ -588,6 +588,8 @@
self.cancel_button.set(session, True)
def do_process(self, session):
+ super(SubmitForm, self).do_process(session)
+
if self.cancel_button.get(session):
self.cancel_button.set(session, False)
Modified: mgmt/newdata/wooly/python/wooly/forms.strings
===================================================================
--- mgmt/newdata/wooly/python/wooly/forms.strings 2010-06-07 13:31:09 UTC (rev 4011)
+++ mgmt/newdata/wooly/python/wooly/forms.strings 2010-06-07 14:17:33 UTC (rev 4012)
@@ -23,6 +23,7 @@
list-style: disc;
margin: 0 0 0 36px;
padding: 0.66em 2em;
+ font-size: 0.9em;
}
[FormErrorSet.html]
14 years, 7 months