Skip to content

Commit

Permalink
Replace AsyncHttpClient with OkHttp in Ping class
Browse files Browse the repository at this point in the history
  • Loading branch information
Jochen Schalanda authored and Jochen Schalanda committed Mar 20, 2015
1 parent 7448d52 commit 7d22c4a
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 39 deletions.
4 changes: 4 additions & 0 deletions graylog2-radio/pom.xml
Expand Up @@ -144,6 +144,10 @@
<groupId>com.ning</groupId> <groupId>com.ning</groupId>
<artifactId>async-http-client</artifactId> <artifactId>async-http-client</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.squareup.okhttp</groupId>
<artifactId>okhttp</artifactId>
</dependency>


<dependency> <dependency>
<groupId>org.msgpack</groupId> <groupId>org.msgpack</groupId>
Expand Down
Expand Up @@ -23,9 +23,6 @@


import javax.inject.Inject; import javax.inject.Inject;


/**
* @author Dennis Oelkers <dennis@torch.sh>
*/
public class MasterPingPeriodical extends Periodical { public class MasterPingPeriodical extends Periodical {
private static final Logger LOG = LoggerFactory.getLogger(MasterPingPeriodical.class); private static final Logger LOG = LoggerFactory.getLogger(MasterPingPeriodical.class);


Expand Down
66 changes: 34 additions & 32 deletions graylog2-radio/src/main/java/org/graylog2/radio/cluster/Ping.java
Expand Up @@ -17,73 +17,75 @@
package org.graylog2.radio.cluster; package org.graylog2.radio.cluster;


import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import javax.inject.Inject; import com.squareup.okhttp.MediaType;
import javax.inject.Named; import com.squareup.okhttp.OkHttpClient;
import com.ning.http.client.AsyncHttpClient; import com.squareup.okhttp.Request;
import com.ning.http.client.Request; import com.squareup.okhttp.RequestBody;
import com.ning.http.client.Response; import com.squareup.okhttp.Response;
import org.graylog2.plugin.ServerStatus; import org.graylog2.plugin.ServerStatus;
import org.graylog2.plugin.system.NodeId;
import org.graylog2.rest.models.radio.requests.PingRequest; import org.graylog2.rest.models.radio.requests.PingRequest;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;


import javax.ws.rs.core.UriBuilder; import javax.inject.Inject;
import javax.inject.Named;
import java.io.IOException; import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;


/** import static com.google.common.base.Preconditions.checkNotNull;
* @author Lennart Koopmann <lennart@torch.sh> import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
*/
public class Ping implements Runnable {


public class Ping implements Runnable {
/* /*
* This is extremely simple. Once we do more than just the ping API calls * This is extremely simple. Once we do more than just the ping API calls
* we should build something proper here. * we should build something proper here.
*/ */


private static final Logger LOG = LoggerFactory.getLogger(Ping.class); private static final Logger LOG = LoggerFactory.getLogger(Ping.class);
private static final MediaType CONTENT_TYPE = MediaType.parse(APPLICATION_JSON);


private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
private final AsyncHttpClient httpClient; private final OkHttpClient httpClient;
private final String nodeId; private final NodeId nodeId;
private final URI serverUri; private final URI serverUri;
private final URI ourUri; private final URI ourUri;


@Inject @Inject
public Ping(ObjectMapper objectMapper, AsyncHttpClient httpClient, @Named("rest_transport_uri") URI ourUri, @Named("graylog2_server_uri") URI serverUri, ServerStatus serverStatus) { public Ping(ObjectMapper objectMapper,
this.objectMapper = objectMapper; @Named("systemHttpClient") OkHttpClient httpClient,
this.httpClient = httpClient; @Named("rest_transport_uri") URI ourUri,
this.nodeId = serverStatus.getNodeId().toString(); @Named("graylog2_server_uri") URI serverUri,
this.ourUri = ourUri; NodeId nodeId) {
this.serverUri = serverUri; this.objectMapper = checkNotNull(objectMapper);
this.httpClient = checkNotNull(httpClient);
this.nodeId = checkNotNull(nodeId);
this.ourUri = checkNotNull(ourUri);
this.serverUri = checkNotNull(serverUri);
} }


public void ping() throws IOException, ExecutionException, InterruptedException { public void ping() throws IOException {
final PingRequest pingRequest = PingRequest.create(ourUri.toString()); final PingRequest pingRequest = PingRequest.create(ourUri.toString());


final UriBuilder uriBuilder = UriBuilder.fromUri(serverUri); final URI uri = serverUri.resolve("/system/radios/" + nodeId + "/ping");
uriBuilder.path("/system/radios/" + nodeId + "/ping"); final Request request = new Request.Builder()

.url(uri.toURL())
final Request request = httpClient.preparePut(uriBuilder.build().toString()) .put(RequestBody.create(CONTENT_TYPE, objectMapper.writeValueAsBytes(pingRequest)))
.setHeader("Content-Type", "application/json") .build();
.setBody(objectMapper.writeValueAsString(pingRequest)).build();
Future<Response> f = httpClient.executeRequest(request);


Response r = f.get(); final Response r = httpClient.newCall(request).execute();


// fail on a non-ok status // fail on a non-ok status
if (r.getStatusCode() > 299) { if (!r.isSuccessful()) {
throw new RuntimeException("Expected ping HTTP response OK but got [" + r.getStatusCode() + "]. Request was " + request.getUrl()); throw new RuntimeException("Expected successful HTTP response [2xx] but got [" + r.code() + "]. Request was " + request.urlString());
} }
} }


@Override @Override
public void run() { public void run() {
try { try {
ping(); ping();
} catch (IOException | ExecutionException | InterruptedException e) { } catch (IOException e) {
LOG.error("Pinging the master node failed: ", e); LOG.error("Pinging the master node failed: ", e);
} }
} }
Expand Down
Expand Up @@ -29,17 +29,17 @@
import org.graylog2.cluster.Node; import org.graylog2.cluster.Node;
import org.graylog2.cluster.NodeNotFoundException; import org.graylog2.cluster.NodeNotFoundException;
import org.graylog2.cluster.NodeService; import org.graylog2.cluster.NodeService;
import org.graylog2.plugin.database.ValidationException;
import org.graylog2.inputs.Input; import org.graylog2.inputs.Input;
import org.graylog2.inputs.InputService; import org.graylog2.inputs.InputService;
import org.graylog2.plugin.Tools; import org.graylog2.plugin.Tools;
import org.graylog2.plugin.database.ValidationException;
import org.graylog2.rest.models.radio.requests.PingRequest;
import org.graylog2.rest.models.radio.responses.PersistedInputsResponse; import org.graylog2.rest.models.radio.responses.PersistedInputsResponse;
import org.graylog2.rest.models.radio.responses.PersistedInputsSummaryResponse; import org.graylog2.rest.models.radio.responses.PersistedInputsSummaryResponse;
import org.graylog2.rest.models.radio.responses.RegisterInputResponse; import org.graylog2.rest.models.radio.responses.RegisterInputResponse;
import org.graylog2.shared.rest.resources.RestResource;
import org.graylog2.rest.models.radio.requests.PingRequest;
import org.graylog2.rest.resources.system.radio.responses.RadioSummary;
import org.graylog2.rest.models.system.inputs.requests.RegisterInputRequest; import org.graylog2.rest.models.system.inputs.requests.RegisterInputRequest;
import org.graylog2.rest.resources.system.radio.responses.RadioSummary;
import org.graylog2.shared.rest.resources.RestResource;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;


Expand Down

0 comments on commit 7d22c4a

Please sign in to comment.