19 #ifndef PDBSCANWORK_CC
20 #define PDBSCANWORK_CC
35 #define HEADER_SIZE 20
65 pagePinnedMsg->setMorePagesToLoad(morePagesToPin);
66 pagePinnedMsg->setNodeID(nodeId);
67 pagePinnedMsg->setDatabaseID(dbId);
68 pagePinnedMsg->setUserTypeID(typeId);
69 pagePinnedMsg->setSetID(setId);
70 pagePinnedMsg->setPageID(pageId);
71 pagePinnedMsg->setPageSize(pageSize);
72 pagePinnedMsg->setSharedMemOffset(offset);
76 errMsg =
"could not scan data: " + errMsg;
87 size_t sizeOfNextObject = myCommunicator->getSizeOfNextObject();
92 PDB_COUT <<
"PDBScanWork: to create memory block for SimpleRequestResult" << std::endl;
94 PDB_COUT <<
"PDBScanWork: memory block allocated" << std::endl;
112 logger->debug(
"PDBScanWork: running...");
117 logger->debug(
"PDBScanWork: connect to backend...");
121 while (communicatorToBackEnd->connectToLocalServer(
126 errMsg =
"PDBScanWowrk: can not connect to local server.";
127 cout << errMsg <<
"\n";
138 logger->debug(
"PDBScanWork: pin pages...");
140 while (this->
iter->hasNext()) {
141 page = this->
iter->next();
142 if (page !=
nullptr) {
144 PDB_COUT <<
"PDBScanWork: pin page with pageId =" << page->getPageID() <<
"\n";
148 logger->debug(
string(
"PDBScanWork: pin pages with pageId = ") +
149 to_string(page->getPageID()));
160 communicatorToBackEnd->reconnect(errMsg);
165 PDB_COUT <<
"PDBScanWork: waiting for ack..." << std::endl;
166 logger->debug(
"PDBScanWork: waiting for ack... ");
169 communicatorToBackEnd->reconnect(errMsg);
173 logger->debug(
"PDBScanWork: ack received ");
174 PDB_COUT <<
"PDBScanWork: got ack!" << std::endl;
180 PDB_COUT <<
"PDBScanWork to close the loop" << std::endl;
181 logger->debug(
"PDBScanWork to close the loop");
184 bool ret = this->
sendPagePinned(communicatorToBackEnd,
false, 0, 0, 0, 0, 0, 0, 0);
186 communicatorToBackEnd->reconnect(errMsg);
192 communicatorToBackEnd->reconnect(errMsg);
197 PDB_COUT <<
"PDBScanWork finished.\n";
198 logger->debug(
"PDBScanWork finished.\n");
pdb::PangeaStorageServer * storage
shared_ptr< PDBPage > PDBPagePtr
pthread_mutex_t connection_mutex
shared_ptr< PageIteratorInterface > PageIteratorPtr
string getPathToBackEndServer()
bool sendPagePinned(pdb::PDBCommunicatorPtr myCommunicator, bool morePagesToPin, NodeID nodeId, DatabaseID dbId, UserTypeID typeId, SetID setId, PageID pageId, size_t pageSize, size_t offset)
std::shared_ptr< PDBCommunicator > PDBCommunicatorPtr
shared_ptr< PDBBuzzer > PDBBuzzerPtr
PDBScanWork(PageIteratorPtr iter, pdb::PangeaStorageServer *storage, int &counter)
void execute(PDBBuzzerPtr callerBuzzer) override
std::shared_ptr< PDBLogger > PDBLoggerPtr
bool acceptPagePinnedAck(pdb::PDBCommunicatorPtr myCommunicator, bool &wasError, string &info, string &errMsg)