mirror of
https://github.com/zeek/zeek.git
synced 2025-10-06 08:38:20 +00:00
Merge remote-tracking branch 'origin/topic/johanna/table-changes'
* origin/topic/johanna/table-changes: (26 commits) TableSync: try to make test more robust & add debug output Increase timeouts to see if FreeBSD will be happy with this. Try to make FreeBSD test happy with larger timeout. TableSync: refactor common functionality into function TableSync: don't raise &on_change, smaller fixes TableSync: rename auto_store -> table_store SyncTables: address feedback part 1 - naming (broker and zeek) BrokerStore <-> Zeek Tables: cleanup and bug workaround Zeek Table<->Brokerstore: cleanup, documentation, small fixes BrokerStore<->Zeek table: adopt to recent Zeek API changes BrokerStore<->Zeek Tables Fix a few small test failures. BrokerStore<->Zeek tables: allow setting storage location & tests BrokerStore<->Zeek tables: &backend works for in-memory stores. BrokerStore<->Zeek table - introdude &backend attribute BrokerStore<->Zeek tables: test for clones synchronizing to a master BrokerStore<->Zeek tables: load persistent tables on startup. Brokerstore<->Tables: attribute conflicts Zeek/Brokerstore updates: expiration Zeek/Brokerstore updates: add test that includes updates from clones Zeek/Brokerstore updates: first working end-to-end test ...
This commit is contained in:
commit
c3f4971eb2
50 changed files with 2290 additions and 78 deletions
|
@ -49,5 +49,7 @@ redef Broker::log_topic = Cluster::rr_log_topic;
|
|||
@load ./nodes/worker
|
||||
@endif
|
||||
|
||||
@load ./broker-stores.zeek
|
||||
|
||||
@endif
|
||||
@endif
|
||||
|
|
61
scripts/base/frameworks/cluster/broker-stores.zeek
Normal file
61
scripts/base/frameworks/cluster/broker-stores.zeek
Normal file
|
@ -0,0 +1,61 @@
|
|||
##! This script deals with the cluster parts of Broker backed Zeek tables.
|
||||
##! It makes sure that the master store is set correctly and that clones
|
||||
##! are automatically created on the non-manager nodes.
|
||||
|
||||
# Note - this script should become unnecessary in the future, when we just can
|
||||
# speculatively attach clones. This should be possible once the new ALM Broker
|
||||
# transport becomes available.
|
||||
|
||||
@load ./main
|
||||
|
||||
module Broker;
|
||||
|
||||
export {
|
||||
## Event that is used by the manager to announce the master stores for Broker backed
|
||||
## tables.
|
||||
global announce_masters: event(masters: set[string]);
|
||||
}
|
||||
|
||||
# If we are not the manager, disable automatically generating masters. We will attach
|
||||
# clones instead.
|
||||
@if ( Cluster::is_enabled() && Cluster::local_node_type() != Cluster::MANAGER )
|
||||
redef Broker::table_store_master = F;
|
||||
@endif
|
||||
|
||||
@if ( Broker::table_store_master )
|
||||
|
||||
global broker_backed_ids: set[string];
|
||||
|
||||
event zeek_init()
|
||||
{
|
||||
local globals = global_ids();
|
||||
for ( id in globals )
|
||||
{
|
||||
if ( globals[id]$broker_backend )
|
||||
add broker_backed_ids[id];
|
||||
}
|
||||
}
|
||||
|
||||
# Send the auto masters we created to the newly connected node
|
||||
event Broker::peer_added(endpoint: Broker::EndpointInfo, msg: string) &priority=1
|
||||
{
|
||||
if ( ! Cluster::is_enabled() )
|
||||
return;
|
||||
|
||||
local e = Broker::make_event(Broker::announce_masters, broker_backed_ids);
|
||||
Broker::publish(Cluster::nodeid_topic(endpoint$id), e);
|
||||
}
|
||||
|
||||
@else
|
||||
|
||||
event Broker::announce_masters(masters: set[string])
|
||||
{
|
||||
for ( i in masters )
|
||||
{
|
||||
# this magic name for the store is created in broker/Manager.cc for the manager.
|
||||
local name = "___sync_store_" + i;
|
||||
Broker::create_clone(name);
|
||||
}
|
||||
}
|
||||
|
||||
@endif
|
Loading…
Add table
Add a link
Reference in a new issue