You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by jb...@apache.org on 2022/04/29 19:56:27 UTC
[geode-native] branch develop updated: GEODE-10259: Update protocol ordinal to 1.14.0 (125) (#962)
This is an automated email from the ASF dual-hosted git repository.
jbarrett pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode-native.git
The following commit(s) were added to refs/heads/develop by this push:
new 2c931caf0 GEODE-10259: Update protocol ordinal to 1.14.0 (125) (#962)
2c931caf0 is described below
commit 2c931caf082ddd0854027df1e980d3c3f12ed6db
Author: Jacob Barrett <jb...@pivotal.io>
AuthorDate: Fri Apr 29 12:56:22 2022 -0700
GEODE-10259: Update protocol ordinal to 1.14.0 (125) (#962)
* Fixes ClientProxyMembershipID for 1.1.0+
* Fixes TcrConnection for 1.5.0+
* Fixes TXCommitMessage for 1.7.0+
* Updated ClientHealthStats for 1.9.0+
* Updated QueueConnectionRequestTest for 1.14.0+
---
.../geode/internal/DataSerializableFixedId.hpp | 2 +-
cppcache/integration/test/PdxJsonTypeTest.cpp | 3 +-
cppcache/src/CacheImpl.cpp | 1 -
cppcache/src/ClientHealthStats.cpp | 70 ++++++------
cppcache/src/ClientHealthStats.hpp | 51 +++++----
cppcache/src/ClientProxyMembershipID.cpp | 118 ++++++++++-----------
cppcache/src/ClientProxyMembershipID.hpp | 63 +++++------
cppcache/src/ClientProxyMembershipIDFactory.cpp | 1 +
cppcache/src/ClientProxyMembershipIDFactory.hpp | 6 +-
cppcache/src/EventId.cpp | 1 -
cppcache/src/QueueConnectionRequest.cpp | 9 +-
cppcache/src/QueueConnectionRequest.hpp | 6 +-
cppcache/src/TXCommitMessage.cpp | 28 ++---
cppcache/src/TXCommitMessage.hpp | 24 +++--
cppcache/src/TcrConnection.cpp | 4 +-
cppcache/src/TcrMessage.cpp | 4 +-
cppcache/src/ThinClientLocatorHelper.hpp | 2 +-
cppcache/src/ThinClientPoolDM.cpp | 3 +-
cppcache/src/Version.hpp | 2 +-
cppcache/src/VersionStamp.hpp | 1 -
cppcache/src/statistics/HostStatSampler.cpp | 3 +-
cppcache/src/statistics/PoolStatsSampler.cpp | 3 +-
cppcache/test/ClientProxyMembershipIDTest.cpp | 2 +-
cppcache/test/QueueConnectionRequestTest.cpp | 3 +-
tests/javaobject/QueryFunction.java | 18 +---
25 files changed, 204 insertions(+), 224 deletions(-)
diff --git a/cppcache/include/geode/internal/DataSerializableFixedId.hpp b/cppcache/include/geode/internal/DataSerializableFixedId.hpp
index 9482e640c..60fb5a1f5 100644
--- a/cppcache/include/geode/internal/DataSerializableFixedId.hpp
+++ b/cppcache/include/geode/internal/DataSerializableFixedId.hpp
@@ -48,7 +48,7 @@ template <DSFid _DSFID>
class APACHE_GEODE_EXPORT DataSerializableFixedId_t
: public DataSerializableFixedId {
public:
- ~DataSerializableFixedId_t() override = default;
+ ~DataSerializableFixedId_t() noexcept override = default;
DSFid getDSFID() const final { return _DSFID; }
};
diff --git a/cppcache/integration/test/PdxJsonTypeTest.cpp b/cppcache/integration/test/PdxJsonTypeTest.cpp
index d7e2601f8..9c7917849 100644
--- a/cppcache/integration/test/PdxJsonTypeTest.cpp
+++ b/cppcache/integration/test/PdxJsonTypeTest.cpp
@@ -101,8 +101,7 @@ TEST(PdxJsonTypeTest, testGfshQueryJsonInstances) {
cache.createPdxInstanceFactory(gemfireJsonClassName)
.writeString("entryName", "java-domain-class-entry")
.create());
- ASSERT_THROW(execution.withArgs(query).execute("QueryFunction"),
- CacheServerException);
+ ASSERT_NO_THROW(execution.withArgs(query).execute("QueryFunction"));
}
TEST(PdxJsonTypeTest, testCreateTwoJsonInstances) {
diff --git a/cppcache/src/CacheImpl.cpp b/cppcache/src/CacheImpl.cpp
index b9e579343..3e8d3546b 100644
--- a/cppcache/src/CacheImpl.cpp
+++ b/cppcache/src/CacheImpl.cpp
@@ -27,7 +27,6 @@
#include "AdminRegion.hpp"
#include "AutoDelete.hpp"
#include "CacheXmlParser.hpp"
-#include "ClientProxyMembershipID.hpp"
#include "EvictionController.hpp"
#include "ExpiryTaskManager.hpp"
#include "InternalCacheTransactionManager2PCImpl.hpp"
diff --git a/cppcache/src/ClientHealthStats.cpp b/cppcache/src/ClientHealthStats.cpp
index e2c026ceb..4ff541208 100644
--- a/cppcache/src/ClientHealthStats.cpp
+++ b/cppcache/src/ClientHealthStats.cpp
@@ -14,34 +14,37 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
#include "ClientHealthStats.hpp"
-#include "CacheImpl.hpp"
+#include <geode/CacheableDate.hpp>
+#include <geode/DataInput.hpp>
+#include <geode/DataOutput.hpp>
namespace apache {
namespace geode {
namespace client {
void ClientHealthStats::toData(DataOutput& output) const {
- output.writeInt(static_cast<int32_t>(m_numGets));
- output.writeInt(static_cast<int32_t>(m_numPuts));
- output.writeInt(static_cast<int32_t>(m_numMisses));
- output.writeInt(static_cast<int32_t>(m_numCacheListenerCalls));
- output.writeInt(static_cast<int32_t>(m_numThread));
- output.writeInt(static_cast<int32_t>(m_cpus));
- output.writeInt(static_cast<int64_t>(m_processCpuTime));
- m_updateTime->toData(output);
+ output.writeInt(static_cast<int64_t>(gets_));
+ output.writeInt(static_cast<int64_t>(puts_));
+ output.writeInt(static_cast<int64_t>(misses_));
+ output.writeInt(static_cast<int32_t>(cacheListenerCallsCompleted_));
+ output.writeInt(static_cast<int32_t>(threads_));
+ output.writeInt(static_cast<int32_t>(cpus_));
+ output.writeInt(static_cast<int64_t>(processCpuTime_));
+ updateTime_->toData(output);
}
void ClientHealthStats::fromData(DataInput& input) {
- m_numGets = input.readInt32();
- m_numPuts = input.readInt32();
- m_numMisses = input.readInt32();
- m_numCacheListenerCalls = input.readInt32();
- m_numThread = input.readInt32();
- m_processCpuTime = input.readInt64();
- m_cpus = input.readInt32();
- m_updateTime->fromData(input);
+ gets_ = input.readInt64();
+ puts_ = input.readInt64();
+ misses_ = input.readInt64();
+ cacheListenerCallsCompleted_ = input.readInt32();
+ threads_ = input.readInt32();
+ processCpuTime_ = input.readInt64();
+ cpus_ = input.readInt32();
+ updateTime_->fromData(input);
}
std::shared_ptr<Serializable> ClientHealthStats::createDeserializable() {
@@ -49,27 +52,20 @@ std::shared_ptr<Serializable> ClientHealthStats::createDeserializable() {
}
ClientHealthStats::ClientHealthStats()
- : m_numGets(0),
- m_numPuts(0),
- m_numMisses(0),
- m_numCacheListenerCalls(0),
- m_numThread(0),
- m_processCpuTime(0),
- m_cpus(0) {
- m_updateTime = CacheableDate::create();
-}
+ : ClientHealthStats(0, 0, 0, 0, 0, 0, 0) {}
-ClientHealthStats::ClientHealthStats(int gets, int puts, int misses,
- int listCalls, int numThreads,
- int64_t cpuTime, int cpus)
- : m_numGets(gets),
- m_numPuts(puts),
- m_numMisses(misses),
- m_numCacheListenerCalls(listCalls),
- m_numThread(numThreads),
- m_processCpuTime(cpuTime),
- m_cpus(cpus) {
- m_updateTime = CacheableDate::create();
+ClientHealthStats::ClientHealthStats(int64_t gets, int64_t puts, int64_t misses,
+ int32_t cacheListenerCallsCompleted,
+ int32_t threads, int64_t processCpuTime,
+ int32_t cpus)
+ : gets_(gets),
+ puts_(puts),
+ misses_(misses),
+ cacheListenerCallsCompleted_(cacheListenerCallsCompleted),
+ threads_(threads),
+ processCpuTime_(processCpuTime),
+ cpus_(cpus) {
+ updateTime_ = CacheableDate::create();
}
} // namespace client
diff --git a/cppcache/src/ClientHealthStats.hpp b/cppcache/src/ClientHealthStats.hpp
index ddd07c90e..9fd61db01 100644
--- a/cppcache/src/ClientHealthStats.hpp
+++ b/cppcache/src/ClientHealthStats.hpp
@@ -20,16 +20,14 @@
#ifndef GEODE_CLIENTHEALTHSTATS_H_
#define GEODE_CLIENTHEALTHSTATS_H_
-#include <geode/CacheableDate.hpp>
-#include <geode/Serializable.hpp>
#include <geode/internal/DataSerializableFixedId.hpp>
-#include "util/Log.hpp"
-
namespace apache {
namespace geode {
namespace client {
+class CacheableDate;
+
class ClientHealthStats : public internal::DataSerializableFixedId_t<
internal::DSFid::ClientHealthStats> {
public:
@@ -37,40 +35,39 @@ class ClientHealthStats : public internal::DataSerializableFixedId_t<
void fromData(DataInput& input) override;
- /**
- * @brief creation function for dates.
- */
static std::shared_ptr<Serializable> createDeserializable();
- /** @return the size of the object in bytes */
size_t objectSize() const override { return sizeof(ClientHealthStats); }
+
/**
* Factory method for creating an instance of ClientHealthStats
*/
- static std::shared_ptr<ClientHealthStats> create(int gets, int puts,
- int misses, int listCalls,
- int numThreads,
- int64_t cpuTime = 0,
- int cpus = 0) {
- return std::shared_ptr<ClientHealthStats>(new ClientHealthStats(
- gets, puts, misses, listCalls, numThreads, cpuTime, cpus));
+ static std::shared_ptr<ClientHealthStats> create(
+ int64_t gets, int64_t puts, int64_t misses,
+ int32_t cacheListenerCallsCompleted, int32_t threads,
+ int64_t processCpuTime = 0, int32_t cpus = 0) {
+ return std::make_shared<ClientHealthStats>(gets, puts, misses,
+ cacheListenerCallsCompleted,
+ threads, processCpuTime, cpus);
}
- ~ClientHealthStats() override = default;
+
+ ~ClientHealthStats() noexcept override = default;
ClientHealthStats();
+ ClientHealthStats(int64_t gets, int64_t puts, int64_t misses,
+ int32_t cacheListenerCallsCompleted, int32_t threads,
+ int64_t processCpuTime, int32_t cpus);
+
private:
- ClientHealthStats(int gets, int puts, int misses, int listCalls,
- int numThreads, int64_t cpuTime, int cpus);
-
- int m_numGets; // CachePerfStats.gets
- int m_numPuts; // CachePerfStats.puts
- int m_numMisses; // CachePerfStats.misses
- int m_numCacheListenerCalls; // CachePerfStats.cacheListenerCallsCompleted
- int m_numThread; // ProcessStats.threads;
- int64_t m_processCpuTime; //
- int m_cpus;
- std::shared_ptr<CacheableDate> m_updateTime; // Last updateTime
+ int64_t gets_;
+ int64_t puts_;
+ int64_t misses_;
+ int32_t cacheListenerCallsCompleted_;
+ int32_t threads_;
+ int64_t processCpuTime_;
+ int32_t cpus_;
+ std::shared_ptr<CacheableDate> updateTime_;
};
} // namespace client
diff --git a/cppcache/src/ClientProxyMembershipID.cpp b/cppcache/src/ClientProxyMembershipID.cpp
index a088657c5..741565f4a 100644
--- a/cppcache/src/ClientProxyMembershipID.cpp
+++ b/cppcache/src/ClientProxyMembershipID.cpp
@@ -17,11 +17,6 @@
#include "ClientProxyMembershipID.hpp"
-#include <ctime>
-#include <iostream>
-#include <memory>
-#include <string>
-
#include <boost/process/environment.hpp>
#include <geode/CacheableBuiltins.hpp>
@@ -31,19 +26,20 @@
#include "Version.hpp"
#include "util/Log.hpp"
-#define DCPORT 12334
-#define VMKIND 13
-#define ROLEARRLENGTH 0
+namespace {
+constexpr int32_t kVersionMask = 0x8;
+constexpr int8_t kVmKindLoner = 13;
+constexpr int32_t kDcPort = 12334;
+constexpr int8_t kVmKind = kVmKindLoner;
+constexpr int32_t kRoleArrayLength = 0;
+
+static int32_t syncCounter = 2;
+} // namespace
namespace apache {
namespace geode {
namespace client {
-static int synch_counter = 2;
-
-const int ClientProxyMembershipID::VERSION_MASK = 0x8;
-const int8_t ClientProxyMembershipID::TOKEN_ORDINAL = -1;
-
ClientProxyMembershipID::ClientProxyMembershipID()
: hostPort_(0), vmViewId_(0) {}
@@ -59,7 +55,7 @@ ClientProxyMembershipID::ClientProxyMembershipID(
initHostAddressVector(address);
initObjectVars(hostname, hostPort, durableClientId, durableClientTimeOut,
- DCPORT, vmPID, VMKIND, 0, dsName.c_str(), randString.c_str(),
+ kDcPort, vmPID, kVmKind, 0, dsName.c_str(), randString.c_str(),
0);
}
@@ -73,7 +69,7 @@ ClientProxyMembershipID::ClientProxyMembershipID(
initHostAddressVector(hostAddr, hostAddrLen);
initObjectVars("localhost", hostPort, "", std::chrono::seconds::zero(),
- DCPORT, vmPID, VMKIND, 0, dsname, uniqueTag, vmViewId);
+ kDcPort, vmPID, kVmKind, 0, dsname, uniqueTag, vmViewId);
}
void ClientProxyMembershipID::initHostAddressVector(
@@ -113,9 +109,10 @@ void ClientProxyMembershipID::initObjectVars(
vmViewId_ = vmViewId;
m_memID.write(static_cast<int8_t>(DSCode::FixedIDByte));
- m_memID.write(static_cast<int8_t>(DSFid::InternalDistributedMember));
+ m_memID.write(
+ static_cast<int8_t>(internal::DSFid::InternalDistributedMember));
m_memID.writeBytes(hostAddr_.data(), static_cast<int32_t>(hostAddr_.size()));
- m_memID.writeInt(static_cast<int32_t>(synch_counter));
+ m_memID.writeInt(static_cast<int32_t>(syncCounter));
m_memID.writeString(hostname);
m_memID.write(splitBrainFlag);
@@ -123,7 +120,7 @@ void ClientProxyMembershipID::initObjectVars(
m_memID.writeInt(vPID);
m_memID.write(vmkind);
- m_memID.writeArrayLen(ROLEARRLENGTH);
+ m_memID.writeArrayLen(kRoleArrayLength);
m_memID.writeString(dsname);
m_memID.writeString(uniqueTag);
@@ -144,7 +141,7 @@ void ClientProxyMembershipID::initObjectVars(
clientId_.append("(");
clientId_.append(std::to_string(vPID));
clientId_.append(":loner):");
- clientId_.append(std::to_string(synch_counter));
+ clientId_.append(std::to_string(syncCounter));
clientId_.append(":");
clientId_.append(getUniqueTag());
clientId_.append(":");
@@ -172,9 +169,7 @@ const std::string& ClientProxyMembershipID::getDSMemberId() const {
return memIdStr_;
}
-const std::string& ClientProxyMembershipID::getDSMemberIdForThinClientUse() {
- return clientId_;
-}
+const std::string& ClientProxyMembershipID::getClientId() { return clientId_; }
std::string ClientProxyMembershipID::getHashKey() { return hashKey_; }
@@ -185,31 +180,31 @@ void ClientProxyMembershipID::toData(DataOutput&) const {
void ClientProxyMembershipID::fromData(DataInput& input) {
// deserialization for PR FX HA
- auto length = input.readArrayLength();
- auto hostAddress = new uint8_t[length];
- input.readBytesOnly(hostAddress, length);
- auto hostPort = input.readInt32();
- auto hostname =
+ const auto length = input.readArrayLength();
+ auto hostAddress = std::vector<uint8_t>(length);
+ input.readBytesOnly(hostAddress.data(), length);
+ const auto hostPort = input.readInt32();
+ const auto hostname =
std::dynamic_pointer_cast<CacheableString>(input.readObject());
- auto splitbrain = input.read();
- auto dcport = input.readInt32();
- auto vPID = input.readInt32();
- auto vmKind = input.read();
- auto aStringArray = CacheableStringArray::create();
+ const auto splitbrain = input.read();
+ const auto dcport = input.readInt32();
+ const auto vPID = input.readInt32();
+ const auto vmKind = input.read();
+ const auto aStringArray = CacheableStringArray::create();
aStringArray->fromData(input);
- auto dsName = std::dynamic_pointer_cast<CacheableString>(input.readObject());
- auto uniqueTag =
+ const auto dsName =
std::dynamic_pointer_cast<CacheableString>(input.readObject());
- auto durableClientId =
+ const auto uniqueTag =
std::dynamic_pointer_cast<CacheableString>(input.readObject());
- auto durableClientTimeOut = std::chrono::seconds(input.readInt32());
- int32_t vmViewId = 0;
+ const auto durableClientId =
+ std::dynamic_pointer_cast<CacheableString>(input.readObject());
+ const auto durableClientTimeOut = std::chrono::seconds(input.readInt32());
readVersion(splitbrain, input);
- initHostAddressVector(hostAddress, length);
+ initHostAddressVector(hostAddress.data(), length);
- if (vmKind != ClientProxyMembershipID::LONER_DM_TYPE) {
- vmViewId = std::stoi(uniqueTag->value());
+ if (vmKind != kVmKindLoner) {
+ auto vmViewId = std::stoi(uniqueTag->value());
initObjectVars(hostname->value().c_str(), hostPort,
durableClientId->value().c_str(), durableClientTimeOut,
dcport, vPID, vmKind, splitbrain, dsName->value().c_str(),
@@ -221,15 +216,14 @@ void ClientProxyMembershipID::fromData(DataInput& input) {
dcport, vPID, vmKind, splitbrain, dsName->value().c_str(),
uniqueTag->value().c_str(), 0);
}
- delete[] hostAddress;
readAdditionalData(input);
}
-Serializable* ClientProxyMembershipID::readEssentialData(DataInput& input) {
- auto length = input.readArrayLength();
- auto hostAddress = new uint8_t[length];
- input.readBytesOnly(hostAddress, length);
- auto hostPort = input.readInt32();
+void ClientProxyMembershipID::readEssentialData(DataInput& input) {
+ const auto length = input.readArrayLength();
+ auto hostAddress = std::vector<uint8_t>(length);
+ input.readBytesOnly(hostAddress.data(), length);
+ const auto hostPort = input.readInt32();
// read and ignore flag
input.read();
@@ -237,7 +231,7 @@ Serializable* ClientProxyMembershipID::readEssentialData(DataInput& input) {
const auto vmKind = input.read();
int32_t vmViewId = 0;
std::shared_ptr<CacheableString> uniqueTag, vmViewIdstr;
- if (vmKind == ClientProxyMembershipID::LONER_DM_TYPE) {
+ if (vmKind == kVmKindLoner) {
uniqueTag = std::dynamic_pointer_cast<CacheableString>(input.readObject());
} else {
vmViewIdstr =
@@ -247,23 +241,18 @@ Serializable* ClientProxyMembershipID::readEssentialData(DataInput& input) {
auto dsName = std::dynamic_pointer_cast<CacheableString>(input.readObject());
- initHostAddressVector(hostAddress, length);
+ initHostAddressVector(hostAddress.data(), length);
- if (vmKind != ClientProxyMembershipID::LONER_DM_TYPE) {
+ if (vmKind != kVmKindLoner) {
// initialize the object with the values read and some dummy values
- initObjectVars("", hostPort, "", std::chrono::seconds::zero(), DCPORT, 0,
+ initObjectVars("", hostPort, "", std::chrono::seconds::zero(), kDcPort, 0,
vmKind, 0, dsName->value().c_str(), nullptr, vmViewId);
} else {
// initialize the object with the values read and some dummy values
- initObjectVars("", hostPort, "", std::chrono::seconds::zero(), DCPORT, 0,
+ initObjectVars("", hostPort, "", std::chrono::seconds::zero(), kDcPort, 0,
vmKind, 0, dsName->value().c_str(),
uniqueTag->value().c_str(), vmViewId);
}
-
- delete[] hostAddress;
- readAdditionalData(input);
-
- return this;
}
void ClientProxyMembershipID::readAdditionalData(DataInput& input) {
@@ -271,7 +260,7 @@ void ClientProxyMembershipID::readAdditionalData(DataInput& input) {
input.advanceCursor(17);
}
-void ClientProxyMembershipID::increaseSynchCounter() { ++synch_counter; }
+void ClientProxyMembershipID::increaseSyncCounter() { ++syncCounter; }
// Compares two membershipIds. This is based on the compareTo function
// of InternalDistributedMember class of Java.
@@ -331,14 +320,25 @@ int16_t ClientProxyMembershipID::compareTo(
return 0;
}
-void ClientProxyMembershipID::readVersion(int flags, DataInput& input) {
- if (flags & ClientProxyMembershipID::VERSION_MASK) {
+void ClientProxyMembershipID::readVersion(int32_t flags, DataInput& input) {
+ if (flags & kVersionMask) {
const auto version = Version::read(input);
LOGDEBUG("ClientProxyMembershipID::readVersion ordinal = %d ",
version.getOrdinal());
}
}
+int32_t ClientProxyMembershipID::hashcode() const {
+ std::stringstream hostAddressString;
+ hostAddressString << std::hex;
+ for (uint32_t i = 0; i < getHostAddrLen(); i++) {
+ hostAddressString << ":" << static_cast<int>(hostAddr_[i]);
+ }
+ auto result = internal::geode_hash<std::string>{}(hostAddressString.str());
+ result += hostPort_;
+ return result;
+}
+
} // namespace client
} // namespace geode
} // namespace apache
diff --git a/cppcache/src/ClientProxyMembershipID.hpp b/cppcache/src/ClientProxyMembershipID.hpp
index c09a95af5..bcf792d05 100644
--- a/cppcache/src/ClientProxyMembershipID.hpp
+++ b/cppcache/src/ClientProxyMembershipID.hpp
@@ -20,13 +20,12 @@
#ifndef GEODE_CLIENTPROXYMEMBERSHIPID_H_
#define GEODE_CLIENTPROXYMEMBERSHIPID_H_
-#include <sstream>
+#include <memory>
#include <string>
#include <vector>
#include <boost/asio.hpp>
-#include <geode/DataOutput.hpp>
#include <geode/internal/functional.hpp>
#include <geode/internal/geode_globals.hpp>
@@ -36,10 +35,6 @@ namespace apache {
namespace geode {
namespace client {
-using internal::DSFid;
-
-class ClientProxyMembershipID;
-
class ClientProxyMembershipID : public DSMemberForVersionStamp {
public:
const std::string& getDSMemberId() const;
@@ -51,26 +46,34 @@ class ClientProxyMembershipID : public DSMemberForVersionStamp {
const std::chrono::seconds durableClientTimeOut =
std::chrono::seconds::zero());
- // This constructor is only for testing and should not be used for any
- // other purpose. See testEntriesMapForVersioning.cpp for more details
+ /**
+ * This constructor is only for testing and should not be used for any
+ * other purpose. See testEntriesMapForVersioning.cpp for more details
+ */
ClientProxyMembershipID(const uint8_t* hostAddr, uint32_t hostAddrLen,
uint32_t hostPort, const char* dsname,
const char* uniqueTag, uint32_t vmViewId);
- // ClientProxyMembershipID(const char *durableClientId = nullptr, const
- // uint32_t durableClntTimeOut = 0);
+
ClientProxyMembershipID();
+
~ClientProxyMembershipID() noexcept override;
- static void increaseSynchCounter();
+
+ static void increaseSyncCounter();
+
static std::shared_ptr<Serializable> createDeserializable() {
return std::make_shared<ClientProxyMembershipID>();
}
- // Do an empty check on the returned value. Only use after handshake is done.
- const std::string& getDSMemberIdForThinClientUse();
- // Serializable interface:
+ const std::string& getClientId();
+
void toData(DataOutput& output) const override;
+
void fromData(DataInput& input) override;
- DSFid getDSFID() const override { return DSFid::InternalDistributedMember; }
+
+ internal::DSFid getDSFID() const override {
+ return internal::DSFid::InternalDistributedMember;
+ }
+
size_t objectSize() const override { return 0; }
void initHostAddressVector(const boost::asio::ip::address& address);
@@ -85,36 +88,29 @@ class ClientProxyMembershipID : public DSMemberForVersionStamp {
const char* uniqueTag, uint32_t vmViewId);
std::string getDSName() const { return dsName_; }
+
std::string getUniqueTag() const { return uniqueTag_; }
+
const std::vector<uint8_t>& getHostAddr() const { return hostAddr_; }
+
uint32_t getHostAddrLen() const {
return static_cast<uint32_t>(hostAddr_.size());
}
+
uint32_t getHostPort() const { return hostPort_; }
+
std::string getHashKey() override;
+
int16_t compareTo(const DSMemberForVersionStamp&) const override;
- int32_t hashcode() const override {
- uint32_t result = 0;
- std::stringstream hostAddressString;
- hostAddressString << std::hex;
- for (uint32_t i = 0; i < getHostAddrLen(); i++) {
- hostAddressString << ":" << static_cast<int>(hostAddr_[i]);
- }
- result += internal::geode_hash<std::string>{}(hostAddressString.str());
- result += hostPort_;
- return result;
- }
+
+ int32_t hashcode() const override;
bool operator==(const CacheableKey& other) const override {
return (this->compareTo(
dynamic_cast<const DSMemberForVersionStamp&>(other)) == 0);
}
- Serializable* readEssentialData(DataInput& input);
-
- private:
- void readVersion(int flags, DataInput& input);
- void readAdditionalData(DataInput& input);
+ void readEssentialData(DataInput& input);
private:
std::string memIdStr_;
@@ -128,9 +124,8 @@ class ClientProxyMembershipID : public DSMemberForVersionStamp {
std::string hashKey_;
uint32_t vmViewId_;
- static const uint8_t LONER_DM_TYPE = 13;
- static const int VERSION_MASK;
- static const int8_t TOKEN_ORDINAL;
+ void readVersion(int32_t flags, DataInput& input);
+ void readAdditionalData(DataInput& input);
};
} // namespace client
diff --git a/cppcache/src/ClientProxyMembershipIDFactory.cpp b/cppcache/src/ClientProxyMembershipIDFactory.cpp
index 3f565c786..2840355d3 100644
--- a/cppcache/src/ClientProxyMembershipIDFactory.cpp
+++ b/cppcache/src/ClientProxyMembershipIDFactory.cpp
@@ -23,6 +23,7 @@
#include <boost/asio.hpp>
#include <boost/process/environment.hpp>
+#include "ClientProxyMembershipID.hpp"
#include "util/Log.hpp"
namespace bip = boost::asio::ip;
diff --git a/cppcache/src/ClientProxyMembershipIDFactory.hpp b/cppcache/src/ClientProxyMembershipIDFactory.hpp
index e97251de1..26adbb969 100644
--- a/cppcache/src/ClientProxyMembershipIDFactory.hpp
+++ b/cppcache/src/ClientProxyMembershipIDFactory.hpp
@@ -20,14 +20,16 @@
#ifndef GEODE_CLIENTPROXYMEMBERSHIPIDFACTORY_H_
#define GEODE_CLIENTPROXYMEMBERSHIPIDFACTORY_H_
+#include <chrono>
+#include <memory>
#include <string>
-#include "ClientProxyMembershipID.hpp"
-
namespace apache {
namespace geode {
namespace client {
+class ClientProxyMembershipID;
+
class ClientProxyMembershipIDFactory {
public:
explicit ClientProxyMembershipIDFactory(std::string dsName);
diff --git a/cppcache/src/EventId.cpp b/cppcache/src/EventId.cpp
index d53090a31..b0a084416 100644
--- a/cppcache/src/EventId.cpp
+++ b/cppcache/src/EventId.cpp
@@ -22,7 +22,6 @@
#include <geode/DataInput.hpp>
-#include "ClientProxyMembershipID.hpp"
#include "Utils.hpp"
#include "util/Log.hpp"
diff --git a/cppcache/src/QueueConnectionRequest.cpp b/cppcache/src/QueueConnectionRequest.cpp
index 032290776..d25bd8bc3 100644
--- a/cppcache/src/QueueConnectionRequest.cpp
+++ b/cppcache/src/QueueConnectionRequest.cpp
@@ -19,6 +19,9 @@
#include <geode/DataInput.hpp>
#include <geode/DataOutput.hpp>
+#include <geode/internal/DSFixedId.hpp>
+
+#include "ClientProxyMembershipID.hpp"
namespace apache {
namespace geode {
@@ -27,7 +30,7 @@ namespace client {
void QueueConnectionRequest::toData(DataOutput& output) const {
output.writeString(m_serverGp);
output.write(static_cast<int8_t>(DSCode::FixedIDByte));
- output.write(static_cast<int8_t>(DSFid::ClientProxyMembershipId));
+ output.write(static_cast<int8_t>(internal::DSFid::ClientProxyMembershipId));
const auto& dsMemberId = m_membershipID.getDSMemberId();
output.writeBytes(reinterpret_cast<const uint8_t*>(dsMemberId.c_str()),
static_cast<int32_t>(dsMemberId.size()));
@@ -37,8 +40,8 @@ void QueueConnectionRequest::toData(DataOutput& output) const {
output.writeBoolean(m_findDurable);
}
-DSFid QueueConnectionRequest::getDSFID() const {
- return DSFid::QueueConnectionRequest;
+internal::DSFid QueueConnectionRequest::getDSFID() const {
+ return internal::DSFid::QueueConnectionRequest;
}
std::set<ServerLocation> QueueConnectionRequest::getExcludedServer() const {
diff --git a/cppcache/src/QueueConnectionRequest.hpp b/cppcache/src/QueueConnectionRequest.hpp
index 635f7bca3..42028d21d 100644
--- a/cppcache/src/QueueConnectionRequest.hpp
+++ b/cppcache/src/QueueConnectionRequest.hpp
@@ -23,14 +23,16 @@
#include <set>
#include <string>
-#include "ClientProxyMembershipID.hpp"
#include "ServerLocation.hpp"
#include "ServerLocationRequest.hpp"
+#include "geode/internal/DSFixedId.hpp"
namespace apache {
namespace geode {
namespace client {
+class ClientProxyMembershipID;
+
class QueueConnectionRequest : public ServerLocationRequest {
public:
QueueConnectionRequest(const ClientProxyMembershipID& memId,
@@ -45,7 +47,7 @@ class QueueConnectionRequest : public ServerLocationRequest {
m_serverGp(serverGp) {} // No need for default constructor as creating
// request with it does not make sense.
void toData(DataOutput& output) const override;
- DSFid getDSFID() const override;
+ internal::DSFid getDSFID() const override;
virtual std::set<ServerLocation> getExcludedServer() const;
virtual const ClientProxyMembershipID& getProxyMemberShipId() const;
diff --git a/cppcache/src/TXCommitMessage.cpp b/cppcache/src/TXCommitMessage.cpp
index 99968b59d..2d35bde49 100644
--- a/cppcache/src/TXCommitMessage.cpp
+++ b/cppcache/src/TXCommitMessage.cpp
@@ -18,8 +18,8 @@
#include "TXCommitMessage.hpp"
#include <algorithm>
-#include <vector>
+#include <geode/DataInput.hpp>
#include <geode/DataOutput.hpp>
#include "ClientProxyMembershipID.hpp"
@@ -32,11 +32,7 @@ namespace client {
TXCommitMessage::TXCommitMessage(
MemberListForVersionStamp& memberListForVersionStamp)
- : m_memberListForVersionStamp(memberListForVersionStamp)
-// UNUSED : m_processorId(0)
-{}
-
-bool TXCommitMessage::isAckRequired() { return false; }
+ : memberListForVersionStamp_(memberListForVersionStamp) {}
void TXCommitMessage::fromData(DataInput& input) {
// read and ignore pId
@@ -56,7 +52,7 @@ void TXCommitMessage::fromData(DataInput& input) {
input.readInt32();
// ignore farsideBaseMembershipId
- auto ignoreLength = input.readArrayLength();
+ const auto ignoreLength = input.readArrayLength();
if (ignoreLength > 0) {
input.advanceCursor(ignoreLength);
}
@@ -65,12 +61,13 @@ void TXCommitMessage::fromData(DataInput& input) {
input.readInt64(); // ignore seqId
input.readBoolean(); // ignore needsLargeModCount
+ input.readBoolean(); // ignore shadow keys flag
- auto regionSize = input.readInt32();
+ const auto regionSize = input.readInt32();
for (int32_t i = 0; i < regionSize; i++) {
- auto rc = std::make_shared<RegionCommit>(m_memberListForVersionStamp);
+ auto rc = std::make_shared<RegionCommit>(memberListForVersionStamp_);
rc->fromData(input);
- m_regions.push_back(rc);
+ regions_.push_back(rc);
}
const auto dsCode = static_cast<const DSCode>(input.read());
@@ -99,8 +96,8 @@ void TXCommitMessage::fromData(DataInput& input) {
GF_CACHE_ILLEGAL_STATE_EXCEPTION);
}
- int32_t len = input.readArrayLength();
- for (int j = 0; j < len; j++) {
+ const auto len = input.readArrayLength();
+ for (int32_t j = 0; j < len; j++) {
std::shared_ptr<Cacheable> tmp;
input.readObject(tmp);
}
@@ -114,11 +111,8 @@ std::shared_ptr<Serializable> TXCommitMessage::create(
}
void TXCommitMessage::apply(Cache* cache) {
- for (std::vector<std::shared_ptr<RegionCommit>>::iterator iter =
- m_regions.begin();
- m_regions.end() != iter; iter++) {
- auto regionCommit = std::static_pointer_cast<RegionCommit>(*iter);
- regionCommit->apply(cache);
+ for (const auto& region : regions_) {
+ region->apply(cache);
}
}
diff --git a/cppcache/src/TXCommitMessage.hpp b/cppcache/src/TXCommitMessage.hpp
index a78892fbb..b527192af 100644
--- a/cppcache/src/TXCommitMessage.hpp
+++ b/cppcache/src/TXCommitMessage.hpp
@@ -20,8 +20,10 @@
#ifndef GEODE_TXCOMMITMESSAGE_H_
#define GEODE_TXCOMMITMESSAGE_H_
-#include <geode/DataInput.hpp>
-#include <geode/internal/geode_globals.hpp>
+#include <memory>
+#include <vector>
+
+#include <geode/internal/DataSerializableFixedId.hpp>
#include "RegionCommit.hpp"
@@ -29,27 +31,29 @@ namespace apache {
namespace geode {
namespace client {
-class TXCommitMessage
- : public internal::DataSerializableFixedId_t<DSFid::TXCommitMessage> {
+class MemberListForVersionStamp;
+class DataInput;
+class DataOutput;
+class Cache;
+
+class TXCommitMessage : public internal::DataSerializableFixedId_t<
+ internal::DSFid::TXCommitMessage> {
public:
explicit TXCommitMessage(
MemberListForVersionStamp& memberListForVersionStamp);
- ~TXCommitMessage() override = default;
+ ~TXCommitMessage() noexcept override = default;
void fromData(DataInput& input) override;
void toData(DataOutput& output) const override;
static std::shared_ptr<Serializable> create(
MemberListForVersionStamp& memberListForVersionStamp);
- // VectorOfEntryEvent getEvents(Cache* cache);
void apply(Cache* cache);
private:
- // UNUSED int32_t m_processorId;
- bool isAckRequired();
- MemberListForVersionStamp& m_memberListForVersionStamp;
- std::vector<std::shared_ptr<RegionCommit>> m_regions;
+ MemberListForVersionStamp& memberListForVersionStamp_;
+ std::vector<std::shared_ptr<RegionCommit>> regions_;
};
} // namespace client
diff --git a/cppcache/src/TcrConnection.cpp b/cppcache/src/TcrConnection.cpp
index d35c94dc6..dc09e22ad 100644
--- a/cppcache/src/TcrConnection.cpp
+++ b/cppcache/src/TcrConnection.cpp
@@ -412,7 +412,6 @@ bool TcrConnection::initTcrConnection(
if (isClientNotification) {
readHandshakeInstantiatorMsg(connectTimeout);
}
-
break;
case REPLY_AUTHENTICATION_FAILED: {
AuthenticationFailedException ex(
@@ -1041,6 +1040,9 @@ void TcrConnection::readHandshakeInstantiatorMsg(
readHandshakeString(connectTimeout);
}
}
+
+ // Geode 1.5+ - Ignore client ping task interval
+ readHandShakeBytes(4, connectTimeout);
}
void TcrConnection::readHandShakeBytes(
int numberOfBytes, std::chrono::microseconds connectTimeout) {
diff --git a/cppcache/src/TcrMessage.cpp b/cppcache/src/TcrMessage.cpp
index 605d0ef63..0b2308238 100644
--- a/cppcache/src/TcrMessage.cpp
+++ b/cppcache/src/TcrMessage.cpp
@@ -25,6 +25,7 @@
#include "BucketServerLocation.hpp"
#include "CacheImpl.hpp"
#include "CacheRegionHelper.hpp"
+#include "ClientProxyMembershipID.hpp"
#include "DataInputInternal.hpp"
#include "DataOutputInternal.hpp"
#include "DiskStoreId.hpp"
@@ -3110,8 +3111,7 @@ std::shared_ptr<DSMemberForVersionStamp> TcrMessage::readDSMember(
"InternalDistributedMember. ");
}
- auto memId =
- std::shared_ptr<ClientProxyMembershipID>(new ClientProxyMembershipID());
+ auto memId = std::make_shared<ClientProxyMembershipID>();
memId->fromData(input);
return std::shared_ptr<DSMemberForVersionStamp>(memId);
} else if (typeidLen == 2) {
diff --git a/cppcache/src/ThinClientLocatorHelper.hpp b/cppcache/src/ThinClientLocatorHelper.hpp
index 71ba7d1de..74e4986b9 100644
--- a/cppcache/src/ThinClientLocatorHelper.hpp
+++ b/cppcache/src/ThinClientLocatorHelper.hpp
@@ -28,7 +28,6 @@
#include <geode/internal/geode_globals.hpp>
-#include "ClientProxyMembershipID.hpp"
#include "ErrType.hpp"
#include "GetAllServersRequest.hpp"
#include "GetAllServersResponse.hpp"
@@ -41,6 +40,7 @@ namespace client {
class ThinClientPoolDM;
class Connector;
class TcrConnection;
+class ClientProxyMembershipID;
class ThinClientLocatorHelper {
public:
diff --git a/cppcache/src/ThinClientPoolDM.cpp b/cppcache/src/ThinClientPoolDM.cpp
index 4e78d33d2..15e359e2b 100644
--- a/cppcache/src/ThinClientPoolDM.cpp
+++ b/cppcache/src/ThinClientPoolDM.cpp
@@ -26,6 +26,7 @@
#include <geode/SystemProperties.hpp>
#include "CacheImpl.hpp"
+#include "ClientProxyMembershipID.hpp"
#include "DistributedSystemImpl.hpp"
#include "ExecutionImpl.hpp"
#include "FunctionExpiryTask.hpp"
@@ -159,7 +160,7 @@ ThinClientPoolDM::ThinClientPoolDM(const char* name,
m_primaryServerQueueSize(PRIMARY_QUEUE_NOT_AVAILABLE) {
static bool firstGuard = false;
if (firstGuard) {
- ClientProxyMembershipID::increaseSynchCounter();
+ ClientProxyMembershipID::increaseSyncCounter();
}
firstGuard = true;
diff --git a/cppcache/src/Version.hpp b/cppcache/src/Version.hpp
index 4b78468b7..255dab76a 100644
--- a/cppcache/src/Version.hpp
+++ b/cppcache/src/Version.hpp
@@ -34,7 +34,7 @@ class Version {
inline int16_t getOrdinal() const noexcept { return ordinal_; }
static const Version& current() noexcept {
- static const auto version = Version{45}; // Geode 1.0.0
+ static const auto version = Version{125}; // Geode 1.14.0
return version;
}
diff --git a/cppcache/src/VersionStamp.hpp b/cppcache/src/VersionStamp.hpp
index 47ee64709..a5d2eba0b 100644
--- a/cppcache/src/VersionStamp.hpp
+++ b/cppcache/src/VersionStamp.hpp
@@ -24,7 +24,6 @@
#include <geode/internal/geode_globals.hpp>
-#include "ClientProxyMembershipID.hpp"
#include "ErrType.hpp"
#include "VersionTag.hpp"
diff --git a/cppcache/src/statistics/HostStatSampler.cpp b/cppcache/src/statistics/HostStatSampler.cpp
index e9d8b53aa..fb4c3ffa7 100644
--- a/cppcache/src/statistics/HostStatSampler.cpp
+++ b/cppcache/src/statistics/HostStatSampler.cpp
@@ -35,6 +35,7 @@
#include "../AdminRegion.hpp"
#include "../CacheImpl.hpp"
#include "../ClientHealthStats.hpp"
+#include "../ClientProxyMembershipID.hpp"
#include "../CppCacheLibrary.hpp"
#include "../TcrConnectionManager.hpp"
#include "GeodeStatisticsFactory.hpp"
@@ -306,7 +307,7 @@ void HostStatSampler::putStatsInAdminRegion() {
auto memId = conn_man->getCacheImpl()
->getClientProxyMembershipIDFactory()
.create(durableClientId_, durableTimeout_);
- clientId = memId->getDSMemberIdForThinClientUse();
+ clientId = memId->getClientId();
}
auto keyPtr = client::CacheableString::create(clientId.c_str());
diff --git a/cppcache/src/statistics/PoolStatsSampler.cpp b/cppcache/src/statistics/PoolStatsSampler.cpp
index 9da17caaa..535342667 100644
--- a/cppcache/src/statistics/PoolStatsSampler.cpp
+++ b/cppcache/src/statistics/PoolStatsSampler.cpp
@@ -22,6 +22,7 @@
#include "../AdminRegion.hpp"
#include "../CacheImpl.hpp"
#include "../ClientHealthStats.hpp"
+#include "../ClientProxyMembershipID.hpp"
#include "../ThinClientPoolDM.hpp"
#include "GeodeStatisticsFactory.hpp"
@@ -102,7 +103,7 @@ void PoolStatsSampler::putStatsInAdminRegion() {
auto obj = client::ClientHealthStats::create(
gets, puts, misses, numListeners, numThreads, cpuTime, numCPU);
const auto memId = m_distMan->getMembershipId();
- clientId = memId->getDSMemberIdForThinClientUse();
+ clientId = memId->getClientId();
auto keyPtr = client::CacheableString::create(clientId.c_str());
m_adminRegion->put(keyPtr, obj);
}
diff --git a/cppcache/test/ClientProxyMembershipIDTest.cpp b/cppcache/test/ClientProxyMembershipIDTest.cpp
index bcc60dfea..fc8955ed8 100644
--- a/cppcache/test/ClientProxyMembershipIDTest.cpp
+++ b/cppcache/test/ClientProxyMembershipIDTest.cpp
@@ -50,7 +50,7 @@ TEST(ClientProxyMembershipIDTest, testCreate) {
apache::geode::client::internal::geode_hash<std::string>{}(":0:0:0:1") +
static_cast<int32_t>(cpmID.getHostPort()));
EXPECT_TRUE(boost::regex_search(
- cpmID.getDSMemberIdForThinClientUse(),
+ cpmID.getClientId(),
boost::regex(
std::string("localhost(.*):2:").append(uniqueTag).append(":myDs"))));
}
diff --git a/cppcache/test/QueueConnectionRequestTest.cpp b/cppcache/test/QueueConnectionRequestTest.cpp
index 7a480874f..89daef103 100644
--- a/cppcache/test/QueueConnectionRequestTest.cpp
+++ b/cppcache/test/QueueConnectionRequestTest.cpp
@@ -25,6 +25,7 @@
#include <geode/DataOutput.hpp>
#include "ByteArrayFixture.hpp"
+#include "ClientProxyMembershipID.hpp"
#include "DataOutputInternal.hpp"
namespace apache {
@@ -55,7 +56,7 @@ TEST_F(QueueConnectionRequestTest, testToData) {
EXPECT_BYTEARRAY_EQ(
"2A0000012631015C047F000001000000022A00046E616D65000000302E\\h{8}"
- "0D002A000664734E616D652A000772616E644E756D2D00000001FFFFFFFF000000012A00"
+ "0D002A000664734E616D652A000772616E644E756D7D00000001FFFFFFFF000000012A00"
"067365727665720000000A00",
ByteArray(dataOutput.getBuffer(), dataOutput.getBufferLength()));
}
diff --git a/tests/javaobject/QueryFunction.java b/tests/javaobject/QueryFunction.java
index e4c137d45..5b7158e04 100644
--- a/tests/javaobject/QueryFunction.java
+++ b/tests/javaobject/QueryFunction.java
@@ -14,24 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package javaobject;
+package javaobject;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Declarable;