-
Notifications
You must be signed in to change notification settings - Fork 201
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 schema caching per server when using a common base schema #1224
base: 8.x-4.x
Are you sure you want to change the base?
Conversation
See #1223 for initial notes |
I'm sorry, I went to try and create a test to demonstrate this but it's completely beyond me. |
Ok, now this PR contains a potential fix using a setter on the plugin to provide the server ID. We could probably also do it by putting another key on the configuration that gets passed to the plugin but this seemed safer to me. |
Alright I give up. The last test failure is a conflict between PHPStan and phpcs PHPStan:
phpcs:
|
Co-authored-by: Alexander Varwijk <[email protected]>
Co-authored-by: Alexander Varwijk <[email protected]>
/** | ||
* {@inheritdoc} | ||
*/ | ||
public function setServerId(string $serverId): void { | ||
$this->serverId = $serverId; | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of using a setter to configure the server ID, I'm wondering if it wouldn't be better to make the plugin configurable by implementing ConfigurableInterface
. In fact, both schema plugins we ship are already configurable (but the base class SdlSchemaPluginBase
isn't, and changing this would be a B/C break).
$cid = "schema:{$this->getPluginId()}"; | ||
$cid = "server:{$this->serverId}:schema:{$this->getPluginId()}"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This assumes that the setter has always been called, but it might not have been, and $this->serverId
might be NULL
.
Probably using a setter is not the best approach. Since the server ID is required for the plugin to work in the current it is essential that the setter is always called. The setter is not part of the SchemaPluginInterface
and it also should not be, since it is not essential for all schema plugins, only for the ones that use caching.
Maybe we can add a server_name
key to the standard plugin configuration and check that this is populated in the plugin constructor? That would also enable us to gracefully introduce this change. We can emit a deprecation warning if it is missing.
I am NOT by any means suggesting this at the fix approach, it merely shows where the problem lies so a discussion can be had regarding how to fix it.Updated to a viable patch, though there are other ways we could approach it.