-
Notifications
You must be signed in to change notification settings - Fork 520
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
fix(server) Avoid duplicate registration of StoreEventListener #2620
base: master
Are you sure you want to change the base?
Changes from all commits
08a6052
e3377df
be42cd3
11b5be2
9a97f90
8c32404
889884f
0b4725f
ceba46c
b1ec955
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -105,7 +105,8 @@ private void listenChanges() { | |
} | ||
return false; | ||
}; | ||
this.graphParams().loadGraphStore().provider().listen(this.storeEventListener); | ||
this.graphParams().loadGraphStore().provider() | ||
.listenSchemaCacheClear(this.storeEventListener); | ||
|
||
// Listen cache event: "cache"(invalid cache item) | ||
this.cacheEventListener = event -> { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @imbajin can you share some context why we added CachedSchemaTransactionV2.java? not sure it's used in what scenarios, and can we merge V1+V2 into one class? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. CachedSchemaTransactionV2 is the CachedSchemaTransaction corresponding to the SchemaTransaction of the pd-store version. We added a V2 to distinguish it from the previous version. Due to the inconsistency of the parameters required for construction, it is currently not easy to reuse, will be merged later... |
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -67,6 +67,12 @@ public interface BackendStoreProvider { | |
|
||
void listen(EventListener listener); | ||
|
||
default void listenSchemaCacheClear(EventListener listener) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. prefer listenSchemaCacheAtMostOnce There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. thanks , you mean to update the method name to listenSchemaCacheAtMostOnce? |
||
} | ||
|
||
default void listenDataCacheClear(EventListener listener) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. prefer listenGraphCacheAtMostOnce |
||
} | ||
|
||
void unlisten(EventListener listener); | ||
|
||
EventHub storeEventHub(); | ||
|
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.
Sorry I have read the issue, but I still don't quite understand in what scenarios.the problem is encountered.
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.
simply put,i found that registering a listener for each transaction instance is redundant because each transaction receives events and then performs a clear operation on the schema/vertex/edge cache , i think that this is redundant.
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.
Note each provider has multiple listeners, which is our design intention, because each listener wants to get notifications.
This modification looks a bit special at the moment, and we will propose a solution after we figure out the problem. Could you post the error stack if there is an error?