You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ba...@apache.org on 2020/04/03 16:05:40 UTC
[nifi-minifi-cpp] branch master updated: MINIFICPP-1187 - Add
functionality to ConsumeWindowsEventLog to read old events
This is an automated email from the ASF dual-hosted git repository.
bakaid pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
The following commit(s) were added to refs/heads/master by this push:
new 0e9b77c MINIFICPP-1187 - Add functionality to ConsumeWindowsEventLog to read old events
0e9b77c is described below
commit 0e9b77cbef2cf3d3fcf1d9a3afb5f196d0068c09
Author: amarmer <am...@gmail.com>
AuthorDate: Wed Apr 1 02:02:39 2020 -0700
MINIFICPP-1187 - Add functionality to ConsumeWindowsEventLog to read old events
Signed-off-by: Daniel Bakai <ba...@apache.org>
This closes #748
---
extensions/windows-event-log/Bookmark.cpp | 4 ++--
extensions/windows-event-log/Bookmark.h | 2 +-
.../windows-event-log/ConsumeWindowsEventLog.cpp | 19 +++++++++++++++----
extensions/windows-event-log/ConsumeWindowsEventLog.h | 1 +
4 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/extensions/windows-event-log/Bookmark.cpp b/extensions/windows-event-log/Bookmark.cpp
index e9ccd83..d727de2 100644
--- a/extensions/windows-event-log/Bookmark.cpp
+++ b/extensions/windows-event-log/Bookmark.cpp
@@ -11,7 +11,7 @@ namespace nifi {
namespace minifi {
namespace processors {
-Bookmark::Bookmark(const std::wstring& channel, const std::wstring& query, const std::string& bookmarkRootDir, const std::string& uuid, std::shared_ptr<logging::Logger> logger)
+Bookmark::Bookmark(const std::wstring& channel, const std::wstring& query, const std::string& bookmarkRootDir, const std::string& uuid, bool processOldEvents, std::shared_ptr<logging::Logger> logger)
:logger_(logger) {
if (!createUUIDDir(bookmarkRootDir, uuid, filePath_))
return;
@@ -48,7 +48,7 @@ Bookmark::Bookmark(const std::wstring& channel, const std::wstring& query, const
}
const utils::ScopeGuard guard_hEventResults([hEventResults]() { EvtClose(hEventResults); });
- if (!EvtSeek(hEventResults, 0, 0, 0, EvtSeekRelativeToLast)) {
+ if (!EvtSeek(hEventResults, 0, 0, 0, processOldEvents? EvtSeekRelativeToFirst : EvtSeekRelativeToLast)) {
LOG_LAST_ERROR(EvtSeek);
return;
}
diff --git a/extensions/windows-event-log/Bookmark.h b/extensions/windows-event-log/Bookmark.h
index f89360b..02e47bb 100644
--- a/extensions/windows-event-log/Bookmark.h
+++ b/extensions/windows-event-log/Bookmark.h
@@ -19,7 +19,7 @@ namespace processors {
class Bookmark
{
public:
- Bookmark(const std::wstring& channel, const std::wstring& query, const std::string& bookmarkRootDir, const std::string& uuid, std::shared_ptr<logging::Logger> logger);
+ Bookmark(const std::wstring& channel, const std::wstring& query, const std::string& bookmarkRootDir, const std::string& uuid, bool processOldEvents, std::shared_ptr<logging::Logger> logger);
~Bookmark();
operator bool() const;
EVT_HANDLE getBookmarkHandleFromXML();
diff --git a/extensions/windows-event-log/ConsumeWindowsEventLog.cpp b/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
index cbcfbab..c7f41c7 100644
--- a/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
+++ b/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
@@ -149,6 +149,13 @@ core::Property ConsumeWindowsEventLog::BookmarkRootDirectory(
withDescription("Directory which contains processor state data.")->
build());
+core::Property ConsumeWindowsEventLog::ProcessOldEvents(
+ core::PropertyBuilder::createProperty("Process Old Events")->
+ isRequired(true)->
+ withDefaultValue<bool>(false)->
+ withDescription("This property defines if old events (which are created before first time server is started) should be processed.")->
+ build());
+
core::Relationship ConsumeWindowsEventLog::Success("success", "Relationship for successfully consumed events.");
ConsumeWindowsEventLog::ConsumeWindowsEventLog(const std::string& name, utils::Identifier uuid)
@@ -173,9 +180,10 @@ ConsumeWindowsEventLog::~ConsumeWindowsEventLog() {
void ConsumeWindowsEventLog::initialize() {
//! Set the supported properties
- setSupportedProperties(
- {Channel, Query, MaxBufferSize, InactiveDurationToReconnect, IdentifierMatcher, IdentifierFunction, ResolveAsAttributes, EventHeaderDelimiter, EventHeader, OutputFormat, BatchCommitSize, BookmarkRootDirectory}
- );
+ setSupportedProperties({
+ Channel, Query, MaxBufferSize, InactiveDurationToReconnect, IdentifierMatcher, IdentifierFunction, ResolveAsAttributes,
+ EventHeaderDelimiter, EventHeader, OutputFormat, BatchCommitSize, BookmarkRootDirectory, ProcessOldEvents
+ });
//! Set the supported relationships
setSupportedRelationships({Success});
@@ -245,6 +253,9 @@ void ConsumeWindowsEventLog::onSchedule(const std::shared_ptr<core::ProcessConte
context->getProperty(Query.getName(), query);
wstrQuery_ = std::wstring(query.begin(), query.end());
+ bool processOldEvents{};
+ context->getProperty(ProcessOldEvents.getName(), processOldEvents);
+
if (!pBookmark_) {
std::string bookmarkDir;
context->getProperty(BookmarkRootDirectory.getName(), bookmarkDir);
@@ -252,7 +263,7 @@ void ConsumeWindowsEventLog::onSchedule(const std::shared_ptr<core::ProcessConte
logger_->log_error("State Directory is empty");
return;
}
- pBookmark_ = std::make_unique<Bookmark>(wstrChannel_, wstrQuery_, bookmarkDir, getUUIDStr(), logger_);
+ pBookmark_ = std::make_unique<Bookmark>(wstrChannel_, wstrQuery_, bookmarkDir, getUUIDStr(), processOldEvents, logger_);
if (!*pBookmark_) {
pBookmark_.reset();
return;
diff --git a/extensions/windows-event-log/ConsumeWindowsEventLog.h b/extensions/windows-event-log/ConsumeWindowsEventLog.h
index 4085b76..02ce868 100644
--- a/extensions/windows-event-log/ConsumeWindowsEventLog.h
+++ b/extensions/windows-event-log/ConsumeWindowsEventLog.h
@@ -80,6 +80,7 @@ public:
static core::Property OutputFormat;
static core::Property BatchCommitSize;
static core::Property BookmarkRootDirectory;
+ static core::Property ProcessOldEvents;
//! Supported Relationships
static core::Relationship Success;