{"action":"created","issue":{"url":"https://api.github.com/repos/msiebuhr/ucs/issues/11","repository_url":"https://api.github.com/repos/msiebuhr/ucs","labels_url":"https://api.github.com/repos/msiebuhr/ucs/issues/11/labels{/name}","comments_url":"https://api.github.com/repos/msiebuhr/ucs/issues/11/comments","events_url":"https://api.github.com/repos/msiebuhr/ucs/issues/11/events","html_url":"https://github.com/msiebuhr/ucs/issues/11","id":372358197,"node_id":"MDU6SXNzdWUzNzIzNTgxOTc=","number":11,"title":"Add namespacing","user":{"login":"msiebuhr","id":330611,"node_id":"MDQ6VXNlcjMzMDYxMQ==","avatar_url":"https://avatars2.githubusercontent.com/u/330611?v=4","gravatar_id":"","url":"https://api.github.com/users/msiebuhr","html_url":"https://github.com/msiebuhr","followers_url":"https://api.github.com/users/msiebuhr/followers","following_url":"https://api.github.com/users/msiebuhr/following{/other_user}","gists_url":"https://api.github.com/users/msiebuhr/gists{/gist_id}","starred_url":"https://api.github.com/users/msiebuhr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/msiebuhr/subscriptions","organizations_url":"https://api.github.com/users/msiebuhr/orgs","repos_url":"https://api.github.com/users/msiebuhr/repos","events_url":"https://api.github.com/users/msiebuhr/events{/privacy}","received_events_url":"https://api.github.com/users/msiebuhr/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-10-21T21:20:00Z","updated_at":"2018-10-24T15:54:03Z","closed_at":null,"author_association":"OWNER","body":"It is generally sane to use a separate cache-server per project (and Unity version - [citation needed]).\r\n\r\nInstead of the currently required way of running a process per cache-server, we should add name-spacing, so the same cache-server can serve many different ports from the same cache (and keep them from poisoning each other).\r\n\r\n * PRO: We'd have simpler server-administration.\r\n * PRO: Shared GC. Old stuff from inactive builds would be discarded sooner.\r\n * CON: Single point of failure.\r\n * CON: Old projects will be wiped, making re-builds potentially very slow.\r\n\r\nPractically speaking, I think it'd be done with running it as\r\n\r\n    ucs -ns project-one:8125 -ns project-two:8127 ...\r\n\r\nor\r\n\r\n    ucs -listen project-one:8125,project-two:8127,...\r\n\r\nInternally, the server would either communicate namespaces with parameters or through known context variables - and then start up multiple `ucs.Server` with the same back-end attached.\r\n\r\nFor the file-system back-end, I think the folder structure should be something along the lines of\r\n\r\n    $BASEDIR/<namespace>/UU/UUID-HASH.type"},"comment":{"url":"https://api.github.com/repos/msiebuhr/ucs/issues/comments/432716384","html_url":"https://github.com/msiebuhr/ucs/issues/11#issuecomment-432716384","issue_url":"https://api.github.com/repos/msiebuhr/ucs/issues/11","id":432716384,"node_id":"MDEyOklzc3VlQ29tbWVudDQzMjcxNjM4NA==","user":{"login":"stephen-palmer","id":5185334,"node_id":"MDQ6VXNlcjUxODUzMzQ=","avatar_url":"https://avatars0.githubusercontent.com/u/5185334?v=4","gravatar_id":"","url":"https://api.github.com/users/stephen-palmer","html_url":"https://github.com/stephen-palmer","followers_url":"https://api.github.com/users/stephen-palmer/followers","following_url":"https://api.github.com/users/stephen-palmer/following{/other_user}","gists_url":"https://api.github.com/users/stephen-palmer/gists{/gist_id}","starred_url":"https://api.github.com/users/stephen-palmer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stephen-palmer/subscriptions","organizations_url":"https://api.github.com/users/stephen-palmer/orgs","repos_url":"https://api.github.com/users/stephen-palmer/repos","events_url":"https://api.github.com/users/stephen-palmer/events{/privacy}","received_events_url":"https://api.github.com/users/stephen-palmer/received_events","type":"User","site_admin":false},"created_at":"2018-10-24T15:54:03Z","updated_at":"2018-10-24T15:54:03Z","author_association":"NONE","body":"I have proposed namespacing internally, but it's unlikely to be implemented mainly because development effort is focused on the next iteration of the asset database, which also includes a more sophisticated cache server. The big sticking point is there is no identifiable data coming from the client (Editor) in order to act on, so it would require a change to Unity and backporting in order to make it useful to anyone that currently needs it.\r\n\r\nAt the end of the day, though, namespacing would just be a band-aid to the root problem of asset importers changing without version increments that would otherwise force hashes to change. We need to improve testing around the importers to ensure versions are incremented when changes are introduced that will cause outputs to differ from previous versions.\r\n\r\nIf running multiple cache servers is not practical in your environment, and especially if you have a larg(ish) team, my other suggestion would be to run a single cache server with High Reliability mode enabled, with a reliabilityThreshold of at least 2. This will ensure that data is stable across multiple imports of the same asset before the cache server will propagate a particular asset version to other clients."}}
{"actor":{"display_login":"stephen-palmer"}}