From 0093ae88342aedcc30aaa294108f2bc6cee165e9 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Wed, 16 Jun 2021 12:49:58 +0200 Subject: [PATCH] things to get more infos for debugging --- .../src/Controller/AppController.php | 2 +- .../src/cpp/model/gradido/Transaction.cpp | 9 +++--- .../src/cpp/model/table/ModelBase.cpp | 28 ++++++++++++++----- .../src/cpp/model/table/PendingTask.cpp | 4 +++ 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/community_server/src/Controller/AppController.php b/community_server/src/Controller/AppController.php index eb11299ce..2c6344511 100644 --- a/community_server/src/Controller/AppController.php +++ b/community_server/src/Controller/AppController.php @@ -289,7 +289,7 @@ class AppController extends Controller } } else { if(!$redirect) { - return ['state' => 'not found', 'msg' => 'invalid session']; + return ['state' => 'not found', 'msg' => 'invalid session', 'details' => $json]; } if ($json['state'] === 'not found') { $this->Flash->error(__('invalid session')); diff --git a/login_server/src/cpp/model/gradido/Transaction.cpp b/login_server/src/cpp/model/gradido/Transaction.cpp index 67e6137a2..e3c4ada0f 100644 --- a/login_server/src/cpp/model/gradido/Transaction.cpp +++ b/login_server/src/cpp/model/gradido/Transaction.cpp @@ -359,7 +359,8 @@ namespace model { //UniLib::controller::TaskPtr transaction_send_task(new SendTransactionTask(Poco::AutoPtr(this, true))); //transaction_send_task->scheduleTask(transaction_send_task); auto pt = PendingTasksManager::getInstance(); - pt->removeTask(this); + + pt->removeTask(Poco::AutoPtr(this, true)); return 1 == runSendTransaction(); //return true; } @@ -562,13 +563,13 @@ namespace model { auto result = json_request.request("putTransaction", param); json_request.getWarnings(&json_request); - if (JSON_REQUEST_RETURN_OK == result) - { + if (JSON_REQUEST_RETURN_OK == result) + { if (!json_request.errorCount()) { finishSuccess(); } else { - getErrors(&json_request); + getErrors(&json_request); return -1; } return 1; diff --git a/login_server/src/cpp/model/table/ModelBase.cpp b/login_server/src/cpp/model/table/ModelBase.cpp index 8ddab7ade..b8f68c369 100644 --- a/login_server/src/cpp/model/table/ModelBase.cpp +++ b/login_server/src/cpp/model/table/ModelBase.cpp @@ -56,9 +56,9 @@ namespace model { try { auto res = select.execute(); if (1 == res) { return true; } - + } - catch (Poco::Exception& ex) { + catch (Poco::Exception& ex) { addError(new ParamError(getTableName(), "mysql error by select id", ex.displayText().data())); addError(new ParamError(getTableName(), "data set: ", toString().data())); } @@ -124,21 +124,35 @@ namespace model { void ModelBase::duplicate() { - Poco::ScopedLock _lock(mWorkMutex); + //Poco::ScopedLock _lock(mWorkMutex); + std::string stack_details = "[ModelBase::duplicate] table: "; + stack_details += getTableName(); + lock(stack_details.data()); mReferenceCount++; + printf("[ModelBase::duplicate] new value: %d, table name: %s\n", mReferenceCount, getTableName()); + unlock(); //printf("[ModelBase::duplicate] new value: %d\n", mReferenceCount); } void ModelBase::release() { - Poco::ScopedLock _lock(mWorkMutex); + if(mReferenceCount <= 0) { + throw Poco::Exception("ModelBase already released", getTableName()); + } + std::string stack_details = "[ModelBase::release] table: "; + stack_details += getTableName(); + stack_details += ", reference count: "; + stack_details += std::to_string(mReferenceCount); + lock(stack_details.data()); + mReferenceCount--; - //printf("[ModelBase::release] new value: %d\n", mReferenceCount); + printf("[ModelBase::release] new value: %d, table name: %s\n", mReferenceCount, getTableName()); if (0 == mReferenceCount) { - + unlock(); delete this; return; } + unlock(); } @@ -180,7 +194,7 @@ namespace model { Poco::Mutex& timeMutex = ServerConfig::g_TimeMutex; int year, month, day, hour, minute, second; - // ex: 2009-10-29 + // ex: 2009-10-29 if (sscanf(decodedDateString.data(), "%d-%d-%dT%d:%dZ", &year, &month, &day, &hour, &minute) != EOF) { time_t rawTime; time(&rawTime); diff --git a/login_server/src/cpp/model/table/PendingTask.cpp b/login_server/src/cpp/model/table/PendingTask.cpp index 3b1856aa1..541e9c262 100644 --- a/login_server/src/cpp/model/table/PendingTask.cpp +++ b/login_server/src/cpp/model/table/PendingTask.cpp @@ -70,7 +70,11 @@ namespace model { SHARED_LOCK; temp = mResultJsonString; + if(!mResultJsonString.size()) { + return new Poco::JSON::Object; + } } + Poco::JSON::Parser parser; Poco::Dynamic::Var result; try