mirror of https://gitee.com/bigwinds/arangodb
fixed incompatible replication API responses
This commit is contained in:
parent
fb15364c2a
commit
19f667c1d6
|
@ -980,9 +980,9 @@ void RestReplicationHandler::handleCommandLoggerFollow() {
|
|||
// generate the result
|
||||
size_t length = 0;
|
||||
if (useVpp) {
|
||||
length = TRI_LengthStringBuffer(dump._buffer);
|
||||
} else {
|
||||
length = dump._slices.size();
|
||||
} else {
|
||||
length = TRI_LengthStringBuffer(dump._buffer);
|
||||
}
|
||||
|
||||
if (length == 0) {
|
||||
|
@ -991,25 +991,25 @@ void RestReplicationHandler::handleCommandLoggerFollow() {
|
|||
resetResponse(rest::ResponseCode::OK);
|
||||
}
|
||||
|
||||
// transfer ownership of the buffer contents
|
||||
_response->setContentType(rest::ContentType::DUMP);
|
||||
|
||||
// set headers
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_CHECKMORE,
|
||||
checkMore ? "true" : "false");
|
||||
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_LASTINCLUDED,
|
||||
StringUtils::itoa(dump._lastFoundTick));
|
||||
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_LASTTICK,
|
||||
StringUtils::itoa(state.lastCommittedTick));
|
||||
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_ACTIVE, "true");
|
||||
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_FROMPRESENT,
|
||||
dump._fromTickIncluded ? "true" : "false");
|
||||
|
||||
if (length > 0) {
|
||||
// transfer ownership of the buffer contents
|
||||
_response->setContentType(rest::ContentType::DUMP);
|
||||
|
||||
// set headers
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_CHECKMORE,
|
||||
checkMore ? "true" : "false");
|
||||
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_LASTINCLUDED,
|
||||
StringUtils::itoa(dump._lastFoundTick));
|
||||
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_LASTTICK,
|
||||
StringUtils::itoa(state.lastCommittedTick));
|
||||
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_ACTIVE, "true");
|
||||
|
||||
_response->setHeaderNC(TRI_REPLICATION_HEADER_FROMPRESENT,
|
||||
dump._fromTickIncluded ? "true" : "false");
|
||||
|
||||
if (useVpp) {
|
||||
for (auto message : dump._slices) {
|
||||
_response->addPayload(std::move(message), &dump._vpackOptions, true);
|
||||
|
|
|
@ -328,7 +328,11 @@ static int SliceifyMarker(TRI_replication_dump_t* dump,
|
|||
TRI_ASSERT(MustReplicateWalMarkerType(marker));
|
||||
TRI_df_marker_type_t const type = marker->getType();
|
||||
|
||||
VPackBuilder builder(&dump->_vpackOptions);
|
||||
VPackBuffer<uint8_t> buffer;
|
||||
std::shared_ptr<VPackBuffer<uint8_t>> bufferPtr;
|
||||
bufferPtr.reset(&buffer, arangodb::velocypack::BufferNonDeleter<uint8_t>());
|
||||
|
||||
VPackBuilder builder(bufferPtr, &dump->_vpackOptions);
|
||||
builder.openObject();
|
||||
|
||||
if (!isDump) {
|
||||
|
@ -437,6 +441,9 @@ static int SliceifyMarker(TRI_replication_dump_t* dump,
|
|||
}
|
||||
|
||||
builder.close();
|
||||
|
||||
dump->_slices.push_back(std::move(buffer));
|
||||
|
||||
return TRI_ERROR_NO_ERROR;
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -948,7 +955,7 @@ int TRI_DetermineOpenTransactionsReplication(TRI_replication_dump_t* dump,
|
|||
dump->_lastFoundTick = lastFoundTick;
|
||||
// LOG(INFO) << "last tick2: " << lastFoundTick;
|
||||
|
||||
(dump->_slices).push_back(std::move(buffer));
|
||||
dump->_slices.push_back(std::move(buffer));
|
||||
|
||||
} catch (arangodb::basics::Exception const& ex) {
|
||||
res = ex.code();
|
||||
|
|
Loading…
Reference in New Issue