2020import static java .time .temporal .ChronoUnit .MILLIS ;
2121import static org .radarbase .connect .rest .util .ThrowingFunction .tryOrNull ;
2222
23+ import java .io .IOException ;
2324import java .lang .reflect .InvocationTargetException ;
2425import java .time .Instant ;
2526import java .util .ArrayList ;
2627import java .util .Collections ;
28+ import java .util .Iterator ;
2729import java .util .List ;
2830import java .util .Map ;
2931import java .util .Objects ;
@@ -63,8 +65,8 @@ public void start(Map<String, String> map) {
6365
6466 @ Override
6567 public List <SourceRecord > poll () throws InterruptedException {
66- LongAdder requestsGenerated = new LongAdder () ;
67- List <SourceRecord > requests ;
68+ long requestsGenerated = 0 ;
69+ List <SourceRecord > requests = Collections . emptyList () ;
6870
6971 do {
7072 long timeout = MILLIS .between (Instant .now (), requestGenerator .getTimeOfNextRequest ());
@@ -73,23 +75,27 @@ public List<SourceRecord> poll() throws InterruptedException {
7375 Thread .sleep (timeout );
7476 }
7577
76- requests = requestGenerator .requests ()
77- .sequential ()
78+ Iterator <? extends RestRequest > requestIterator = requestGenerator .requests ()
7879 .filter (RestRequest ::isStillValid )
79- .peek (r -> {
80- logger .info ("Requesting {}" , r .getRequest ().url ());
81- requestsGenerated .increment ();
82- })
83- .map (tryOrNull (RestRequest ::handleRequest ,
84- (r , ex ) -> logger .warn ("Failed to make request: {}" , ex .toString ())))
85- .filter (Objects ::nonNull )
86- .map (s -> s .collect (Collectors .toList ()))
87- .filter (l -> !l .isEmpty ())
88- .findFirst ()
89- .orElse (Collections .emptyList ());
80+ .iterator ();
81+
82+
83+ while (requests .isEmpty () && requestIterator .hasNext ()) {
84+ RestRequest request = requestIterator .next ();
85+
86+ logger .info ("Requesting {}" , request .getRequest ().url ());
87+ requestsGenerated ++;
88+
89+ try {
90+ requests = request .handleRequest ()
91+ .collect (Collectors .toList ());
92+ } catch (IOException ex ) {
93+ logger .warn ("Failed to make request: {}" , ex .toString ());
94+ }
95+ }
9096 } while (requests .isEmpty ());
9197
92- logger .info ("Processed {} records from {} URLs" , requests .size (), requestsGenerated . sum () );
98+ logger .info ("Processed {} records from {} URLs" , requests .size (), requestsGenerated );
9399
94100 return requests ;
95101 }
0 commit comments