@Override public URL buildURLToFetchLogs(long segmentTxId, long position) { Preconditions.checkArgument(segmentTxId > -1, "Invalid segment: %s", segmentTxId); Preconditions.checkState(httpPort != -1, "HTTP port not set yet"); try { String path = GetJournalEditServlet.buildPath( journalId, segmentTxId, nsInfo, position); return new URL("http", addr.getAddress().getHostAddress(), httpPort, path.toString()); } catch (MalformedURLException e) { // should never get here. throw new IllegalStateException(e); } }
@Override public URL buildURLToFetchLogs(long segmentTxId) { Preconditions.checkArgument(segmentTxId > 0, "Invalid segment: %s", segmentTxId); Preconditions.checkState(httpPort != -1, "HTTP port not set yet"); try { String path = GetJournalEditServlet.buildPath( journalId, segmentTxId, nsInfo); return new URL("http", addr.getHostName(), httpPort, path.toString()); } catch (MalformedURLException e) { // should never get here. throw new RuntimeException(e); } }
@Override public URL buildURLToFetchLogs(long segmentTxId) { Preconditions.checkArgument(segmentTxId > 0, "Invalid segment: %s", segmentTxId); Preconditions.checkState(hasHttpServerEndPoint(), "No HTTP/HTTPS endpoint"); try { String path = GetJournalEditServlet.buildPath( journalId, segmentTxId, nsInfo); return new URL(httpServerURL, path); } catch (MalformedURLException e) { // should never get here. throw new RuntimeException(e); } }
public InputStream getInputStream(long position) throws IOException { url = logger.buildURLToFetchLogs(firstTxId, position); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); // set timeout for connecting and reading connection.setConnectTimeout(httpTimeout); connection.setReadTimeout(httpTimeout); if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) { throw new IOException( "Fetch of " + url + " failed with status code " + connection.getResponseCode() + "\nResponse message:\n" + connection.getResponseMessage()); } String contentLength = connection.getHeaderField(CONTENT_LENGTH); if (contentLength != null) { advertisedSize = Long.parseLong(contentLength); if (advertisedSize < 0) { throw new IOException("Invalid " + CONTENT_LENGTH + " header: " + contentLength); } } else { throw new IOException(CONTENT_LENGTH + " header is not provided " + "by the server when trying to fetch " + url); } String lastValidTxIdStr = connection.getHeaderField(GetJournalEditServlet.LAST_VALID_TXID); if (lastValidTxIdStr == null) { throw new IOException(GetJournalEditServlet.LAST_VALID_TXID + " is not provided"); } String isInProgressStr = connection.getHeaderField(GetJournalEditServlet.IS_IN_PROGRESS); if (isInProgressStr == null) { throw new IOException(GetJournalEditServlet.IS_IN_PROGRESS + " is not provided"); } isInProgress = Boolean.valueOf(isInProgressStr); lastValidTxId = Long.valueOf(lastValidTxIdStr); startPosition = position; return connection.getInputStream(); }