Skip to content
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

Issue 6430 - implement read-only bdb #6431

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,13 @@ jobs:
sudo docker exec $CID sh -c "systemctl enable --now cockpit.socket"
sudo docker exec $CID sh -c "mkdir -p /workspace/assets/cores && chmod 777 /workspace{,/assets{,/cores}}"
sudo docker exec $CID sh -c "echo '/workspace/assets/cores/core.%e.%P' > /proc/sys/kernel/core_pattern"
sudo docker exec -e WEBUI=1 -e NSSLAPD_DB_LIB=bdb -e DEBUG=pw:api -e PASSWD="${PASSWD}" $CID py.test --suppress-no-test-exit-code -m "not flaky" --junit-xml=pytest.xml --html=pytest.html --browser=firefox --browser=chromium -v dirsrvtests/tests/suites/${{ matrix.suite }}
if sudo docker exec $CID sh -c "test -f /usr/lib64/dirsrv/librobdb.so"
then
echo "Tests skipped because read-only Berkeley Database is installed." > pytest.html
echo "<?xml version="1.0" encoding="utf-8"?>'Tests skipped because read-only Berkeley Database is installed.'" > pytest.xml
else
sudo docker exec -e WEBUI=1 -e NSSLAPD_DB_LIB=bdb -e DEBUG=pw:api -e PASSWD="${PASSWD}" $CID py.test --suppress-no-test-exit-code -m "not flaky" --junit-xml=pytest.xml --html=pytest.html --browser=firefox --browser=chromium -v dirsrvtests/tests/suites/${{ matrix.suite }}
fi

- name: Make the results file readable by all
if: always()
Expand Down
72 changes: 58 additions & 14 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,9 @@ else
DS_DEFINES = -DBUILD_NUM=$(BUILDNUM) -DVENDOR="\"$(vendor)\"" -DBRAND="\"$(brand)\"" -DCAPBRAND="\"$(capbrand)\"" \
-UPACKAGE_VERSION -UPACKAGE_TARNAME -UPACKAGE_STRING -UPACKAGE_BUGREPORT
endif
if WITH_LIBBDB_RO
DS_DEFINES += -DWITH_LIBBDB_RO=1
endif
DS_INCLUDES = -I$(srcdir)/ldap/include -I$(srcdir)/ldap/servers/slapd -I$(srcdir)/include -I.


Expand Down Expand Up @@ -184,11 +187,15 @@ endif
ldaplib = @ldaplib@
ldaplib_defs = @ldaplib_defs@

if WITH_LIBBDB_RO
DB_LINK = @db_lib@ -llmdb
else
if BUNDLE_LIBDB
DB_LINK = -llmdb
else
DB_LINK = @db_lib@ -ldb-@db_libver@ -llmdb
endif
endif
DB_INC = @db_inc@
DB_IMPL = libback-ldbm.la
SASL_LINK = $(SASL_LIBS)
Expand Down Expand Up @@ -326,6 +333,9 @@ bin_PROGRAMS = dbscan \
# ----------------------------------------------------------------------------------------

server_LTLIBRARIES = libslapd.la libldaputil.la libns-dshttpd.la librewriters.la
if WITH_LIBBDB_RO
server_LTLIBRARIES += librobdb.la
endif

lib_LTLIBRARIES = libsvrcore.la

Expand Down Expand Up @@ -1196,19 +1206,26 @@ libslapd_la_LDFLAGS = $(AM_LDFLAGS) $(SLAPD_LDFLAGS)
# libback-bdb
#------------------------
DB_BDB_SRCS = \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_config.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_instance_config.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_verify.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_layer.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_misc.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_perfctrs.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_upgrade.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_version.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_monitor.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_ldif2db.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_import.c \
ldap/servers/slapd/back-ldbm/db-bdb/bdb_import_threads.c

@db_bdb_srcdir@/bdb_config.c \
@db_bdb_srcdir@/bdb_instance_config.c \
@db_bdb_srcdir@/bdb_verify.c \
@db_bdb_srcdir@/bdb_layer.c \
@db_bdb_srcdir@/bdb_misc.c \
@db_bdb_srcdir@/bdb_perfctrs.c \
@db_bdb_srcdir@/bdb_upgrade.c \
@db_bdb_srcdir@/bdb_version.c \
@db_bdb_srcdir@/bdb_monitor.c \
@db_bdb_srcdir@/bdb_ldif2db.c \
@db_bdb_srcdir@/bdb_import.c \
@db_bdb_srcdir@/bdb_import_threads.c


