-
Notifications
You must be signed in to change notification settings - Fork 406
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Improvement] Add a generic lock mechanism in Graviton #143
Comments
@yuqi1129 can you please check this issue, is it necessary to fix, and how to achieve this? |
Got |
I think we need to split this issue into two:
Frist oneTo support transactions between inner operation and outer operation, Firstly, we need to confirm that
If we can confirm the above two points, we can implement this feature. Second oneFor the second one, To support global lock between different graviton instances, we may need to introduce a new component to support this feature. For example,
But centralized distributed locks are not very good for our case, As it should be deployed globally or distributed over the globe, it may introduce a lot of network latencies. |
This is dup of #407 |
What would you like to be improved?
Currently, we lack the lock mechanism in Graviton, which will potentially make some operations inconsistent, for example:
alterTable
operation will load the table first and update to the underlying storage.Currently, The code will potentially be in race condition, we should have a way to fix this issue.
How should we improve?
We may need to have a lock mechanism to solve this problem. Also, be aware that the lock mechanism should consider that we may have multiple Graviton services, so a process-level lock may not be enough.
Besides, currently we rely on a transaction mechanism to achieve this, it might be an issue for some storage systems like fdb (it has a short transaction timeout requirement). For some operations like Hive operations, it might take a long time to get the results.
The text was updated successfully, but these errors were encountered: