feeds with http errors now bypass update queue

This commit is contained in:
Athou
2013-05-27 16:58:02 +02:00
parent b6c331f067
commit 0b4682444f

View File

@@ -85,19 +85,15 @@ public class FeedRefreshWorker {
private void update(Feed feed) { private void update(Feed feed) {
FetchedFeed fetchedFeed = null;
List<FeedEntry> entries = null;
String message = null;
int errorCount = 0;
Date disabledUntil = null;
try { try {
fetchedFeed = fetcher.fetch(feed.getUrl(), false, FetchedFeed fetchedFeed = fetcher.fetch(feed.getUrl(), false,
feed.getLastModifiedHeader(), feed.getEtagHeader()); feed.getLastModifiedHeader(), feed.getEtagHeader());
// stops here if NotModifiedException or any other exception is // stops here if NotModifiedException or any other exception is
// thrown // thrown
entries = fetchedFeed.getEntries(); List<FeedEntry> entries = fetchedFeed.getEntries();
Date disabledUntil = null;
if (applicationSettingsService.get().isHeavyLoad()) { if (applicationSettingsService.get().isHeavyLoad()) {
disabledUntil = FeedUtils.buildDisabledUntil( disabledUntil = FeedUtils.buildDisabledUntil(
fetchedFeed.getPublishedDate(), entries); fetchedFeed.getPublishedDate(), entries);
@@ -109,7 +105,12 @@ public class FeedRefreshWorker {
.getLastModifiedHeader()); .getLastModifiedHeader());
feed.setEtagHeader(fetchedFeed.getFeed().getEtagHeader()); feed.setEtagHeader(fetchedFeed.getFeed().getEtagHeader());
feed.setErrorCount(0);
feed.setMessage(null);
feed.setDisabledUntil(disabledUntil);
handlePubSub(feed, fetchedFeed); handlePubSub(feed, fetchedFeed);
feedRefreshUpdater.updateFeed(feed, entries);
} catch (NotModifiedException e) { } catch (NotModifiedException e) {
log.debug("Feed not modified (304) : " + feed.getUrl()); log.debug("Feed not modified (304) : " + feed.getUrl());
@@ -121,9 +122,8 @@ public class FeedRefreshWorker {
feed.setDisabledUntil(FeedUtils.buildDisabledUntil(publishedDate, feed.setDisabledUntil(FeedUtils.buildDisabledUntil(publishedDate,
feedEntries)); feedEntries));
taskGiver.giveBack(feed); taskGiver.giveBack(feed);
return;
} catch (Exception e) { } catch (Exception e) {
message = "Unable to refresh feed " + feed.getUrl() + " : " String message = "Unable to refresh feed " + feed.getUrl() + " : "
+ e.getMessage(); + e.getMessage();
if (e instanceof FeedException) { if (e instanceof FeedException) {
log.debug(e.getClass().getName() + " " + message); log.debug(e.getClass().getName() + " " + message);
@@ -131,16 +131,13 @@ public class FeedRefreshWorker {
log.debug(e.getClass().getName() + " " + message); log.debug(e.getClass().getName() + " " + message);
} }
errorCount = feed.getErrorCount() + 1; feed.setErrorCount(feed.getErrorCount() + 1);
disabledUntil = FeedUtils.buildDisabledUntil(errorCount); feed.setMessage(message);
feed.setDisabledUntil(FeedUtils.buildDisabledUntil(feed
.getErrorCount()));
taskGiver.giveBack(feed);
} }
feed.setErrorCount(errorCount);
feed.setMessage(message);
feed.setDisabledUntil(disabledUntil);
feedRefreshUpdater.updateFeed(feed, entries);
} }
private void handlePubSub(Feed feed, FetchedFeed fetchedFeed) { private void handlePubSub(Feed feed, FetchedFeed fetchedFeed) {