Skip to content

Don't send tags object to Parse file adapter when no tags are set #7129

Closed

Description

@sarsonj

New Issue Checklist

Issue Description

We are using Digital Ocean Spaces for storing files. It is S3 compatible storage, so that we are using parse-server-s3-adapter. However, DO Spaces don't support all S3 features - one of unsupported are tags. In current version of parse-server-s3-adapter every upload fails. The problem is, that ParseFile contains tags object even when no tags are set.

Firstly, I proposed change in parse-server-s3-adapter adapter itself (see pull request parse-community/parse-server-s3-adapter#135), but after some discussion was raised question, if this should not be handled in ParseFile itself. I looked to code and by default ParseFile sets both metadata and tags to empty objects. In this case, s3 files adapter send those options to S3 as empty tags list.

Is there any reason why both tags and metadata are always empty objects and not undefined when not set? Maybe this is architectural decision, but files adapters handles case, when tags and metadata are undefined and in that case, they correctly don't set them.

Steps to reproduce

  1. configure Parse server with Digital ocean spaces as file storage
  2. try to upload - it fails
  3. try to remove code, that sets metadata in Parse File S3 adapter
  4. upload works

Actual Outcome

Current verson of Parse server don't work with Digital Ocean spaces

Expected Outcome

It should work with Digital Ocean Spaces

Server

  • Parse Server version: 4.5.0
  • Operating system: docker nodejs
  • Local or remote host (AWS, Azure, Google Cloud, Heroku, Digital Ocean, etc): Digital Ocean

Database

  • System (MongoDB or Postgres): Postgres

Client

  • SDK (iOS, Android, JavaScript, PHP, Unity, etc): CloudCode

Activity

  1. mtrezza commented on Jan 18, 2021

    @mtrezza
    Member

    Thanks for reporting.

    Can you please write a test case where the tags in Parse.File are not set but an empty tag object is created instead of undefined?

  2. added
    type:bugImpaired feature or lacking behavior that is likely assumed
    on Jan 19, 2021
  3. mtrezza commented on Jan 19, 2021

    @mtrezza
    Member

    I have classified this as a bug with severity 4:

    • Workaround: fork parse server s3 adapter and remove the tags parameter
    • Fix: change to not send the tag parameter if it is not set
  4. sarsonj commented on Jan 20, 2021

    @sarsonj
    Author

    @mtrezza I will prepare test and look on fix as well.

  5. alioguzhan commented on Mar 27, 2021

    @alioguzhan
    Contributor

    This is also a blocker for Linode Object Storage. I was able to make it work by downgrading the parse-server-s3-adapter to v1.4.0

  6. mtrezza commented on Mar 27, 2021

    @mtrezza
    Member

    Thanks for confirming, @alioguzhan. Would you want to make a PR to fix this?

  7. alioguzhan commented on Mar 27, 2021

    @alioguzhan
    Contributor

    Sure @mtrezza . If you provide me a little guidance by pointing the starting point, I can make a PR. AFAIK, this is occurring because the parse-server sends tags to the provider no matter what, even if it is not set.

  8. mtrezza commented on Mar 27, 2021

    @mtrezza
    Member

    That's correct. I suggest to read the original discussion that lead to the opening of this issue.

    The general approach would be to only set the tags property of a Parse.File, if the tags are actually set. Let me know if you need more details, and I can take a closer look at the code.

  9. mtrezza commented on Apr 2, 2021

    @mtrezza
    Member

    This should be fixed by #7300

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:bugImpaired feature or lacking behavior that is likely assumed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions