Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
import java.util.stream.Stream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.compress.archivers.ArchiveOutputStream;
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.io.FileUtils;
Expand Down Expand Up @@ -133,6 +134,25 @@ public void init() throws ServletException {
lock = new Lock(om);
}

@Override
public void processMetadataSnapshotRequest(HttpServletRequest request, HttpServletResponse response,
boolean isFormData, boolean flush) {
OzoneManager om = (OzoneManager) getServletContext().getAttribute(OzoneConsts.OM_CONTEXT_ATTRIBUTE);
boolean isOmLeader = om.isLeaderReady();
if (!isOmLeader) {
String msg = "Unable to process metadata snapshot request as this OM is not the leader";
LOG.warn(msg);
try {
response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, msg);
} catch (IOException e) {
LOG.warn("Failed to send error response, falling back to status only", e);
response.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
}
return;
}
super.processMetadataSnapshotRequest(request, response, isFormData, flush);
}

@Override
public void writeDbDataToStream(DBCheckpoint checkpoint,
HttpServletRequest request,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,19 @@ public BootstrapStateHandler.Lock getBootstrapStateLock() {
@Override
public void processMetadataSnapshotRequest(HttpServletRequest request, HttpServletResponse response,
boolean isFormData, boolean flush) {
OzoneManager om = (OzoneManager) getServletContext().getAttribute(OzoneConsts.OM_CONTEXT_ATTRIBUTE);
boolean isOmLeader = om.isLeaderReady();
if (!isOmLeader) {
String msg = "Unable to process metadata snapshot request as this OM is not the leader";
LOG.warn(msg);
try {
response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE, msg);
} catch (IOException e) {
LOG.warn("Failed to send error response, falling back to status only", e);
response.setStatus(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
}
return;
}
String[] sstParam = isFormData ?
parseFormDataParameters(request) : request.getParameterValues(
OZONE_DB_CHECKPOINT_REQUEST_TO_EXCLUDE_SST);
Expand Down