Skip to content

Commit

Permalink
7.0.1 fix det server version (#702)
Browse files Browse the repository at this point in the history
* check server version before initial checks, catch old server version exception, get old server version as 64 bit and print it along with exception
  • Loading branch information
thattil authored Mar 23, 2023
1 parent 2ef0210 commit 87d6e16
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 5 deletions.
18 changes: 17 additions & 1 deletion RELEASE.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This document describes the differences between v7.0.1 and v7.0.0
=================


Receiver:
Receiver
--------


Expand All @@ -35,6 +35,22 @@ This document describes the differences between v7.0.1 and v7.0.0



Client
------


* Detector Server Version from previous Releases
Hostname command would hang with 7.0.0 client if the detector server
was from a previous release (eg. 6.1.2). In this case, the user cannot
get the detector server version.

Fixed that the hostname command will throw an exception about
incompatible server with its version in the message. Now, the user can
get the version number without having to telnet or ssh to the detector.
With this info, one can then update to matching client for that server
and start the detector updation process.


2 On-board Detector Server Compatibility
==========================================

Expand Down
27 changes: 23 additions & 4 deletions slsDetectorSoftware/src/Module.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@ void Module::setHostname(const std::string &hostname,
auto client = DetectorSocket(shm()->hostname, shm()->controlPort);
client.close();
try {
initialDetectorServerChecks();
checkDetectorVersionCompatibility();
initialDetectorServerChecks();
LOG(logINFO) << "Module Version Compatibility - Success";
} catch (const RuntimeError &e) {
if (!initialChecks) {
Expand All @@ -93,9 +93,28 @@ int64_t Module::getFirmwareVersion() const {
}

std::string Module::getControlServerLongVersion() const {
char retval[MAX_STR_LENGTH]{};
sendToDetector(F_GET_SERVER_VERSION, nullptr, retval);
return retval;
try {
char retval[MAX_STR_LENGTH]{};
sendToDetector(F_GET_SERVER_VERSION, nullptr, retval);
return retval;
}
// throw with old server version (sends 8 bytes)
catch (RuntimeError &e) {
std::string emsg = std::string(e.what());
if (emsg.find(F_GET_SERVER_VERSION) && emsg.find("8 bytes")) {
throwDeprecatedServerVersion();
}
throw;
}
}

void Module::throwDeprecatedServerVersion() const {
uint64_t res = sendToDetectorStop<int64_t>(F_GET_SERVER_VERSION);
std::cout << std::endl;
std::ostringstream os;
os << "Detector Server (Control) version (0x" << std::hex << res
<< ") is incompatible with this client. Please update detector server!";
throw RuntimeError(os.str());
}

std::string Module::getStopServerLongVersion() const {
Expand Down
1 change: 1 addition & 0 deletions slsDetectorSoftware/src/Module.h
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ class Module : public virtual slsDetectorDefs {
int64_t getFirmwareVersion() const;
std::string getControlServerLongVersion() const;
std::string getStopServerLongVersion() const;
void throwDeprecatedServerVersion() const;
std::string getDetectorServerVersion() const;
std::string getHardwareVersion() const;
std::string getKernelVersion() const;
Expand Down

0 comments on commit 87d6e16

Please sign in to comment.