MINIFICPP-1081 - Lower memory usage for long existing ProcessSessions

Signed-off-by: Arpad Boda <arpad.zoltan.boda@gmail.com>

This closes #684
diff --git a/extensions/rocksdb-repos/FlowFileRepository.cpp b/extensions/rocksdb-repos/FlowFileRepository.cpp
index 56df86c..a49a028 100644
--- a/extensions/rocksdb-repos/FlowFileRepository.cpp
+++ b/extensions/rocksdb-repos/FlowFileRepository.cpp
@@ -24,6 +24,7 @@
 #include <vector>
 #include <list>
 #include "FlowFileRecord.h"
+#include "utils/ScopeGuard.h"
 
 namespace org {
 namespace apache {
@@ -109,7 +110,10 @@
 }
 
 void FlowFileRepository::prune_stored_flowfiles() {
-  rocksdb::DB* stored_database_;
+  rocksdb::DB* stored_database_ = nullptr;
+  utils::ScopeGuard db_guard([&stored_database_]() {
+    delete stored_database_;
+  });
   bool corrupt_checkpoint = false;
   if (nullptr != checkpoint_) {
     rocksdb::Options options;
@@ -119,6 +123,7 @@
     rocksdb::Status status = rocksdb::DB::OpenForReadOnly(options, FLOWFILE_CHECKPOINT_DIRECTORY, &stored_database_);
     if (!status.ok()) {
       stored_database_ = db_;
+      db_guard.disable();
     }
   } else {
     logger_->log_trace("Could not open checkpoint as object doesn't exist. Likely not needed or file system error.");
diff --git a/libminifi/src/core/ProcessSession.cpp b/libminifi/src/core/ProcessSession.cpp
index 6cf388c..535ca78 100644
--- a/libminifi/src/core/ProcessSession.cpp
+++ b/libminifi/src/core/ProcessSession.cpp
@@ -868,6 +868,8 @@
     _clonedFlowFiles.clear();
     _deletedFlowFiles.clear();
     _originalFlowFiles.clear();
+
+    _transferRelationship.clear();
     // persistent the provenance report
     this->provenance_report_->commit();
     logger_->log_trace("ProcessSession committed for %s", process_context_->getProcessorNode()->getName());