Skip to content

Specify which data a CO can safely cache #71

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

Closed
akutz opened this issue Aug 9, 2017 · 3 comments
Closed

Specify which data a CO can safely cache #71

akutz opened this issue Aug 9, 2017 · 3 comments
Assignees
Milestone

Comments

@akutz
Copy link
Contributor

akutz commented Aug 9, 2017

Currently the spec does not specify whether or not a CO can safely cache certain data, such as a NodeID. It is important to know whether or not this information should be cached or should be obtained every time it is required. For example, because the NodeID is not a single-value, its data map could be used to transport Node host-level information to a Controller host, such as a list of local devices on the node host. However, if the NodeID is cached this value should not be used for general data transport.

Cache characteristics and expectations should be explicitly detailed for each piece of data returned by the CSI RPCs.

@saad-ali
Copy link
Member

saad-ali commented Nov 1, 2018

GetNodeId was replaced with NodeGetInfo. But this is still a valid issue.
We should define that the current fields in NodeGetInfo are immutable.
Wording for it may change across reinitialization needs to be decided.

@saad-ali saad-ali added this to the v1.0 milestone Nov 1, 2018
@jdef
Copy link
Member

jdef commented Nov 7, 2018

I'm having a bit of a hard time with this one. I thought I'd approach it by considering cases where the NodeID might reasonably change (even though COs don't want it to). For example, the plugin is uninstalled-then-reinstalled to the system. The CO isn't guaranteed to be the plugin supervisor, so it may not be aware of such a change - if the change is performed quickly, then the CO may think that the plugin has simply been restarted. Similarly, the backend storage provider may be reconfigured such that its no longer possible for the plugin to maintain the old NodeID (given that we want to support "stateless" plugins) since NodeID would be derived from the backend metadata.
Am I over-thinking this?

@saad-ali
Copy link
Member

saad-ali commented Nov 7, 2018

Options discussed with @jdef @jieyu @julian-hj:

  1. Treat these values as immutable until node restart.
  2. Treat these values as immutable until node plugin version is changed.
  3. Once CO calls NodeGetInfo, CO will expect these values to be immutable until the SP is decommissioned by the CO.
  4. CO SHOULD call NodeGetInfo at least once to initialize a node plugin, SP must assume that CO MAY not call NodeGetInfo more than once.

We agreed 4 is the least worst option, will go with that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants