Comments (2)
Fixed in 0.20
from atomic-server.
This problem might come back.
I've fixed it for the default store by adding the populate_base_models
function, which adds some core models (some Properties, like shortname
and description
. This is necessary to prevent a loop where Property X (like the shortname
Property) cannot be added, because it's Property Y (like description
) has to be fetched before it can be added, which in turn has property Property X (shortname
) which needs to be fetched before.
I'm afraid this could happen again, for example when a user defined two Properties that have each other as properties. Not sure when this would happen, but it seems possible. A malicious actor might freeze a server by doing this.
Some approaches to preventing / limiting this problem:
Throw error instead of looping forever
What currently happens, is that the calls stack becomes too large, and the app crashes. But is there a way to know if one of the last fetches was.. itself?
Perhaps... We could have a get_property_stack
vector in the store
struct, which contains the URLs of the last two Subjects that were retrieved. When get_property
is called and in turn needs to fetch the resource, we add one URL to it.
Limit the properties on Property instances
If we simply constrain which kinds of properties are allowed on Properties, we could achieve the same effect.
But this would get ugly pretty fast. get_property
might need a custom fetch
function, which parses only the required props and ignores the rest... etc. Hmm.
from atomic-server.
Related Issues (20)
- Dockerfile CI fails, outdated rust compiler HOT 5
- CI: test docker build before deploying
- Allow adjusting domain / server_url without running --initialize
- Auto tag docker images with versions, not just latest
- Remove `tpf` from `atomic-cli`
- URLs in search queries for filtering broken HOT 1
- Order dependence in imports - Class and Property definitions need to be defined first HOT 2
- Rebuild index async on boot
- build_index run twice on atomic-server boot
- Dockerfile broken `exec /atomic-server-bin: no such file or directory` HOT 1
- musl build for cross-platform docker images HOT 4
- Advanced CMS features tracking issue
- Refactor `for_agent` / clear up API usage HOT 1
- Check for unused dependencies in ci
- Importer should error if multiple resources with the same Local-id are imported
- Plugin parameters - as Properties instead of urls?
- Outreach / messaging / community engagement features tracking issue
- Rebrand repo to atomic-server
- Update swagger / openapi spec
- Bearer token support HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from atomic-server.