4040import com .navercorp .pinpoint .web .applicationmap .rawdata .LinkDataDuplexMap ;
4141import com .navercorp .pinpoint .web .security .ServerMapDataFilter ;
4242import com .navercorp .pinpoint .web .service .ServerInstanceDatasourceService ;
43+ import com .navercorp .pinpoint .web .vo .Application ;
4344import com .navercorp .pinpoint .web .vo .SearchOption ;
4445import org .apache .logging .log4j .LogManager ;
4546import org .apache .logging .log4j .Logger ;
@@ -126,7 +127,7 @@ public ApplicationMap selectApplicationMap(MapServiceOption option) {
126127 ApplicationMapBuilder builder = createApplicationMapBuilder (option );
127128 ApplicationMap map = builder .build (linkDataDuplexMap , buildTimeoutMillis );
128129 if (map .getNodes ().isEmpty ()) {
129- map = builder . build (option .getSourceApplication (), buildTimeoutMillis );
130+ map = buildForNoRequest (option .getSourceApplication (), builder );
130131 }
131132 watch .stop ();
132133 if (logger .isInfoEnabled ()) {
@@ -138,19 +139,25 @@ public ApplicationMap selectApplicationMap(MapServiceOption option) {
138139 return map ;
139140 }
140141
142+ private ApplicationMap buildForNoRequest (Application source , ApplicationMapBuilder builder ) {
143+ // If no nodes are found, we still need to build the map with the source application.
144+ builder .includeServerInfo (newServerGroupListFactory (false ));
145+ return builder .build (source , buildTimeoutMillis );
146+ }
147+
141148 private ApplicationMapBuilder createApplicationMapBuilder (MapServiceOption option ) {
142149 ApplicationMapBuilder builder = applicationMapBuilderFactory .createApplicationMapBuilder (option .getTimeWindow ());
143150
144- final NodeHistogramFactory nodeHistogramFactory = newNodeHistogramFactory (option );
151+ final NodeHistogramFactory nodeHistogramFactory = newNodeHistogramFactory (option . isSimpleResponseHistogram () );
145152 builder .includeNodeHistogram (nodeHistogramFactory );
146153
147- final ServerGroupListFactory serverGroupListFactory = newServerGroupListFactory (option );
154+ final ServerGroupListFactory serverGroupListFactory = newServerGroupListFactory (option . isUseStatisticsAgentState () );
148155 builder .includeServerInfo (serverGroupListFactory );
149156 return builder ;
150157 }
151158
152- private NodeHistogramFactory newNodeHistogramFactory (MapServiceOption option ) {
153- if (option . isSimpleResponseHistogram () ) {
159+ private NodeHistogramFactory newNodeHistogramFactory (boolean isSimpleResponseHistogram ) {
160+ if (isSimpleResponseHistogram ) {
154161 WasNodeHistogramDataSource dataSource = new MapResponseSimplifiedNodeHistogramDataSource (mapResponseDao );
155162 return new SimplifiedNodeHistogramFactory (dataSource );
156163 } else {
@@ -159,9 +166,9 @@ private NodeHistogramFactory newNodeHistogramFactory(MapServiceOption option) {
159166 }
160167 }
161168
162- private ServerGroupListFactory newServerGroupListFactory (MapServiceOption option ) {
169+ private ServerGroupListFactory newServerGroupListFactory (boolean isUseStatisticsAgentState ) {
163170 ServerGroupListDataSource serverGroupListDataSource = serverInstanceDatasourceService .getServerGroupListDataSource ();
164- if (option . isUseStatisticsAgentState () ) {
171+ if (isUseStatisticsAgentState ) {
165172 return new StatisticsServerGroupListFactory (serverGroupListDataSource );
166173 } else {
167174 return new DefaultServerGroupListFactory (serverGroupListDataSource );
0 commit comments