mirror of https://github.com/apache/druid.git
Handle unparseable SupervisorSpec in metadata store (#14382)
Changes: - Skip a supervisor spec entry which cannot be deserialised into a `SupervisorSpec` object. - Log an error for the unparseable spec
This commit is contained in:
parent
1c76ebad3b
commit
66c3cc1391
|
@ -47,6 +47,7 @@ import org.skife.jdbi.v2.StatementContext;
|
||||||
import org.skife.jdbi.v2.tweak.HandleCallback;
|
import org.skife.jdbi.v2.tweak.HandleCallback;
|
||||||
import org.skife.jdbi.v2.tweak.ResultSetMapper;
|
import org.skife.jdbi.v2.tweak.ResultSetMapper;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
@ -244,6 +245,7 @@ public class SQLMetadataSupervisorManager implements MetadataSupervisorManager
|
||||||
).map(
|
).map(
|
||||||
new ResultSetMapper<Pair<String, SupervisorSpec>>()
|
new ResultSetMapper<Pair<String, SupervisorSpec>>()
|
||||||
{
|
{
|
||||||
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public Pair<String, SupervisorSpec> map(int index, ResultSet r, StatementContext ctx)
|
public Pair<String, SupervisorSpec> map(int index, ResultSet r, StatementContext ctx)
|
||||||
throws SQLException
|
throws SQLException
|
||||||
|
@ -259,7 +261,13 @@ public class SQLMetadataSupervisorManager implements MetadataSupervisorManager
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
throw new RuntimeException(e);
|
String exceptionMessage = StringUtils.format(
|
||||||
|
"Could not map json payload to a SupervisorSpec for spec_id: [%s]."
|
||||||
|
+ " Delete the supervisor from the database and re-submit it to the overlord.",
|
||||||
|
r.getString("spec_id")
|
||||||
|
);
|
||||||
|
log.error(e, exceptionMessage);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -276,7 +284,9 @@ public class SQLMetadataSupervisorManager implements MetadataSupervisorManager
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
retVal.put(stringObjectMap.lhs, stringObjectMap.rhs);
|
if (null != stringObjectMap) {
|
||||||
|
retVal.put(stringObjectMap.lhs, stringObjectMap.rhs);
|
||||||
|
}
|
||||||
return retVal;
|
return retVal;
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
|
|
|
@ -275,6 +275,9 @@ public class SQLMetadataSupervisorManagerTest
|
||||||
specs = allSpecs.get(supervisor2);
|
specs = allSpecs.get(supervisor2);
|
||||||
Assert.assertEquals(1, specs.size());
|
Assert.assertEquals(1, specs.size());
|
||||||
Assert.assertNull(specs.get(0).getSpec());
|
Assert.assertNull(specs.get(0).getSpec());
|
||||||
|
|
||||||
|
Map<String, SupervisorSpec> latestSupervisorSpec = supervisorManager.getLatest();
|
||||||
|
Assert.assertEquals(1, latestSupervisorSpec.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
Loading…
Reference in New Issue