private <T> T doIndexTask(IndexTask<T> task, T defaultValue) { assert Thread.holdsLock(this); if (!isBroken) { try { return task.doTask(); } catch (Exception e1) { MavenLog.LOG.warn(e1); cleanupBrokenData(); try { open(); } catch (MavenIndexException e2) { MavenLog.LOG.warn(e2); } } } markAsBroken(); return defaultValue; }
@Test public void testIndexTaskSerde() throws Exception { final IndexTask task = new IndexTask( null, null, new IndexTask.IndexIngestionSpec( new DataSchema( "foo", null, new AggregatorFactory[] {new DoubleSumAggregatorFactory("met", "met")}, new UniformGranularitySpec( Granularity.DAY, null, ImmutableList.of(new Interval("2010-01-01/P2D"))), jsonMapper), new IndexTask.IndexIOConfig( new LocalFirehoseFactory(new File("lol"), "rofl", null)), new IndexTask.IndexTuningConfig(10000, 10, -1, indexSpec, null)), jsonMapper, null); final String json = jsonMapper.writeValueAsString(task); Thread.sleep(100); // Just want to run the clock a bit to make sure the task id doesn't change final IndexTask task2 = (IndexTask) jsonMapper.readValue(json, Task.class); Assert.assertEquals("foo", task.getDataSource()); Assert.assertEquals(new Interval("2010-01-01/P2D"), task.getInterval()); Assert.assertEquals(task.getId(), task2.getId()); Assert.assertEquals(task.getGroupId(), task2.getGroupId()); Assert.assertEquals(task.getDataSource(), task2.getDataSource()); Assert.assertEquals(task.getInterval(), task2.getInterval()); Assert.assertTrue( task.getIngestionSchema().getIOConfig().getFirehoseFactory() instanceof LocalFirehoseFactory); Assert.assertTrue( task2.getIngestionSchema().getIOConfig().getFirehoseFactory() instanceof LocalFirehoseFactory); }