lib/filbunke/client.rb in filbunke-2.1.3 vs lib/filbunke/client.rb in filbunke-2.1.4
- old
+ new
@@ -25,11 +25,20 @@
def with_updated_files(last_checkpoint)
updates = get_updated_file_list(last_checkpoint)
updated_files = updates["files"] || []
new_checkpoint = updates["checkpoint"]
if updated_files.empty?
- return last_checkpoint
+ if updates.key?("files")
+ return begin
+ fetch_remote_last_checkpoint
+ rescue => e
+ @logger.warn "Failed to fetch remote last_checkpoint #{@repository.name} will fall back to local last_checkpoint=#{last_checkpoint}"
+ last_checkpoint
+ end
+ else
+ return last_checkpoint
+ end
end
@logger.info "Updating repository: #{@repository.name}: #{updated_files.size} files. Checkpoint: #{last_checkpoint} ==> #{new_checkpoint}"
@async_requests = []
callbacks_on_update = []
@@ -148,10 +157,10 @@
raise "Failed to touch repository: #{@repository.name}"
end
end
end
- def last_checkpoint
+ def fetch_remote_last_checkpoint
last_checkpoint_http = Net::HTTP.new(@repository.host, @repository.port)
last_checkpoint_http.start do |http|
last_checkpoint_path = "/#{UPDATES_ACTION}/#{@repository.name}/#{LAST_CHECKPOINT_ACTION}"
request = Net::HTTP::Get.new(last_checkpoint_path)
response = http.request(request)