Skip to content

Commit

Permalink
Merge pull request #5304 from brong/cassandane-default-db
Browse files Browse the repository at this point in the history
Cassandane: use config for all DB types
  • Loading branch information
brong authored Feb 20, 2025
2 parents c22bbf5 + 77d6bf6 commit ada9926
Show file tree
Hide file tree
Showing 13 changed files with 86 additions and 44 deletions.
20 changes: 20 additions & 0 deletions cassandane/Cassandane/Config.pm
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,26 @@ sub default
debug => 'yes',
httpprettytelemetry => 'yes',

# from cyr_info conf-default | grep _db:
annotation_db => 'twoskip',
backup_db => 'twoskip',
conversations_db => 'skiplist',
duplicate_db => 'twoskip',
mboxkey_db => 'twoskip',
mboxlist_db => 'twoskip',
ptscache_db => 'twoskip',
quota_db => 'quotalegacy',
search_indexed_db => 'twoskip',
seenstate_db => 'twoskip',
sortcache_db => 'twoskip',
subscription_db => 'flat',
statuscache_db => 'twoskip',
sync_cache_db => 'twoskip',
tlscache_db => 'twoskip',
tls_sessions_db => 'twoskip',
userdeny_db => 'flat',
zoneinfo_db => 'twoskip',

# smtpclient_open should fail by default!
#
# If your test fails and writes something like
Expand Down
16 changes: 9 additions & 7 deletions cassandane/Cassandane/Cyrus/Conversations.pm
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,8 @@ sub test_upgrade

# nuke the version key
my $dirs = $self->{instance}->run_mbpath(-u => 'cassandane');
$self->{instance}->run_dbcommand($dirs->{user}{conversations}, 'twoskip', ['DELETE', '$VERSION']);
my $format = $self->{instance}->{config}->get('conversations_db');
$self->{instance}->run_dbcommand($dirs->{user}{conversations}, $format, ['DELETE', '$VERSION']);

xlog $self, "Upgrade with deleted VERSION should recalc";
$outfile = "$basedir/conv-output2.txt";
Expand Down Expand Up @@ -1190,8 +1191,9 @@ sub test_rename_between_users
my $res = $talk->status('INBOX.foo', ['mailboxid']);
my $fooid = $res->{'mailboxid'}->[0];

my %data = $self->{instance}->run_dbcommand($dirs->{user}{conversations}, 'twoskip', ['SHOW']);
my %mdata = $self->{instance}->run_dbcommand($mdirs->{user}{conversations}, 'twoskip', ['SHOW']);
my $format = $self->{instance}->{config}->get('conversations_db');
my %data = $self->{instance}->run_dbcommand($dirs->{user}{conversations}, $format, ['SHOW']);
my %mdata = $self->{instance}->run_dbcommand($mdirs->{user}{conversations}, $format, ['SHOW']);

my $folders = Cyrus::DList->parse_string($data{'$FOLDER_IDS'})->as_perl;
my $mfolders = Cyrus::DList->parse_string($mdata{'$FOLDER_IDS'})->as_perl;
Expand All @@ -1207,8 +1209,8 @@ sub test_rename_between_users
$self->{store}->set_folder("user.manifold.extra");
$self->make_message("Extra Msg");

%data = $self->{instance}->run_dbcommand($dirs->{user}{conversations}, 'twoskip', ['SHOW']);
%mdata = $self->{instance}->run_dbcommand($mdirs->{user}{conversations}, 'twoskip', ['SHOW']);
%data = $self->{instance}->run_dbcommand($dirs->{user}{conversations}, $format, ['SHOW']);
%mdata = $self->{instance}->run_dbcommand($mdirs->{user}{conversations}, $format, ['SHOW']);

$folders = Cyrus::DList->parse_string($data{'$FOLDER_IDS'})->as_perl;
$mfolders = Cyrus::DList->parse_string($mdata{'$FOLDER_IDS'})->as_perl;
Expand All @@ -1226,8 +1228,8 @@ sub test_rename_between_users

$talk->rename("user.manifold.foo", "INBOX.foo");

