From 9de803fb7a5b0f76f3d22612268c770765a86738 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 27 Apr 2018 11:02:35 -0400 Subject: [PATCH] item controller: remove all synchronous fetching --- .../http/service/item/ItemController.java | 56 ++++++------------- 1 file changed, 16 insertions(+), 40 deletions(-) diff --git a/http-service/src/main/java/net/runelite/http/service/item/ItemController.java b/http-service/src/main/java/net/runelite/http/service/item/ItemController.java index 0e02c8ce11..f064cf22b1 100644 --- a/http-service/src/main/java/net/runelite/http/service/item/ItemController.java +++ b/http-service/src/main/java/net/runelite/http/service/item/ItemController.java @@ -73,17 +73,10 @@ public class ItemController ItemEntry item = itemService.getItem(itemId); if (item != null) { - response.setHeader(RUNELITE_CACHE, "HIT"); - return item.toItem(); - } - - item = itemService.fetchItem(itemId); - if (item != null) - { - response.setHeader(RUNELITE_CACHE, "MISS"); return item.toItem(); } + itemService.queueItem(itemId); return null; } @@ -127,7 +120,6 @@ public class ItemController } Instant now = Instant.now(); - boolean hit = true; if (time != null && time.isAfter(now)) { @@ -137,16 +129,11 @@ public class ItemController ItemEntry item = itemService.getItem(itemId); if (item == null) { - item = itemService.fetchItem(itemId); - hit = false; - - if (item == null) - { - cachedEmpty.put(itemId, itemId); - return ResponseEntity.notFound() - .header(RUNELITE_CACHE, "MISS") - .build(); - } + itemService.queueItem(itemId); // queue lookup + cachedEmpty.put(itemId, itemId); // cache empty + return ResponseEntity.notFound() + .header(RUNELITE_CACHE, "MISS") + .build(); } PriceEntry priceEntry = itemService.getPrice(itemId, time); @@ -164,28 +151,18 @@ public class ItemController else if (priceEntry == null) { // Price is unknown - List prices = itemService.fetchPrice(itemId); - - if (prices == null || prices.isEmpty()) - { - cachedEmpty.put(itemId, itemId); - return ResponseEntity.notFound() - .header(RUNELITE_CACHE, "MISS") - .build(); - } - - // Get the most recent price - priceEntry = prices.get(prices.size() - 1); - hit = false; + itemService.queuePriceLookup(itemId); // queue lookup + cachedEmpty.put(itemId, itemId); + return ResponseEntity.notFound() + .header(RUNELITE_CACHE, "MISS") + .build(); } - else + + Instant cacheTime = now.minus(CACHE_DUATION); + if (priceEntry.getFetched_time().isBefore(cacheTime)) { - Instant cacheTime = now.minus(CACHE_DUATION); - if (priceEntry.getFetched_time().isBefore(cacheTime)) - { - // Queue a check for the price - itemService.queuePriceLookup(itemId); - } + // Queue a check for the price + itemService.queuePriceLookup(itemId); } ItemPrice itemPrice = new ItemPrice(); @@ -194,7 +171,6 @@ public class ItemController itemPrice.setTime(priceEntry.getTime()); return ResponseEntity.ok() - .header(RUNELITE_CACHE, hit ? "HIT" : "MISS") .cacheControl(CacheControl.maxAge(30, TimeUnit.MINUTES).cachePublic()) .body(itemPrice); }