separate ingestion and query thread pool#1929
separate ingestion and query thread pool#1929drcrallen merged 1 commit intoapache:masterfrom pjain1:jetty_threads
Conversation
There was a problem hiding this comment.
That's awesome, the power of annotations
There was a problem hiding this comment.
👍 thanks to @cheddar for showing how to do this
|
@xvrl @drcrallen took care of comments. Using consecutive ports for jetty servers. |
There was a problem hiding this comment.
These three properties are used to create DruidNode object annotated with RemoteChatHandler at ServiceAnnouncingChatHandlerProvider and getServer method of ChatHandlerServerModule. However, while announcement of the event receiver firehose the service name provided during registration is used and the 'serviceName' property which is specified here is ignored. Thus, it is not consumed anywhere, it is just there so that object creation does not fail.
There was a problem hiding this comment.
If that's so can you make it something that won't register as a valid ZK path? also please add a comment as to why it is set, and where the property actually gets taken from.
I'd hate for some change to happen later to the chat handler and have this passively create new ZK nodes without intending to, all because we forgot it was here.
There was a problem hiding this comment.
actually I don't think I can change it somehow so that it does not register as valid ZKPath as if the peon were to somehow use this serviceName, it will just take the String as it is and try to announce it. What can be done here as you suggested to change the name to something like placeholderServiceName and add a comment form where the actual serviceName will be taken ?
There was a problem hiding this comment.
Nice, thanks. Should have thought about it, anyways done
There was a problem hiding this comment.
wait...it may not help as serviceName is not a path because all the "/" are replaced to ":" and the resultant String is used to announce the service..let me double check
There was a problem hiding this comment.
I checked putting invalid path as serviceName will not help, makeCanonicalServiceName method in CuratorServiceUtils class replaces all "" with ":"
However I have put another character \u0001 (invalid for zk) in the String and it will fail if this name is used. Also I have added some UTs for ServiceAnnouncer to test the behavior. Please review.
There was a problem hiding this comment.
I ran integration tests with this change and actually even the deserialization of DruidNode failed when the peon process starts with exception - com.fasterxml.jackson.core.JsonParseException: Illegal unquoted character ((CTRL-CHAR, code 1)): has to be escaped using backslash to be included in string value
So I think it is just better to have only comment there explaining this name would be ignored and not do anything smart.
|
Cool, 👍 after travis |
closing/reopening again for travis |
|
@drcrallen travis is happy |
|
@xvrl any more comments ? |
|
Transient failure - I have refactored this test in #1679 and I think it should solve this transient error |
There was a problem hiding this comment.
@NotNull is probably not helping as boolean can never be null anyway
|
👍 |
separate ingestion and query thread pool
When the ingestion and query rate for a realtime index task using the event receiver firehose is quite high, then having different thread pools for handling ingestion and querying will be quite useful. The separation will be useful in case ingestion and querying takes a while to respond for example deserializing sketch objects during ingestion or responding to a slow query. Thus, the ingestion cannot not block queries and vice-versa as they can be tuned independently.