%data = $self->{instance}->run_dbcommand($dirs->{user}{conversations}, 'twoskip', ['SHOW']);
%mdata = $self->{instance}->run_dbcommand($mdirs->{user}{conversations}, 'twoskip', ['SHOW']);
%data = $self->{instance}->run_dbcommand($dirs->{user}{conversations}, $format, ['SHOW']);
%mdata = $self->{instance}->run_dbcommand($mdirs->{user}{conversations}, $format, ['SHOW']);
$folders = Cyrus::DList->parse_string($data{'$FOLDER_IDS'})->as_perl;
$mfolders = Cyrus::DList->parse_string($mdata{'$FOLDER_IDS'})->as_perl;
$self->assert_num_equals(4, scalar @$folders);
Expand Down
26 changes: 14 additions & 12 deletions cassandane/Cassandane/Cyrus/CyrusDB.pm
Original file line number Diff line number Diff line change
Expand Up @@ -147,22 +147,23 @@ sub test_recover_uniqueid_from_header_legacymb
# lose that uniqueid from mailboxes.db
my $I = "I$uniqueid";
my $N = "Nuser\x1fcassandane";
$self->{instance}->run_dbcommand($mailboxes_db, "twoskip",
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_dbcommand($mailboxes_db, $format,
[ 'DELETE', $I ]);
my (undef, $mbentry) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $N]);
my $dlist = Cyrus::DList->parse_string($mbentry);
my $hash = $dlist->as_perl();
$self->assert_str_equals($uniqueid, $hash->{I});
$hash->{I} = undef;
$dlist = Cyrus::DList->new_perl('', $hash);
$self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
[ 'SET', $N, $dlist->as_string() ]);

my %updated = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip", ['SHOW']);
$mailboxes_db, $format, ['SHOW']);
xlog "updated mailboxes.db: " . Dumper \%updated;

# bring service back up
Expand Down Expand Up @@ -190,15 +191,15 @@ sub test_recover_uniqueid_from_header_legacymb

# mbentry should have the same uniqueid as before
(undef, $mbentry) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $N]);
$dlist = Cyrus::DList->parse_string($mbentry);
$hash = $dlist->as_perl();
$self->assert_str_equals($uniqueid, $hash->{I});

# $I entry should be back
my ($key, $value) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $I]);
$self->assert_str_equals($I, $key);
$dlist = Cyrus::DList->parse_string($value);
Expand Down Expand Up @@ -235,22 +236,23 @@ sub test_recover_create_missing_uniqueid_legacymb
# lose that uniqueid from mailboxes.db
my $I = "I$uniqueid";
my $N = "Nuser\x1fcassandane";
$self->{instance}->run_dbcommand($mailboxes_db, "twoskip",
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_dbcommand($mailboxes_db, $format,
[ 'DELETE', $I ]);
my (undef, $mbentry) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $N]);
my $dlist = Cyrus::DList->parse_string($mbentry);
my $hash = $dlist->as_perl();
$self->assert_str_equals($uniqueid, $hash->{I});
$hash->{I} = undef;
$dlist = Cyrus::DList->new_perl('', $hash);
$self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
[ 'SET', $N, $dlist->as_string() ]);

my %updated = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip", ['SHOW']);
$mailboxes_db, $format, ['SHOW']);
xlog "updated mailboxes.db: " . Dumper \%updated;

# lose it from cyrus.header too
Expand Down Expand Up @@ -298,7 +300,7 @@ sub test_recover_create_missing_uniqueid_legacymb

# mbentry should have the new uniqueid
(undef, $mbentry) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $N]);
$dlist = Cyrus::DList->parse_string($mbentry);
$hash = $dlist->as_perl();
Expand All @@ -307,7 +309,7 @@ sub test_recover_create_missing_uniqueid_legacymb
# new runq entry should exist
my $newI = "I$newuniqueid";
my ($key, $value) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $newI]);
$self->assert_str_equals($newI, $key);
$dlist = Cyrus::DList->parse_string($value);
Expand Down
6 changes: 4 additions & 2 deletions cassandane/Cassandane/Cyrus/HTTPPTS.pm
Original file line number Diff line number Diff line change
Expand Up @@ -263,11 +263,12 @@ sub test_list_groupaccess_racl
$self->assert_num_not_equals($precounters->{raclmodseq}, $postcounters->{raclmodseq}, "RACL modseq changed");

if (get_verbose()) {
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_command(
{ cyrus => 1, },
'cyr_dbtool',
"$self->{instance}->{basedir}/conf/mailboxes.db",
'twoskip',
$format,
'show'
);
}
Expand Down Expand Up @@ -327,11 +328,12 @@ sub do_test_list_order
}

if (get_verbose()) {
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_command(
{ cyrus => 1, },
'cyr_dbtool',
"$self->{instance}->{basedir}/conf/mailboxes.db",
'twoskip',
$format,
'show'
);
}
Expand Down
8 changes: 8 additions & 0 deletions cassandane/Cassandane/Cyrus/Info.pm
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,10 @@ sub test_conf
}
}

# remove _db: values which are same as default, but coded in
# so that we'll have them in the config
delete $imapd_conf{$_} for grep { not $cyr_info_conf{$_} } grep { m/_db$/ } keys %imapd_conf;

$self->assert_deep_equals(\%imapd_conf, \%cyr_info_conf);
}

Expand Down Expand Up @@ -178,6 +182,7 @@ sub test_lint
xlog $self, "test 'cyr_info conf-lint' in the simplest case";

my @output = $self->{instance}->run_cyr_info('conf-lint');
@output = grep { !m/_db: / } @output; # skip database types
$self->assert_deep_equals([], \@output);
}

Expand All @@ -193,6 +198,7 @@ sub test_lint_junk
xlog $self, "test 'cyr_info conf-lint' with junk in the config";

my @output = $self->{instance}->run_cyr_info('conf-lint');
@output = grep { !m/_db: / } @output; # skip database types
$self->assert_deep_equals(["trust_fund: street art\n"], \@output);
}

Expand All @@ -213,6 +219,7 @@ sub test_lint_channels
xlog $self, "test 'cyr_info conf-lint' with channel-specific sync config";

my @output = $self->{instance}->run_cyr_info('conf-lint');
@output = grep { !m/_db: / } @output; # skip database types

$self->assert_deep_equals(
[ sort(
Expand Down Expand Up @@ -249,6 +256,7 @@ sub test_lint_partitions
xlog $self, "test 'cyr_info conf-lint' with partitions configured";

my @output = $self->{instance}->run_cyr_info('conf-lint');
@output = grep { !m/_db: / } @output; # skip database types

$self->assert_deep_equals(
[ sort(
Expand Down
6 changes: 4 additions & 2 deletions cassandane/Cassandane/Cyrus/LDAP.pm
Original file line number Diff line number Diff line change
Expand Up @@ -240,11 +240,12 @@ sub test_list_groupaccess_racl
$self->assert_num_not_equals($precounters->{raclmodseq}, $postcounters->{raclmodseq}, "RACL modseq changed");

if (get_verbose()) {
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_command(
{ cyrus => 1, },
'cyr_dbtool',
"$self->{instance}->{basedir}/conf/mailboxes.db",
'twoskip',
$format,
'show'
);
}
Expand Down Expand Up @@ -303,11 +304,12 @@ sub do_test_list_order
}

if (get_verbose()) {
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_command(
{ cyrus => 1, },
'cyr_dbtool',
"$self->{instance}->{basedir}/conf/mailboxes.db",
'twoskip',
$format,
'show'
);
}
Expand Down
6 changes: 4 additions & 2 deletions cassandane/Cassandane/Cyrus/Mboxgroups.pm
Original file line number Diff line number Diff line change
Expand Up @@ -208,11 +208,12 @@ sub test_list_groupaccess_racl
$admintalk->get_last_completion_response());

if (get_verbose()) {
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_command(
{ cyrus => 1, },
'cyr_dbtool',
"$self->{instance}->{basedir}/conf/mailboxes.db",
'twoskip',
$format,
'show'
);
}
Expand Down Expand Up @@ -271,11 +272,12 @@ sub do_test_list_order
}

if (get_verbose()) {
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_command(
{ cyrus => 1, },
'cyr_dbtool',
"$self->{instance}->{basedir}/conf/mailboxes.db",
'twoskip',
$format,
'show'
);
}
Expand Down
1 change: 0 additions & 1 deletion cassandane/Cassandane/Cyrus/Metadata.pm
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@ sub list_annotations
}

my $format = $instance->{config}->get('annotation_db');
$format = $format // 'twoskip';

my @annots;

Expand Down
26 changes: 14 additions & 12 deletions cassandane/Cassandane/Cyrus/Reconstruct.pm
Original file line number Diff line number Diff line change
Expand Up @@ -417,22 +417,23 @@ sub test_reconstruct_uniqueid_from_header_path_uuidmb
# lose that uniqueid from mailboxes.db
my $I = "I$uniqueid";
my $N = "Nuser\x1fcassandane";
$self->{instance}->run_dbcommand($mailboxes_db, "twoskip",
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_dbcommand($mailboxes_db, $format,
[ 'DELETE', $I ]);
my (undef, $mbentry) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $N]);
my $dlist = Cyrus::DList->parse_string($mbentry);
my $hash = $dlist->as_perl();
$self->assert_str_equals($uniqueid, $hash->{I});
$hash->{I} = undef;
$dlist = Cyrus::DList->new_perl('', $hash);
$self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
[ 'SET', $N, $dlist->as_string() ]);

