Skip to content

download_file with ExAws.request! does not raise even though file was not downloaded completely #55

Open
@danielkirch

Description

@danielkirch

Environment

  • Elixir & Erlang versions (elixir --version):
    Elixir 1.6.4 (compiled with OTP 19)
  • ExAws version mix deps |grep ex_aws
    ex_aws 2.1.0
    ex_aws_s3 2.0.1
  • HTTP client version. IE for hackney do mix deps | grep hackney
    hackney 1.15.1

Current behavior

Sometimes, if you do

ExAws.S3.download_file(bucket, filename, tmp_file)
|> ExAws.request!

no error is raised even though the file has not been downloaded completely.

Expected behavior

It should raise an ExAws.Error.

We noticed this issue because we save our files with their hash as the filename and we check these hashes after downloading the file.

I think this is related to the :delayed_write option used in download.ex:66, see also https://hexdocs.pm/elixir/File.html#close/1 and http://erlang.org/doc/man/file.html#open-2 . It should be possible to fix this by checking that File.close actually returns :ok in download.ex:84.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions