[Bro-Dev] [JIRA] (BIT-1319) topic/jsiwek/broker
Jon Siwek (JIRA)
jira at bro-tracker.atlassian.net
Wed Mar 4 11:29:00 PST 2015
[ https://bro-tracker.atlassian.net/browse/BIT-1319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=19910#comment-19910 ]
Jon Siwek commented on BIT-1319:
--------------------------------
{quote}
Question: could we skip the queue of operations for sync operations? We'd tell people: "look, you can use this, but you might get inconsistent results in exchange for a less cumbersome interface". My guess is that often, it'll be good enough. So the sync store operations would always go directly to the local cache.
{quote}
Yes, should be possible to give these operations high priority when talking to a data store clone.
Another problem at the moment is that queries against a clone store will wait to be processed until the clone has performed an initial synchronization with the master store. Without doing that wait, it seems prone to a lot of bad results at startup. But it also means if you do a synchronous query and a corresponding master store just doesn't exist yet, you can still end up blocking for an indeterminate amount of time, possibly indefinitely. What should be the behavior/solution here?
* don't distinguish high priority queries from low-priority queries, but change blocking query API to require timeout parameters
* distinguish high-priority queries and they are still held up by the wait-for-initial-sync, but all methods in the blocking query API require a timeout parameter (this may make synchronous queries less affected by overload, but then maybe it opens up some starvation possibilities if one sends high-priority queries too often)
* high-priority (synchronous) queries bypass the wait-for-initial-sync, but low-priority (asynchronous) queries do not
* all queries bypass the wait-for-initial-sync, but updates/modifications wait for master to become available instead of just dropping them
* get rid of wait-for-initial-sync behavior entirely
The first option seems to have fewest drawbacks and may be least complex to implement. And you'd get a less cumbersome API in Bro for synchronous queries: you don't have to use a when statement, but do need to specify the maximum time you want to allow the call to block.
> topic/jsiwek/broker
> -------------------
>
> Key: BIT-1319
> URL: https://bro-tracker.atlassian.net/browse/BIT-1319
> Project: Bro Issue Tracker
> Issue Type: New Feature
> Components: Bro
> Reporter: Jon Siwek
> Assignee: Jon Siwek
> Fix For: 2.4
>
>
> The "topic/jsiwek/broker" branch is in the bro and cmake repos to add the initial support for Broker.
> Notes/Disclaimers/Caveats:
> - Bro has a --enable-broker configure flag.
> - requires actor-framework "develop" branch. When version 0.13 is out, I will put that as a requirement in the README and have CMake check for that.
> - no C bindings yet
> - no Python bindings yet
> - other than checking compilation that the new unit tests pass on Linux/FreeBSD/Mac, I've not done must extensive of testing, profiling, optimization etc.
--
This message was sent by Atlassian JIRA
(v6.4-OD-15-055#64014)
More information about the bro-dev
mailing list