# File lib/rubygems/source_info_cache_entry.rb, line 30
  def refresh(source_uri, all)
    begin
      marshal_uri = URI.join source_uri.to_s, "Marshal.#{Gem.marshal_version}"
      remote_size = Gem::RemoteFetcher.fetcher.fetch_size marshal_uri
    rescue Gem::RemoteSourceException
      yaml_uri = URI.join source_uri.to_s, 'yaml'
      remote_size = Gem::RemoteFetcher.fetcher.fetch_size yaml_uri
    end

    # TODO Use index_signature instead of size?
    return false if @size == remote_size and @all

    updated = @source_index.update source_uri, all
    @size = remote_size
    @all = all

    updated
  end