[
https://issues.apache.org/jira/browse/DRILL-7871?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17381707#comment-17381707
]
ASF GitHub Bot commented on DRILL-7871:
---------------------------------------
paul-rogers commented on pull request #2251:
URL: https://github.com/apache/drill/pull/2251#issuecomment-881151197
Hi @vdiravka,
Thanks for the note, you make good points. Let's see where we can
compromise. Let's start with options.
It makes no sense for users to have their own system options (my favorite
example is the length of the global, shared query queue.) So, `SYSTEM` options
can't be per-user. This means that the `SYSTEM` level has to remain as it is.
We can cut corners: still allow users to change system options, we just ignore
those values. (For example, IIRC, the query queue, the value is taken from the
`SYSTEM` options; we ignore `SESSION` values.) That is, we just trust that user
ignorance will prevent them from breaking things; they won't know about the
system options.
If we have any form of user-property persistence, then we have to worry
about race conditions. I don't see how we can ignore that issue unless we are
strict and we say that user options are read once: when the user starts a
session. If I change `all-text-mode` in session 1, it will not affect session
2. This seems reasonable for the "toy" use cases where Drill is now used.
That is, when a session starts, we set the session options to the saved
per-user values from the persistent store. A nice result is that, at runtime,
there is no difference between user and session options. This fact should save
some work.
The user has to be able to set the user options. We don't need a new option
level. Simply add a new statement: `ALTER USER SET <name>=<value>`. This would
do two things:
1. Write the given key/value pair into the persistent store for the user.
2. Change the session option in the current session to that new value.
Again, we let the user change anything they want; we rely on the fact that
users will only care about one or two options, and only when someone suggests a
change.
The above is simple, but limited. The limits are no worse than today. It
seems we could extend the feature in the future without breaking anything. (For
example, broadcast user option changes to all sessions. Apply security to
system options. Etc.)
Then, we simply ignore the issue that the options users care about are
associated with queries (all the Parquet, JSON, and other options that affect
reader behavior.) We simply decide to be surprised when the user encounters
those issues. User: "Gee, I set the `all-text-mode` option and my queries run
file. But, when Bob runs them, they fail...". Our answer: "have Bob change the
same option" This may break Bob's own queries, so we have Bob change the option
back. This is a horrible user experience, but is the same as what Drill offers
today, so we're not breaking anything.
Will this work?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
> StoragePluginStore instances for different users
> ------------------------------------------------
>
> Key: DRILL-7871
> URL: https://issues.apache.org/jira/browse/DRILL-7871
> Project: Apache Drill
> Issue Type: New Feature
> Components: Security
> Affects Versions: 1.18.0
> Reporter: Vitalii Diravka
> Assignee: Vitalii Diravka
> Priority: Major
>
> Different users should have their own storage plugin configs to have access
> to own storages only. The feature can be based on Drill User Impersonation
> model
--
This message was sent by Atlassian Jira
(v8.3.4#803005)