Skip to content

Commit

Permalink
Replace ClusterRun with RepairRunStatus
Browse files Browse the repository at this point in the history
  • Loading branch information
Bj0rnen committed Mar 15, 2015
1 parent 9a6bb2c commit a7649b8
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 153 deletions.
29 changes: 8 additions & 21 deletions src/main/java/com/spotify/reaper/resources/ClusterResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,11 @@

import com.google.common.base.Optional;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.datatype.joda.JodaModule;
import com.spotify.reaper.AppContext;
import com.spotify.reaper.ReaperException;
import com.spotify.reaper.cassandra.JmxProxy;
import com.spotify.reaper.core.Cluster;
import com.spotify.reaper.resources.view.ClusterRun;
import com.spotify.reaper.resources.view.RepairRunStatus;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -81,27 +77,18 @@ public Response getCluster(

private Response viewCluster(String clusterName, Optional<Integer> limit,
Optional<URI> createdURI) {
Collection<ClusterRun> view = context.storage.getClusterRunOverview(clusterName, limit.or(10));
Collection<RepairRunStatus> view =
context.storage.getClusterRunStatuses(clusterName, limit.or(10));

if (view == null) {
return Response.status(Response.Status.NOT_FOUND)
.entity("cluster with name \"" + clusterName + "\" not found").build();
} else if (createdURI.isPresent()) {
return Response.created(createdURI.get())
.entity(view).build();
} else {
ObjectMapper objectMapper = new ObjectMapper()
.setPropertyNamingStrategy(
PropertyNamingStrategy.CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES)
.registerModule(new JodaModule());
try {
if (createdURI.isPresent()) {
return Response.created(createdURI.get())
.entity(objectMapper.writeValueAsString(view)).build();
} else {
return Response.ok()
.entity(objectMapper.writeValueAsString(view)).build();
}
} catch (JsonProcessingException e) {
return Response.serverError().entity("JSON processing failed").build();
}
return Response.ok()
.entity(view).build();
}
}

Expand Down
111 changes: 0 additions & 111 deletions src/main/java/com/spotify/reaper/resources/view/ClusterRun.java

This file was deleted.

4 changes: 2 additions & 2 deletions src/main/java/com/spotify/reaper/storage/IStorage.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.spotify.reaper.core.RepairSchedule;
import com.spotify.reaper.core.RepairSegment;
import com.spotify.reaper.core.RepairUnit;
import com.spotify.reaper.resources.view.ClusterRun;
import com.spotify.reaper.resources.view.RepairRunStatus;
import com.spotify.reaper.service.RingRange;

import java.util.Collection;
Expand Down Expand Up @@ -125,5 +125,5 @@ Optional<RepairUnit> getRepairUnit(String cluster, String keyspace,
*/
Optional<RepairSchedule> deleteRepairSchedule(long id);

Collection<ClusterRun> getClusterRunOverview(String clusterName, int limit);
Collection<RepairRunStatus> getClusterRunStatuses(String clusterName, int limit);
}
24 changes: 11 additions & 13 deletions src/main/java/com/spotify/reaper/storage/MemoryStorage.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import com.spotify.reaper.core.RepairSchedule;
import com.spotify.reaper.core.RepairSegment;
import com.spotify.reaper.core.RepairUnit;
import com.spotify.reaper.resources.view.ClusterRun;
import com.spotify.reaper.resources.view.RepairRunStatus;
import com.spotify.reaper.service.RingRange;

import java.util.ArrayList;
Expand Down Expand Up @@ -377,27 +377,25 @@ public Optional<RepairSchedule> deleteRepairSchedule(long id) {
}

@Override
public Collection<ClusterRun> getClusterRunOverview(String clusterName, int limit) {
public Collection<RepairRunStatus> getClusterRunStatuses(String clusterName, int limit) {
Optional<Cluster> cluster = getCluster(clusterName);
if (!cluster.isPresent()) {
return null;
} else {
List<ClusterRun> clusterRuns = Lists.newArrayList();
Collection<RepairRun> runs = getRepairRunsForCluster(clusterName);
for (RepairRun run : runs) {
List<RepairRunStatus> runStatuses = Lists.newArrayList();
for (RepairRun run : getRepairRunsForCluster(clusterName)) {
RepairUnit unit = getRepairUnit(run.getRepairUnitId()).get();
String[] tables =
unit.getColumnFamilies().toArray(new String[unit.getColumnFamilies().size()]);
int segmentsRepaired =
getSegmentAmountForRepairRunWithState(run.getId(), RepairSegment.State.DONE);
int totalSegments = getSegmentAmountForRepairRun(run.getId());
clusterRuns.add(new ClusterRun(
run.getId(), clusterName, unit.getKeyspaceName(),
tables, segmentsRepaired, totalSegments,
run.getRunState(), run.getStartTime(), run.getEndTime(), run.getCause(),
run.getOwner(), run.getLastEvent()));
runStatuses.add(new RepairRunStatus(
run.getId(), clusterName, unit.getKeyspaceName(), unit.getColumnFamilies(),
segmentsRepaired, totalSegments, run.getRunState(), run.getStartTime(),
run.getEndTime(), run.getCause(), run.getOwner(), run.getLastEvent(),
run.getCreationTime(), run.getPauseTime(), run.getIntensity(),
run.getRepairParallelism()));
}
return clusterRuns;
return runStatuses;
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/spotify/reaper/storage/PostgresStorage.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
import com.spotify.reaper.core.RepairSchedule;
import com.spotify.reaper.core.RepairSegment;
import com.spotify.reaper.core.RepairUnit;
import com.spotify.reaper.resources.view.ClusterRun;
import com.spotify.reaper.resources.view.RepairRunStatus;
import com.spotify.reaper.service.RingRange;
import com.spotify.reaper.storage.postgresql.BigIntegerArgumentFactory;
import com.spotify.reaper.storage.postgresql.IStoragePostgreSQL;
Expand Down Expand Up @@ -457,7 +457,7 @@ public Optional<RepairSchedule> deleteRepairSchedule(long id) {
return Optional.fromNullable(result);
}

public Collection<ClusterRun> getClusterRunOverview(String clusterName, int limit) {
public Collection<RepairRunStatus> getClusterRunStatuses(String clusterName, int limit) {
try (Handle h = jdbi.open()) {
return getPostgresStorage(h).getClusterRunOverview(clusterName, limit);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
import com.spotify.reaper.core.RepairSchedule;
import com.spotify.reaper.core.RepairSegment;
import com.spotify.reaper.core.RepairUnit;
import com.spotify.reaper.resources.view.ClusterRun;
import com.spotify.reaper.resources.view.RepairRunStatus;

import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
Expand Down Expand Up @@ -175,7 +175,8 @@ public interface IStoragePostgreSQL {
static final String SQL_CLUSTER_RUN_OVERVIEW =
"SELECT repair_run.id, repair_unit.cluster_name, keyspace_name, column_families, "
+ "COUNT(repair_segment.id), segment_count, repair_run.state, repair_run.start_time, "
+ "repair_run.end_time, cause, owner, last_event\n"
+ "repair_run.end_time, cause, owner, last_event, "
+ "creation_time, pause_time, intensity, repair_parallelism\n"
+ "FROM repair_run "
+ "JOIN repair_segment ON run_id = repair_run.id "
+ "JOIN repair_unit ON repair_run.repair_unit_id = repair_unit.id\n"
Expand Down Expand Up @@ -320,8 +321,8 @@ int getSegmentAmountForRepairRunWithState(


@SqlQuery(SQL_CLUSTER_RUN_OVERVIEW)
@Mapper(ClusterRun.Mapper.class)
List<ClusterRun> getClusterRunOverview(
@Mapper(RepairRunStatusMapper.class)
List<RepairRunStatus> getClusterRunOverview(
@Bind("clusterName") String clusterName,
@Bind("limit") int limit);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.spotify.reaper.storage.postgresql;

import com.google.common.collect.ImmutableSet;

import com.spotify.reaper.core.RepairRun;
import com.spotify.reaper.resources.view.RepairRunStatus;

import org.apache.cassandra.repair.RepairParallelism;
import org.joda.time.DateTime;
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;

public class RepairRunStatusMapper implements ResultSetMapper<RepairRunStatus> {

@Override
public RepairRunStatus map(int index, ResultSet r, StatementContext ctx) throws SQLException {
long runId = r.getLong("id");
String clusterName = r.getString("cluster_name");
String keyspaceName = r.getString("keyspace_name");
Collection<String> columnFamilies =
ImmutableSet.copyOf((String[]) r.getArray("column_families").getArray());
int segmentsRepaired = (int)r.getLong("count");
int totalSegments = r.getInt("segment_count");
RepairRun.RunState state = RepairRun.RunState.valueOf(r.getString("state"));
DateTime startTime = RepairRunMapper.getDateTimeOrNull(r, "start_time");
DateTime endTime = RepairRunMapper.getDateTimeOrNull(r, "end_time");
String cause = r.getString("cause");
String owner = r.getString("owner");
String lastEvent = r.getString("last_event");
DateTime creationTime = RepairRunMapper.getDateTimeOrNull(r, "creation_time");
DateTime pauseTime = RepairRunMapper.getDateTimeOrNull(r, "pause_time");
Double intensity = r.getDouble("intensity");
RepairParallelism repairParallelism =
RepairParallelism.valueOf(r.getString("repair_parallelism"));
return new RepairRunStatus(runId, clusterName, keyspaceName, columnFamilies, segmentsRepaired,
totalSegments, state, startTime, endTime, cause, owner, lastEvent,
creationTime, pauseTime, intensity, repairParallelism);
}
}

0 comments on commit a7649b8

Please sign in to comment.