GithubHelp home page GithubHelp logo

Comments (2)

briantist avatar briantist commented on June 16, 2024

@mshonichev thank you again for such a detailed report, I really appreciate it.

For my own reference, here's where the 2400 character limit is described:


I'm glad the second upstream in ansible.cfg has worked so far.

I'll think on how to address this issue, perhaps with short and long-term options.

Probably the first thing I'm going to change is separating out parts of the collection info into separate properties; at least, the pieces that glactory itself needs. It's not a full solution necessarily in that a single property could still end up > 2400 chars, but that would be an even more extreme edge case. This is a breaking change, but it has an advantage of making native Artifactory searches more useful by adding more individual properties that could be used in searches.

A safe but messy approach is splitting collection info into multiple properties by length, essentially paginating it within the artifactory properties. This would be backward compatible with existing uploaded collections, though it wouldn't fix existing broken collections, which should be ok since they can be deleted and re-uploaded or re-proxied. Feels ugly though...

from galactory.

mshonichev avatar mshonichev commented on June 16, 2024

I did not realise that Galactory uses Artifactory as a search engine aside to storage backend. That's actually pretty cool.
But yeah, if all we need is a lookup by name / version, storing whole blob in props is a bit awkward.

IMO, splitting props to pages is cringe. It adds a whole lot of cases when meta changes - e.g. authors added/removed.

Here, suppose we need to find a collection by its author.
Let's break down backend storage in two layers, first is meta storage layer, second is actual collection tar.gz storage layer.

A first layer might be smth like

   _props/
      by_author/
        j.doe.json
        b.nigh.json
        ....

each individual <author.json> has props set to author name and email, so we can lookup by jf rt s query.
And contents of json is a list of collection references, e.g.

 [
   {
    'theforeman.foreman': {'3.15.0': '/actual/path/to/collection/3.15.tar.gz'}
   }
]

So, to get the actual archive out of search results you'll need a second query.

It would too hit hard on corner cases to support such a structure, but at least it could be introduced without b/w compatibility break.

Remember, that 'broken' collection with bloated meta was never actually uploaded, so 'broken' props need no fix.

We just start up a whole new life aside, adding a few new search capabilities, and all previously uploaded files need no rehaul.

from galactory.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.