my %updated = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip", ['SHOW']);
$mailboxes_db, $format, ['SHOW']);
xlog "updated mailboxes.db: " . Dumper \%updated;

# lose it from cyrus.header too
Expand Down Expand Up @@ -468,15 +469,15 @@ sub test_reconstruct_uniqueid_from_header_path_uuidmb

# mbentry should have the same uniqueid as before
(undef, $mbentry) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $N]);
$dlist = Cyrus::DList->parse_string($mbentry);
$hash = $dlist->as_perl();
$self->assert_str_equals($uniqueid, $hash->{I});

# $I entry should be back
my ($key, $value) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $I]);
$self->assert_str_equals($I, $key);
$dlist = Cyrus::DList->parse_string($value);
Expand Down Expand Up @@ -518,22 +519,23 @@ sub test_reconstruct_uniqueid_from_header_uuidmb
# lose that uniqueid from mailboxes.db
my $I = "I$uniqueid";
my $N = "Nuser\x1fcassandane";
$self->{instance}->run_dbcommand($mailboxes_db, "twoskip",
my $format = $self->{instance}->{config}->get('mboxlist_db');
$self->{instance}->run_dbcommand($mailboxes_db, $format,
[ 'DELETE', $I ]);
my (undef, $mbentry) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $N]);
my $dlist = Cyrus::DList->parse_string($mbentry);
my $hash = $dlist->as_perl();
$self->assert_str_equals($uniqueid, $hash->{I});
$hash->{I} = undef;
$dlist = Cyrus::DList->new_perl('', $hash);
$self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
[ 'SET', $N, $dlist->as_string() ]);

my %updated = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip", ['SHOW']);
$mailboxes_db, $format, ['SHOW']);
xlog "updated mailboxes.db: " . Dumper \%updated;

# reconstruct -P should find and fix the missing uniqueid
Expand Down Expand Up @@ -562,15 +564,15 @@ sub test_reconstruct_uniqueid_from_header_uuidmb

# mbentry should have the same uniqueid as before
(undef, $mbentry) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $N]);
$dlist = Cyrus::DList->parse_string($mbentry);
$hash = $dlist->as_perl();
$self->assert_str_equals($uniqueid, $hash->{I});

# $I entry should be back
my ($key, $value) = $self->{instance}->run_dbcommand(
$mailboxes_db, "twoskip",
$mailboxes_db, $format,
['SHOW', $I]);
$self->assert_str_equals($I, $key);
$dlist = Cyrus::DList->parse_string($value);
Expand Down
Loading

0 comments on commit ada9926

Please sign in to comment.