    # 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