automatically turn off cache mode for old agents
authorVictor Kirhenshtein <victor@netxms.org>
Tue, 7 Jul 2015 15:18:28 +0000 (18:18 +0300)
committerVictor Kirhenshtein <victor@netxms.org>
Tue, 7 Jul 2015 15:34:01 +0000 (18:34 +0300)
include/uuid.h
src/server/core/node.cpp
src/server/include/nms_objects.h

index 0f267ec..73f8168 100644 (file)
@@ -48,6 +48,7 @@ public:
    uuid(const uuid_t v) { memcpy(m_value, v, UUID_LENGTH); }
 
    int compare(const uuid& u) const { return uuid_compare(m_value, u.m_value); }
+   bool equals(const uuid& u) const { return uuid_compare(m_value, u.m_value) == 0; }
    const uuid_t& getValue() const { return m_value; }
    bool isNull() const { return uuid_is_null(m_value); }
    TCHAR *toString(TCHAR *buffer) const { return uuid_to_string(m_value, buffer); }
index b8cd0bf..02e1649 100644 (file)
@@ -6954,9 +6954,18 @@ void Node::syncDataCollectionWithAgent(AgentConnectionEx *conn)
    }
 
    if (rcc == ERR_SUCCESS)
+   {
       DbgPrintf(4, _T("SyncDataCollection: node %s [%d] synchronized"), m_name, (int)m_id);
+      m_dwDynamicFlags &= ~NDF_CACHE_MODE_NOT_SUPPORTED;
+   }
    else
+   {
       DbgPrintf(4, _T("SyncDataCollection: node %s [%d] not synchronized (%s)"), m_name, (int)m_id, AgentErrorCodeToText(rcc));
+      if (rcc == ERR_NOT_IMPLEMENTED)
+      {
+         m_dwDynamicFlags |= NDF_CACHE_MODE_NOT_SUPPORTED;
+      }
+   }
 }
 
 /**
index aabcc2f..30e54a5 100644 (file)
@@ -102,8 +102,9 @@ bool NXCORE_EXPORTABLE ExecuteQueryOnObject(DB_HANDLE hdb, UINT32 objectId, cons
 #define NDF_DELETE_IN_PROGRESS         0x004000
 #define NDF_NETWORK_PATH_PROBLEM       0x008000
 #define NDF_QUEUED_FOR_INSTANCE_POLL   0x010000
+#define NDF_CACHE_MODE_NOT_SUPPORTED   0x020000
 
-#define NDF_PERSISTENT (NDF_UNREACHABLE | NDF_NETWORK_PATH_PROBLEM | NDF_AGENT_UNREACHABLE | NDF_SNMP_UNREACHABLE | NDF_CPSNMP_UNREACHABLE)
+#define NDF_PERSISTENT (NDF_UNREACHABLE | NDF_NETWORK_PATH_PROBLEM | NDF_AGENT_UNREACHABLE | NDF_SNMP_UNREACHABLE | NDF_CPSNMP_UNREACHABLE | NDF_CACHE_MODE_NOT_SUPPORTED)
 
 #define __NDF_FLAGS_DEFINED
 
@@ -1292,7 +1293,7 @@ public:
        const TCHAR *getDriverName() { return (m_driver != NULL) ? m_driver->getName() : _T("GENERIC"); }
        UINT16 getAgentPort() { return m_agentPort; }
        INT16 getAgentAuthMethod() { return m_agentAuthMethod; }
-   INT16 getAgentCacheMode() { return (m_agentCacheMode == AGENT_CACHE_DEFAULT) ? g_defaultAgentCacheMode : m_agentCacheMode; }
+   INT16 getAgentCacheMode() { return (m_dwDynamicFlags & NDF_CACHE_MODE_NOT_SUPPORTED) ? AGENT_CACHE_OFF : ((m_agentCacheMode == AGENT_CACHE_DEFAULT) ? g_defaultAgentCacheMode : m_agentCacheMode); }
        const TCHAR *getSharedSecret() { return m_szSharedSecret; }
        AgentConnection *getFileUpdateConn() { return m_fileUpdateConn; }