if WITH_LIBBDB_RO
# db-bdb sources are compiled within libback-ldbm.so and linked to librobdb
DB_BDB_SRCS += @db_bdb_srcdir@/bdb_bdbreader_glue.c
DB_BDB_WITHIN_BACKLDBM = $(DB_BDB_SRCS)
ROBDB_INC = -I$(srcdir)/lib/librobdb/lib
else
if BUNDLE_LIBDB
# db-bdb sources are compiled within libback-bdb.so
DB_BDB_WITHIN_BACKLDBM =
Expand All @@ -1222,6 +1239,20 @@ else
# db-bdb sources are compiled within libback-ldbm.so
DB_BDB_WITHIN_BACKLDBM = $(DB_BDB_SRCS)
endif
endif

clean-bdb-ro-src:
/bin/rm -f $(DB_BDB_RO_BUILT_SRCS)

build-src: $(BUILT_SOURCES)
echo-src:
@echo V2 @db_bdbro_srcdir@
@echo V3 @db_bdb_srcdir@
@echo V1 $(patsubst %-ro/,%,$(dir $(DB_BDB_RO_BUILT_SRCS)))
@echo V4 $(DB_BDB_RO_BUILT_SRCS)
@echo V5 $(DB_BDB_WITHIN_BACKLDBM)
@echo V6 $(libback_ldbm_la_SOURCES)


#------------------------
# libback-ldbm
Expand Down Expand Up @@ -1298,11 +1329,24 @@ libback_ldbm_la_SOURCES = ldap/servers/slapd/back-ldbm/ancestorid.c \
$(DB_BDB_WITHIN_BACKLDBM)


libback_ldbm_la_CPPFLAGS = $(AM_CPPFLAGS) $(DSPLUGIN_CPPFLAGS) $(DB_INC)
libback_ldbm_la_CPPFLAGS = $(AM_CPPFLAGS) $(DSPLUGIN_CPPFLAGS) $(DB_INC) $(ROBDB_INC)
libback_ldbm_la_DEPENDENCIES = libslapd.la
libback_ldbm_la_LIBADD = libslapd.la $(DB_LINK) $(LDAPSDK_LINK) $(NSPR_LINK)
libback_ldbm_la_LDFLAGS = -avoid-version

if WITH_LIBBDB_RO
libback_ldbm_la_LIBADD += librobdb.la
libback_ldbm_la_DEPENDENCIES += librobdb.la

#------------------------
# librobdb
#------------------------
librobdb_la_SOURCES = lib/librobdb/lib/bdb_ro.c
librobdb_la_CPPFLAGS = $(AM_CPPFLAGS) $(DB_INC)
librobdb_la_LDFLAGS = -avoid-version
librobdb_la_LIBADD =
endif

#------------------------
# libacctpolicy-plugin
#------------------------
Expand Down
Binary file not shown.
5 changes: 3 additions & 2 deletions dirsrvtests/tests/suites/clu/dsctl_dblib_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,14 @@
import ldap
import os
import time
from lib389._constants import DEFAULT_SUFFIX
from lib389._constants import DEFAULT_SUFFIX, BDB_IMPL_STATUS
from lib389.backend import DatabaseConfig
from lib389.cli_ctl.dblib import (FakeArgs, dblib_bdb2mdb, dblib_mdb2bdb, dblib_cleanup)
from lib389.idm.user import UserAccounts
from lib389.replica import ReplicationManager
from lib389.topologies import topology_m2 as topo_m2, topology_st as topo_st
from lib389.utils import check_plugin_strings
from lib389.cli_ctl.dblib import get_bdb_impl_status


log = logging.getLogger(__name__)
Expand Down Expand Up @@ -86,7 +87,7 @@ def _check_db(inst, log, impl):
assert db_files != bdb_list
assert db_files == mdb_list


@pytest.mark.skipif(get_bdb_impl_status() == BDB_IMPL_STATUS.READ_ONLY, reason = 'Cannot read with read-only bdb')
def test_dblib_migration(init_user):
"""
Verify dsctl dblib xxxxxxx sub commands (migration between bdb and lmdb)
Expand Down
4 changes: 3 additions & 1 deletion dirsrvtests/tests/suites/lib389/config_compare_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from lib389.topologies import topology_i2
from lib389.config import Config
from lib389.dseldif import DSEldif
from lib389.cli_ctl.dblib import get_bdb_impl_status
from lib389._constants import BDB_IMPL_STATUS

pytestmark = pytest.mark.tier1

Expand Down Expand Up @@ -47,7 +49,6 @@ def test_config_compare(topology_i2):

assert Config.compare(st1_config, st2_config)


@pytest.fixture(scope="function", params=db_types_and_states)
def set_db_type_and_state(topology_i2, request):
"""
Expand All @@ -72,6 +73,7 @@ def fin():
return (dbtype,state)


@pytest.mark.skipif(get_bdb_impl_status() == BDB_IMPL_STATUS.READ_ONLY, reason="This test cannot run if bdb is read-only")
def test_get_db_lib(request, topology_i2, set_db_type_and_state):
"""
Check that get_db_lib() returns the configured database type.
Expand Down
Loading