rhmessaging commits: r1818 - mgmt/cumin/python/wooly.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-04-01 11:44:42 -0400 (Tue, 01 Apr 2008)
New Revision: 1818
Modified:
mgmt/cumin/python/wooly/__init__.py
Log:
Catch an error case in string resolution.
Factor out the more basic template functionality into
BoundObjectTemplate. This will be used for ItemSet renderer objects.
Modified: mgmt/cumin/python/wooly/__init__.py
===================================================================
--- mgmt/cumin/python/wooly/__init__.py 2008-04-01 15:16:41 UTC (rev 1817)
+++ mgmt/cumin/python/wooly/__init__.py 2008-04-01 15:44:42 UTC (rev 1818)
@@ -168,6 +168,9 @@
def get_string(self, key):
for cls in self.__class__.__mro__:
+ if cls is object:
+ return
+
str = None
strs = cls.get_module_strings()
@@ -636,21 +639,15 @@
class Writer(StringIOWriter):
pass
-class Template(object):
- def __init__(self, widget, key):
- self.widget = widget
- self.key = key
- self.fragments = None
+class ObjectBoundTemplate(object):
+ def __init__(self, obj, text):
+ self.__object = obj
+ self.__text = text
+ self.__fragments = None
def compile(self):
- text = self.widget.get_string(self.key)
+ return self.resolve(self.parse(self.__text))
- if not text:
- raise Exception("Template '%s.%s' not found" \
- % (self.widget.__class__.__name__, self.key))
-
- return self.resolve(self.parse(text))
-
def parse(self, text):
strings = list()
@@ -691,15 +688,13 @@
for string in strings:
if string.startswith("{") and string.endswith("}"):
- # Might be a placeholder; look for a matching render
- # method
- key = string[1:-1]
- method = self.find_method("render_" + key)
+ name = string[1:-1]
+ method = self.find_method("render_" + name)
if method:
fragments.append(method)
else:
- child = self.widget.children_by_name.get(key)
+ child = self.find_child(name)
if child:
fragments.append(child)
@@ -711,36 +706,54 @@
return fragments
def find_method(self, name):
- for cls in self.widget.__class__.__mro__:
- method = getattr(cls, name, None)
+ for cls in self.__object.__class__.__mro__:
+ meth = getattr(cls, name, None)
- if method and callable(method):
- return method
+ if meth and callable(meth):
+ return meth
+ def find_child(self, name):
+ return None
+
def render(self, writer, session, *args):
- if not self.fragments:
- self.fragments = self.compile()
+ if not self.__fragments:
+ self.__fragments = self.compile()
- for elem in self.fragments:
- if type(elem) is str:
- writer.write(elem)
- elif callable(elem):
+ for frag in self.__fragments:
+ if type(frag) is str:
+ writer.write(frag)
+ elif callable(frag):
#print "tc", elem, args
- result = elem(self.widget, session, *args)
+ result = frag(self.__object, session, *args)
if result is not None:
writer.write(str(result))
else:
- result = elem.render(session)
+ result = frag.render(session)
if result is not None:
writer.write(str(result))
def __repr__(self):
- name = self.widget.__class__.__name__ + "." + self.key
+ name = self.__object.__class__.__name__ + "." + self.key
return "%s('%s')" % (self.__class__.__name__, name)
+class Template(ObjectBoundTemplate):
+ def __init__(self, widget, key):
+ text = widget.get_string(key)
+
+ if not text:
+ raise Exception("Template '%s.%s' not found" \
+ % (widget.__class__.__name__, key))
+
+ super(Template, self).__init__(widget, text)
+
+ self.widget = widget
+
+ def find_child(self, name):
+ return self.widget.children_by_name.get(name)
+
class WidgetCall(object):
def __init__(self, stack, widget, session, object):
self.stack = stack
16 years, 11 months
rhmessaging commits: r1817 - store/trunk/cpp/lib.
by rhmessaging-commits@lists.jboss.org
Author: gordonsim
Date: 2008-04-01 11:16:41 -0400 (Tue, 01 Apr 2008)
New Revision: 1817
Modified:
store/trunk/cpp/lib/BdbMessageStore.cpp
Log:
Batch recovery of large number of messages into fix sized transactions to avoid problems recovering large message dbs.
Modified: store/trunk/cpp/lib/BdbMessageStore.cpp
===================================================================
--- store/trunk/cpp/lib/BdbMessageStore.cpp 2008-04-01 05:45:34 UTC (rev 1816)
+++ store/trunk/cpp/lib/BdbMessageStore.cpp 2008-04-01 15:16:41 UTC (rev 1817)
@@ -619,9 +619,14 @@
// bdb version
-void BdbMessageStore::recoverMessages(TxnCtxt& txn, RecoveryManager& recovery, queue_index& index,
+void BdbMessageStore::recoverMessages(TxnCtxt&, RecoveryManager& recovery, queue_index& index,
txn_list& locked, message_index& prepared)
{
+ //have to create a new txn here, and commit in batches to avoid
+ //problems with large message databases
+ TxnCtxt txn;
+ txn.begin(env);
+
Cursor messages;
messages.open(messageDb, txn.get());
@@ -631,17 +636,27 @@
BufferValue value(preamble_length, 0);
value.buffer.record();
+ uint count(0);
while (messages.next(key, value)) {
+ if (++count % 1000 == 0) {
+ QPID_LOG(debug, "Recovering " << count << "th message...");
+ //reset cursor && txn:
+ messages.close();
+ txn.commit();
+ txn.begin(env);
+ messages.open(messageDb, txn.get());
+ messages->get(&key, &value, DB_SET);
+ }
//read header only to begin with
u_int32_t headerSize = value.buffer.getLong();
value.buffer.restore();
BufferValue header(headerSize, preamble_length);
messages.current(key, header);
-
+
RecoverableMessage::shared_ptr msg = recovery.recoverMessage(header.buffer);
msg->setPersistenceId(key.id);
-
+
u_int32_t contentOffset = headerSize + preamble_length;
u_int64_t contentSize = getRecordSize(txn.get(), messageDb, key) - contentOffset;
if (msg->loadContent(contentSize)) {
@@ -650,7 +665,7 @@
messages.current(key, content);
msg->decodeContent(content.buffer);
}
-
+
//find all the queues into which this message has been enqueued
if (enqueueMessage(txn, key, msg, index, locked, prepared) == 0) {
//message not referenced anywhere - can delete
@@ -688,6 +703,7 @@
count++;
}
}
+ mappings.close();
return count;
}
@@ -751,14 +767,6 @@
while (c.next(key, value)) {
std::string xid(reinterpret_cast<char*>(key.get_data()), key.get_size());
LockedMappings::add(mappings, xid, value.queueId(), value.messageId());
- /*
- txn_lock_map::iterator i = mappings.find(xid);
- if (i == mappings.end()) {
- LockedMappings::shared_ptr ptr(new LockedMappings());
- i = mappings.insert(std::make_pair(xid, ptr)).first;
- }
- i->second->add(value.queueId(), value.messageId());
- */
}
}
16 years, 11 months
rhmessaging commits: r1816 - mgmt/cumin/python/wooly.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-04-01 01:45:34 -0400 (Tue, 01 Apr 2008)
New Revision: 1816
Modified:
mgmt/cumin/python/wooly/tables.py
Log:
Remove unused templates
Modified: mgmt/cumin/python/wooly/tables.py
===================================================================
--- mgmt/cumin/python/wooly/tables.py 2008-03-31 19:42:02 UTC (rev 1815)
+++ mgmt/cumin/python/wooly/tables.py 2008-04-01 05:45:34 UTC (rev 1816)
@@ -8,9 +8,6 @@
def __init__(self, app, name):
super(ItemTable, self).__init__(app, name)
- self.header_html = Template(self, "header_html")
- self.cell_tmpl = Template(self, "cell_html")
-
self.columns = list()
self.headers_by_column = dict()
16 years, 11 months