Skip to content
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

Allow identity of user attached to connection/agent to change in real time #6591

Closed
2 tasks done
korydraughn opened this issue Sep 13, 2022 · 1 comment
Closed
2 tasks done
Assignees
Milestone

Comments

@korydraughn
Copy link
Collaborator

korydraughn commented Sep 13, 2022

  • main
  • 4-3-stable

Feature

iRODS connections tie the identity of a user to the socket. This is fine for one-off commands, but not for situations where there can be hundreds to thousands of concurrent users. Creating a new connection for every user will quickly drain resources.

Therefore, iRODS should provide a way to change the user identity tied to the connection object. This would lead to huge improvements regarding performance, scalability, and resource management.

This would also improve support for client applications because the client libraries would finally be able to implement real connection pooling for iRODS connections.

Requirements

The only API requirement is ... switching the user tied to the connection object requires rodsadmin level privileges.

Challenges

The primary challenge with implementing this has to do with long running agents.

When an agent is forked, depending on the operation being carried out, the agent may choose to use the catalog or local memory. If information is fetched from local memory, then we run the risk of using out-of-date information. This situation applies to resource hierarchies, rule engine plugins, and likely other things.

So, to support this feature means iRODS must guarantee that long running agents see important changes. The question now becomes, when do iRODS agents sync with the catalog and how?

Other

Add support to the following libraries:

  • client_connection.hpp
  • connection_pool.hpp

Related issues: #5060

@korydraughn korydraughn added this to the 4.3.1 milestone Sep 13, 2022
@korydraughn korydraughn self-assigned this Sep 13, 2022
@korydraughn
Copy link
Collaborator Author

See PR #6593

korydraughn added a commit to korydraughn/irods that referenced this issue Nov 4, 2022
This plugin allows the identity tied to an RxComm to be changed in
real-time.

The primary goal of this API endpoint is to allow clients to implement
real connection pooling. This should improve performance, scalability,
and resource management for the client and the iRODS server.
alanking pushed a commit that referenced this issue Nov 4, 2022
This plugin allows the identity tied to an RxComm to be changed in
real-time.

The primary goal of this API endpoint is to allow clients to implement
real connection pooling. This should improve performance, scalability,
and resource management for the client and the iRODS server.
korydraughn added a commit to korydraughn/irods that referenced this issue Nov 4, 2022
This plugin allows the identity tied to an RxComm to be changed in
real-time.

The primary goal of this API endpoint is to allow clients to implement
real connection pooling. This should improve performance, scalability,
and resource management for the client and the iRODS server.
alanking pushed a commit that referenced this issue Nov 4, 2022
This plugin allows the identity tied to an RxComm to be changed in
real-time.

The primary goal of this API endpoint is to allow clients to implement
real connection pooling. This should improve performance, scalability,
and resource management for the client and the iRODS server.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

1 participant