* Delay beginning of transaction a bit so we are able to

avoid starting a transaction for internal invocations of 
  functions which do not exist. Fixes bug 436.
This commit is contained in:
hns 2006-01-11 10:45:39 +00:00
parent e7bca045d1
commit be96b27a88

View file

@ -163,9 +163,6 @@ public final class RequestEvaluator implements Runnable {
txname.append(":").append(req.getMethod().toLowerCase()).append(":");
txname.append((error == null) ? req.getPath() : "error");
// begin transaction
localrtx.begin(txname.toString());
String action = null;
root = app.getDataRoot();
@ -179,6 +176,9 @@ public final class RequestEvaluator implements Runnable {
switch (reqtype) {
case HTTP:
// begin transaction
localrtx.begin(txname.toString());
if (session.message != null) {
// bring over the message from a redirect
res.message = session.message;
@ -382,6 +382,9 @@ public final class RequestEvaluator implements Runnable {
case XMLRPC:
case EXTERNAL:
// begin transaction
localrtx.begin(txname.toString());
try {
currentElement = root;
@ -445,7 +448,6 @@ public final class RequestEvaluator implements Runnable {
// see if a valid node was returned
if (thisObject == null) {
reqtype = NONE;
abortTransaction();
done = true;
break;
}
@ -463,10 +465,11 @@ public final class RequestEvaluator implements Runnable {
if (!functionexists) {
// function doesn't exist, nothing to do here.
reqtype = NONE;
abortTransaction();
} else {
try {
// begin transaction
localrtx.begin(txname.toString());
try {
// reset skin recursion detection counter
skinDepth = 0;