Coord resource throws NPE when segments are requested (#4759)

This commit is contained in:
Niketh Sabbineni 2017-10-02 10:13:27 -07:00 committed by Gian Merlino
parent ee7eaccbab
commit 3e9391433d

View File

@ -19,7 +19,6 @@
package io.druid.server.http; package io.druid.server.http;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@ -123,14 +122,7 @@ public class DatasourcesResource
Lists.newArrayList( Lists.newArrayList(
Iterables.transform( Iterables.transform(
datasources, datasources,
new Function<DruidDataSource, Map<String, Object>>() (DruidDataSource dataSource) -> makeSimpleDatasource(dataSource)
{
@Override
public Map<String, Object> apply(DruidDataSource dataSource)
{
return makeSimpleDatasource(dataSource);
}
}
) )
) )
).build(); ).build();
@ -140,14 +132,7 @@ public class DatasourcesResource
Lists.newArrayList( Lists.newArrayList(
Iterables.transform( Iterables.transform(
datasources, datasources,
new Function<DruidDataSource, String>() (DruidDataSource dataSource) -> dataSource.getName()
{
@Override
public String apply(DruidDataSource dataSource)
{
return dataSource.getName();
}
}
) )
) )
).build(); ).build();
@ -304,7 +289,10 @@ public class DatasourcesResource
} }
Pair<DataSegment, Set<String>> val = getSegment(dataSegment.getIdentifier()); Pair<DataSegment, Set<String>> val = getSegment(dataSegment.getIdentifier());
segments.put(dataSegment.getIdentifier(), ImmutableMap.of("metadata", val.lhs, "servers", val.rhs));
if (val != null) {
segments.put(dataSegment.getIdentifier(), ImmutableMap.of("metadata", val.lhs, "servers", val.rhs));
}
} }
return Response.ok(retVal).build(); return Response.ok(retVal).build();
@ -367,7 +355,10 @@ public class DatasourcesResource
} }
Pair<DataSegment, Set<String>> val = getSegment(dataSegment.getIdentifier()); Pair<DataSegment, Set<String>> val = getSegment(dataSegment.getIdentifier());
segments.put(dataSegment.getIdentifier(), ImmutableMap.of("metadata", val.lhs, "servers", val.rhs));
if (val != null) {
segments.put(dataSegment.getIdentifier(), ImmutableMap.of("metadata", val.lhs, "servers", val.rhs));
}
} }
} }
@ -427,14 +418,7 @@ public class DatasourcesResource
return builder.entity( return builder.entity(
Iterables.transform( Iterables.transform(
dataSource.getSegments(), dataSource.getSegments(),
new Function<DataSegment, Object>() (DataSegment segment) -> segment.getIdentifier()
{
@Override
public Object apply(DataSegment segment)
{
return segment.getIdentifier();
}
}
) )
).build(); ).build();
} }
@ -519,14 +503,7 @@ public class DatasourcesResource
Iterables.concat( Iterables.concat(
Iterables.transform( Iterables.transform(
serverInventoryView.getInventory(), serverInventoryView.getInventory(),
new Function<DruidServer, DruidDataSource>() (DruidServer input) -> input.getDataSource(dataSourceName)
{
@Override
public DruidDataSource apply(DruidServer input)
{
return input.getDataSource(dataSourceName);
}
}
) )
); );
@ -552,7 +529,7 @@ public class DatasourcesResource
return new DruidDataSource( return new DruidDataSource(
dataSourceName, dataSourceName,
ImmutableMap.<String, String>of() ImmutableMap.of()
).addSegments(segmentMap); ).addSegments(segmentMap);
} }
@ -672,28 +649,12 @@ public class DatasourcesResource
Iterable<TimelineObjectHolder<String, SegmentLoadInfo>> lookup = timeline.lookupWithIncompletePartitions(theInterval); Iterable<TimelineObjectHolder<String, SegmentLoadInfo>> lookup = timeline.lookupWithIncompletePartitions(theInterval);
FunctionalIterable<ImmutableSegmentLoadInfo> retval = FunctionalIterable FunctionalIterable<ImmutableSegmentLoadInfo> retval = FunctionalIterable
.create(lookup).transformCat( .create(lookup).transformCat(
new Function<TimelineObjectHolder<String, SegmentLoadInfo>, Iterable<ImmutableSegmentLoadInfo>>() (TimelineObjectHolder<String, SegmentLoadInfo> input) ->
{ Iterables.transform(
@Override
public Iterable<ImmutableSegmentLoadInfo> apply(
TimelineObjectHolder<String, SegmentLoadInfo> input
)
{
return Iterables.transform(
input.getObject(), input.getObject(),
new Function<PartitionChunk<SegmentLoadInfo>, ImmutableSegmentLoadInfo>() (PartitionChunk<SegmentLoadInfo> chunk) ->
{ chunk.getObject().toImmutableSegmentLoadInfo()
@Override )
public ImmutableSegmentLoadInfo apply(
PartitionChunk<SegmentLoadInfo> chunk
)
{
return chunk.getObject().toImmutableSegmentLoadInfo();
}
}
);
}
}
); );
return Response.ok(retval).build(); return Response.ok(retval).build();
} }