From 20f55587cbc7956deb86d4538d2143964bcde36c Mon Sep 17 00:00:00 2001 From: Alexander Dejanovski Date: Mon, 30 Oct 2017 15:13:04 +0100 Subject: [PATCH] Fix issue with upgrades on postgres and h2 when coming from pre-0.8 versions --- .../postgresql/RepairRunStatusMapper.java | 18 +++++++++++++++--- .../postgresql/RepairScheduleStatusMapper.java | 15 ++++++++++++--- .../storage/postgresql/RepairUnitMapper.java | 15 ++++++++++++--- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairRunStatusMapper.java b/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairRunStatusMapper.java index 92165f3ed..701dcb173 100644 --- a/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairRunStatusMapper.java +++ b/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairRunStatusMapper.java @@ -54,11 +54,23 @@ public RepairRunStatus map(int index, ResultSet rs, StatementContext ctx) throws RepairParallelism repairParallelism = RepairParallelism.fromName( rs.getString("repair_parallelism").toLowerCase().replace("datacenter_aware", "dc_parallel")); - Collection nodes = ImmutableSet.copyOf(getStringArray(rs.getArray("nodes").getArray())); + Collection nodes = + ImmutableSet.copyOf( + rs.getArray("nodes") == null + ? new String[] {} + : getStringArray(rs.getArray("nodes").getArray())); Collection datacenters = - ImmutableSet.copyOf(getStringArray(rs.getArray("datacenters").getArray())); + ImmutableSet.copyOf( + getStringArray( + rs.getArray("datacenters") == null + ? new String[] {} + : rs.getArray("datacenters").getArray())); Collection blacklistedTables = - ImmutableSet.copyOf(getStringArray(rs.getArray("blacklisted_tables").getArray())); + ImmutableSet.copyOf( + getStringArray( + rs.getArray("blacklisted_tables") == null + ? new String[] {} + : rs.getArray("blacklisted_tables").getArray())); return new RepairRunStatus( UuidUtil.fromSequenceId(runId), diff --git a/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairScheduleStatusMapper.java b/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairScheduleStatusMapper.java index 170deeeab..b67bb1946 100644 --- a/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairScheduleStatusMapper.java +++ b/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairScheduleStatusMapper.java @@ -50,9 +50,18 @@ public RepairScheduleStatus map(int index, ResultSet rs, StatementContext ctx) t .toLowerCase() .replace("datacenter_aware", "dc_parallel")), rs.getInt("days_between"), - ImmutableSet.copyOf(getStringArray(rs.getArray("nodes").getArray())), - ImmutableSet.copyOf(getStringArray(rs.getArray("datacenters").getArray())), - ImmutableSet.copyOf(getStringArray(rs.getArray("blacklisted_tables").getArray())), + ImmutableSet.copyOf( + rs.getArray("nodes") == null + ? new String[] {} + : getStringArray(rs.getArray("nodes").getArray())), + ImmutableSet.copyOf( + rs.getArray("datacenters") == null + ? new String[] {} + : getStringArray(rs.getArray("datacenters").getArray())), + ImmutableSet.copyOf( + rs.getArray("blacklisted_tables") == null + ? new String[] {} + : getStringArray(rs.getArray("blacklisted_tables").getArray())), rs.getInt("segment_count_per_node")); } diff --git a/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairUnitMapper.java b/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairUnitMapper.java index 70459b473..7a9f39c85 100644 --- a/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairUnitMapper.java +++ b/src/server/src/main/java/io/cassandrareaper/storage/postgresql/RepairUnitMapper.java @@ -30,9 +30,18 @@ public final class RepairUnitMapper implements ResultSetMapper { public RepairUnit map(int index, ResultSet rs, StatementContext ctx) throws SQLException { String[] columnFamilies = parseStringArray(rs.getArray("column_families").getArray()); - String[] nodes = parseStringArray(rs.getArray("nodes").getArray()); - String[] datacenters = parseStringArray(rs.getArray("datacenters").getArray()); - String[] blacklistedTables = parseStringArray(rs.getArray("blacklisted_tables").getArray()); + String[] nodes = + rs.getArray("nodes") == null + ? new String[] {} + : parseStringArray(rs.getArray("nodes").getArray()); + String[] datacenters = + rs.getArray("datacenters") == null + ? new String[] {} + : parseStringArray(rs.getArray("datacenters").getArray()); + String[] blacklistedTables = + rs.getArray("blacklisted_tables") == null + ? new String[] {} + : parseStringArray(rs.getArray("blacklisted_tables").getArray()); RepairUnit.Builder builder = new RepairUnit.Builder(