Hello community, here is the log from the commit of package 389-ds for openSUSE:Factory checked in at 2020-11-12 22:47:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/389-ds (Old) and /work/SRC/openSUSE:Factory/.389-ds.new.24930 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "389-ds" Thu Nov 12 22:47:40 2020 rev:36 rq:847971 version:1.4.4.8~git0.bf454ad07 Changes: -------- --- /work/SRC/openSUSE:Factory/389-ds/389-ds.changes 2020-10-28 10:02:47.887330128 +0100 +++ /work/SRC/openSUSE:Factory/.389-ds.new.24930/389-ds.changes 2020-11-12 22:49:42.218787656 +0100 @@ -1,0 +2,15 @@ +Sun Nov 08 23:56:48 UTC 2020 - [email protected] + +- Update to version 1.4.4.8~git0.bf454ad07: + * Bump version to 1.4.4.8 + * Issue 4415 - unable to query schema if there are extra parenthesis + * Issue 4176 - CL trimming causes high CPU + * Bump version to 1.4.4.7 + * Issue 2526 - revert backend validation check + * Issue 4262 - more perl removal cleanup + * Issue 2526 - retrocl backend created out of order + * Bump version to 1.4.4.6 + * Issue 4262 - Remove legacy tools subpackage (final cleanup) +- Add missing dependency on gawk + +------------------------------------------------------------------- Old: ---- 389-ds-base-1.4.4.6~git0.71baa8cb2.tar.bz2 New: ---- 389-ds-base-1.4.4.8~git0.bf454ad07.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ 389-ds.spec ++++++ --- /var/tmp/diff_new_pack.gjo5SC/_old 2020-11-12 22:49:43.806789315 +0100 +++ /var/tmp/diff_new_pack.gjo5SC/_new 2020-11-12 22:49:43.814789322 +0100 @@ -51,7 +51,7 @@ %define svrcorelib libsvrcore0 Name: 389-ds -Version: 1.4.4.6~git0.71baa8cb2 +Version: 1.4.4.8~git0.bf454ad07 Release: 0 Summary: 389 Directory Server License: GPL-3.0-or-later AND MPL-2.0 @@ -75,6 +75,7 @@ BuildRequires: cyrus-sasl-devel BuildRequires: db-devel >= 4.5 BuildRequires: doxygen +BuildRequires: gawk BuildRequires: gcc-c++ BuildRequires: gdb BuildRequires: krb5-devel ++++++ 389-ds-base-1.4.4.6~git0.71baa8cb2.tar.bz2 -> 389-ds-base-1.4.4.8~git0.bf454ad07.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/Makefile.am new/389-ds-base-1.4.4.8~git0.bf454ad07/Makefile.am --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/Makefile.am 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/Makefile.am 2020-11-08 04:33:31.000000000 +0100 @@ -2040,7 +2040,6 @@ -e 's,@enable_tsan\@,$(TSAN_ON),g' \ -e 's,@enable_ubsan\@,$(UBSAN_ON),g' \ -e 's,@SANITIZER\@,$(SANITIZER),g' \ - -e 's,@enable_perl\@,@enable_perl@,g' \ -e 's,@enable_rust\@,@enable_rust@,g' \ -e 's,@ECHO_N\@,$(ECHO_N),g' \ -e 's,@ECHO_C\@,$(ECHO_C),g' \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/VERSION.sh new/389-ds-base-1.4.4.8~git0.bf454ad07/VERSION.sh --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/VERSION.sh 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/VERSION.sh 2020-11-08 04:33:31.000000000 +0100 @@ -10,7 +10,7 @@ # PACKAGE_VERSION is constructed from these VERSION_MAJOR=1 VERSION_MINOR=4 -VERSION_MAINT=4.6 +VERSION_MAINT=4.8 # NOTE: VERSION_PREREL is automatically set for builds made out of a git tree VERSION_PREREL= VERSION_DATE=$(date -u +%Y%m%d) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/acl/default_aci_allows_self_write.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/acl/default_aci_allows_self_write.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/acl/default_aci_allows_self_write.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/acl/default_aci_allows_self_write.py 2020-11-08 04:33:31.000000000 +0100 @@ -21,7 +21,7 @@ USER_PASSWORD = "some test password" NEW_USER_PASSWORD = "some new password" [email protected](default_paths.perl_enabled or ds_is_older('1.4.2.0'), reason="Default aci's in older versions do not support this functionality") [email protected](ds_is_older('1.4.2.0'), reason="Default aci's in older versions do not support this functionality") def test_acl_default_allow_self_write_nsuser(topology): """ Testing nsusers can self write and self read. This it a sanity test @@ -80,7 +80,7 @@ self_ent.change_password(USER_PASSWORD, NEW_USER_PASSWORD) [email protected](default_paths.perl_enabled or ds_is_older('1.4.2.0'), reason="Default aci's in older versions do not support this functionality") [email protected](ds_is_older('1.4.2.0'), reason="Default aci's in older versions do not support this functionality") def test_acl_default_allow_self_write_user(topology): """ Testing users can self write and self read. This it a sanity test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/basic/basic_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/basic/basic_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/basic/basic_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/basic/basic_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -1203,7 +1203,7 @@ assert conn.searchAuditLog('%s: %s' % (attr, VALUE)) [email protected](not get_user_is_root() or not default_paths.perl_enabled or ds_is_older('1.4.0.0'), [email protected](not get_user_is_root() or ds_is_older('1.4.0.0'), reason="This test is only required if perl is enabled, and requires root.") def test_dscreate(request): """Test that dscreate works, we need this for now until setup-ds.pl is @@ -1353,7 +1353,7 @@ return inst [email protected](not get_user_is_root() or not default_paths.perl_enabled or ds_is_older('1.4.2.0'), [email protected](not get_user_is_root() or ds_is_older('1.4.2.0'), reason="This test is only required with new admin cli, and requires root.") @pytest.mark.bz1748016 @pytest.mark.ds50581 @@ -1375,7 +1375,7 @@ log.info(root_dse.get_supported_ctrls()) [email protected](not get_user_is_root() or not default_paths.perl_enabled or ds_is_older('1.4.2.0'), [email protected](not get_user_is_root() or ds_is_older('1.4.2.0'), reason="This test is only required with new admin cli, and requires root.") @pytest.mark.bz1715406 @pytest.mark.ds50923 @@ -1465,7 +1465,7 @@ 3. Should fail """ try: - subprocess.check_call([ + subprocess.check_call([ 'dscreate', 'from-file', dscreate_test_rdn_value[0] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/clu/schema_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/clu/schema_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/clu/schema_test.py 1970-01-01 01:00:00.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/clu/schema_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -0,0 +1,61 @@ +import logging +import pytest +import os +from lib389.topologies import topology_st as topo +from lib389.schema import Schema + +log = logging.getLogger(__name__) + + +def test_origins_with_extra_parenthesis(topo): + """Test the custom schema with extra parenthesis in X-ORIGIN can be parsed + into JSON + + :id: 4230f83b-0dc3-4bc4-a7a8-5ab0826a4f05 + :setup: Standalone Instance + :steps: + 1. Add attribute with X-ORIGIN that contains extra parenthesis + 2. Querying for that attribute with JSON flag + :expectedresults: + 1. Success + 2. Success + """ + + ATTR_NAME = 'testAttribute' + X_ORG_VAL = 'test (TEST)' + schema = Schema(topo.standalone) + + # Add new attribute + parameters = { + 'names': [ATTR_NAME], + 'oid': '1.1.1.1.1.1.1.22222', + 'desc': 'Test extra parenthesis in X-ORIGIN', + 'x_origin': X_ORG_VAL, + 'syntax': '1.3.6.1.4.1.1466.115.121.1.15', + 'syntax_len': None, + 'x_ordered': None, + 'collective': None, + 'obsolete': None, + 'single_value': None, + 'no_user_mod': None, + 'equality': None, + 'substr': None, + 'ordering': None, + 'usage': None, + 'sup': None + } + schema.add_attributetype(parameters) + + # Search for attribute with JSON option + attr_result = schema.query_attributetype(ATTR_NAME, json=True) + + # Verify the x-origin value is correct + assert attr_result['at']['x_origin'][0] == X_ORG_VAL + + +if __name__ == '__main__': + # Run isolated + # -s for DEBUG mode + CURRENT_FILE = os.path.realpath(__file__) + pytest.main(["-s", CURRENT_FILE]) + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/health_config_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/health_config_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/health_config_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/health_config_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -24,14 +24,8 @@ from lib389.cli_ctl.health import health_check_run from lib389.paths import Paths - CMD_OUTPUT = 'No issues found.' JSON_OUTPUT = '[]' - -ds_paths = Paths() -pytestmark = pytest.mark.skipif(ds_paths.perl_enabled and (os.getenv('PYINSTALL') is None), - reason="These tests need to use python installer") - log = logging.getLogger(__name__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/health_repl_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/health_repl_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/health_repl_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/health_repl_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -22,8 +22,6 @@ JSON_OUTPUT = '[]' ds_paths = Paths() -pytestmark = pytest.mark.skipif(ds_paths.perl_enabled and (os.getenv('PYINSTALL') is None), - reason="These tests need to use python installer") log = logging.getLogger(__name__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/health_security_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/health_security_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/health_security_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/health_security_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -25,9 +25,6 @@ JSON_OUTPUT = '[]' ds_paths = Paths() -pytestmark = pytest.mark.skipif(ds_paths.perl_enabled and (os.getenv('PYINSTALL') is None), - reason="These tests need to use python installer") - libfaketime = pytest.importorskip('libfaketime') libfaketime.reexec_if_needed() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/health_sync_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/health_sync_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/health_sync_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/health_sync_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -11,7 +11,6 @@ import os import time from datetime import * -from lib389.agreement import Agreements from lib389.idm.user import UserAccounts from lib389.utils import * from lib389._constants import * @@ -20,11 +19,7 @@ from lib389.cli_ctl.health import health_check_run from lib389.paths import Paths - ds_paths = Paths() -pytestmark = pytest.mark.skipif(ds_paths.perl_enabled and (os.getenv('PYINSTALL') is None), - reason="These tests need to use python installer") - log = logging.getLogger(__name__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/healthcheck_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/healthcheck_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/healthcheck/healthcheck_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/healthcheck/healthcheck_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -24,9 +24,6 @@ CHANGELOG = 'cn=changelog,{}'.format(DN_USERROOT_LDBM) ds_paths = Paths() -pytestmark = pytest.mark.skipif(ds_paths.perl_enabled and (os.getenv('PYINSTALL') is None), - reason="These tests need to use python installer") - log = logging.getLogger(__name__) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/mapping_tree/acceptance_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/mapping_tree/acceptance_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/mapping_tree/acceptance_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/mapping_tree/acceptance_test.py 1970-01-01 01:00:00.000000000 +0100 @@ -1,65 +0,0 @@ -# --- BEGIN COPYRIGHT BLOCK --- -# Copyright (C) 2020 Red Hat, Inc. -# All rights reserved. -# -# License: GPL (version 3 or any later version). -# See LICENSE for details. -# --- END COPYRIGHT BLOCK --- -# -import ldap -import logging -import pytest -import os -from lib389._constants import * -from lib389.topologies import topology_st as topo -from lib389.mappingTree import MappingTrees - -DEBUGGING = os.getenv("DEBUGGING", default=False) -if DEBUGGING: - logging.getLogger(__name__).setLevel(logging.DEBUG) -else: - logging.getLogger(__name__).setLevel(logging.INFO) -log = logging.getLogger(__name__) - - -def test_invalid_mt(topo): - """Test that you can not add a new suffix/mapping tree - that does not already have the backend entry created. - - :id: caabd407-f541-4695-b13f-8f92af1112a0 - :setup: Standalone Instance - :steps: - 1. Create a new suffix that specifies an existing backend which has a - different suffix. - 2. Create a suffix that has no backend entry at all. - :expectedresults: - 1. Should fail with UNWILLING_TO_PERFORM - 1. Should fail with UNWILLING_TO_PERFORM - """ - - bad_suffix = 'dc=does,dc=not,dc=exist' - mts = MappingTrees(topo.standalone) - - properties = { - 'cn': bad_suffix, - 'nsslapd-state': 'backend', - 'nsslapd-backend': 'userroot', - } - with pytest.raises(ldap.UNWILLING_TO_PERFORM): - mts.create(properties=properties) - - properties = { - 'cn': bad_suffix, - 'nsslapd-state': 'backend', - 'nsslapd-backend': 'notCreatedRoot', - } - with pytest.raises(ldap.UNWILLING_TO_PERFORM): - mts.create(properties=properties) - - -if __name__ == '__main__': - # Run isolated - # -s for DEBUG mode - CURRENT_FILE = os.path.realpath(__file__) - pytest.main(["-s", CURRENT_FILE]) - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/replication/changelog_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/replication/changelog_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/replication/changelog_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/replication/changelog_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -22,7 +22,7 @@ from lib389.dseldif import DSEldif from lib389.tasks import * from lib389.utils import * -from lib389.utils import ldap, os, logging, ensure_bytes, ds_is_newer, ds_supports_new_changelog +from lib389.utils import ensure_bytes, ds_supports_new_changelog pytestmark = pytest.mark.tier1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/replication/changelog_trimming_test.py new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/replication/changelog_trimming_test.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/dirsrvtests/tests/suites/replication/changelog_trimming_test.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/dirsrvtests/tests/suites/replication/changelog_trimming_test.py 2020-11-08 04:33:31.000000000 +0100 @@ -87,7 +87,7 @@ 3. Trimming occurs """ - log.info("Testing changelog triming interval with max age...") + log.info("Testing changelog trimming interval with max age...") master = topo.ms["master1"] if not ds_supports_new_changelog(): @@ -95,8 +95,8 @@ # Do mods to build if cl entries do_mods(master, 10) - time.sleep(6) # 5 seconds + 1 for good measure + time.sleep(1) # Trimming should not have occurred if master.searchErrorsLog("Trimmed") is True: log.fatal('Trimming event unexpectedly occurred') assert False @@ -106,8 +106,12 @@ else: cl.set_trim_interval('5') - time.sleep(6) # Trimming should have occured + time.sleep(3) # Trimming should not have occurred + if master.searchErrorsLog("Trimmed") is True: + log.fatal('Trimming event unexpectedly occurred') + assert False + time.sleep(3) # Trimming should have occurred if master.searchErrorsLog("Trimmed") is False: log.fatal('Trimming event did not occur') assert False @@ -141,6 +145,7 @@ # Do mods to build if cl entries do_mods(master, 10) + time.sleep(1) # Trimming should have occurred if master.searchErrorsLog("Trimmed") is True: log.fatal('Trimming event unexpectedly occurred') assert False @@ -150,8 +155,7 @@ else: cl.set_trim_interval('5') - time.sleep(6) # Trimming should have occured - + time.sleep(6) # Trimming should have occurred if master.searchErrorsLog("Trimmed") is False: log.fatal('Trimming event did not occur') assert False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/admin/src/defaults.inf.in new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/admin/src/defaults.inf.in --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/admin/src/defaults.inf.in 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/admin/src/defaults.inf.in 2020-11-08 04:33:31.000000000 +0100 @@ -21,7 +21,6 @@ product = @capbrand@ Directory Server version = @PACKAGE_VERSION@ asan_enabled = @enable_asan@ -enable_perl = @enable_perl@ enable_rust = @enable_rust@ with_systemd = @with_systemd@ with_selinux = @with_selinux@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/servers/plugins/replication/cl5_api.c new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/servers/plugins/replication/cl5_api.c --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/servers/plugins/replication/cl5_api.c 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/servers/plugins/replication/cl5_api.c 2020-11-08 04:33:31.000000000 +0100 @@ -2175,29 +2175,35 @@ static int _cl5TrimMain(void *param) { - time_t timePrev = slapi_current_utc_time(); - time_t timeNow; - struct timespec trimInterval; + struct timespec current_time = {0}; + struct timespec prev_time = {0}; Replica *replica = (Replica *)param; cldb_Handle *cldb = replica_get_cl_info(replica); + int32_t trimInterval = cldb->clConf.trimInterval; - trimInterval.tv_sec = cldb->clConf.trimInterval; + /* Get the initial current time for checking the trim interval */ + clock_gettime(CLOCK_MONOTONIC, &prev_time); + /* Lock the CL state, and bump the thread count */ pthread_mutex_lock(&(cldb->stLock)); - slapi_counter_increment(cldb->clThreads); + while (cldb->dbState == CL5_STATE_OPEN) { pthread_mutex_unlock(&(cldb->stLock)); - timeNow = slapi_current_utc_time(); - if (timeNow - timePrev >= cldb->clConf.trimInterval) { + + clock_gettime(CLOCK_MONOTONIC, ¤t_time); + if (current_time.tv_sec - prev_time.tv_sec >= trimInterval) { /* time to trim */ - timePrev = timeNow; + prev_time = current_time; _cl5TrimReplica(replica); } pthread_mutex_lock(&(cldb->clLock)); - pthread_cond_timedwait(&(cldb->clCvar), &(cldb->clLock), &trimInterval); + /* While we have the CL lock get a fresh copy of the trim interval */ + trimInterval = cldb->clConf.trimInterval; + current_time.tv_sec += trimInterval; + pthread_cond_timedwait(&(cldb->clCvar), &(cldb->clLock), ¤t_time); pthread_mutex_unlock(&(cldb->clLock)); pthread_mutex_lock(&(cldb->stLock)); @@ -2571,9 +2577,7 @@ totalTrimmed, cleaned_rid); } -/* Note that each file contains changes for a single replicated area. - trimming algorithm: -*/ + #define CL5_TRIM_MAX_PER_TRANSACTION 10 static void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/servers/plugins/retrocl/retrocl.c new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/servers/plugins/retrocl/retrocl.c --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/servers/plugins/retrocl/retrocl.c 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/servers/plugins/retrocl/retrocl.c 2020-11-08 04:33:31.000000000 +0100 @@ -222,15 +222,11 @@ slapi_entry_free(referral); if (err != LDAP_SUCCESS || be == NULL || be == defbackend_get_backend()) { - slapi_log_err(SLAPI_LOG_ERR, RETROCL_PLUGIN_NAME, + /* Could not find the backend for cn=changelog, either because + * it doesn't exist mapping tree not registered. */ + slapi_log_err(SLAPI_LOG_PLUGIN, RETROCL_PLUGIN_NAME, "retrocl_select_backend - Mapping tree select failed (%d) %s.\n", err, errbuf); - - /* could not find the backend for cn=changelog, either because - * it doesn't exist - * mapping tree not registered. - */ err = retrocl_create_config(); - if (err != LDAP_SUCCESS) return err; } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/servers/plugins/retrocl/retrocl_create.c new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/servers/plugins/retrocl/retrocl_create.c --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/servers/plugins/retrocl/retrocl_create.c 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/servers/plugins/retrocl/retrocl_create.c 2020-11-08 04:33:31.000000000 +0100 @@ -192,6 +192,25 @@ vals[0] = &val; vals[1] = NULL; + retrocl_be_changelog = slapi_be_select_by_instance_name("changelog"); + + if (retrocl_be_changelog == NULL) { + /* This is not the nsslapd-changelogdir from cn=changelog4,cn=config */ + char *bedir; + + bedir = retrocl_get_config_str(CONFIG_CHANGELOG_DIRECTORY_ATTRIBUTE); + if (bedir == NULL) { + /* none specified */ + } + + rc = retrocl_create_be(bedir); + slapi_ch_free_string(&bedir); + if (rc != LDAP_SUCCESS && rc != LDAP_ALREADY_EXISTS) { + return rc; + } + retrocl_be_changelog = slapi_be_select_by_instance_name("changelog"); + } + /* Assume the mapping tree node is missing. It doesn't hurt to * attempt to add it if it already exists. You will see a warning * in the errors file when the referenced backend does not exist. @@ -256,25 +275,6 @@ return rc; } - retrocl_be_changelog = slapi_be_select_by_instance_name("changelog"); - - if (retrocl_be_changelog == NULL) { - /* This is not the nsslapd-changelogdir from cn=changelog4,cn=config */ - char *bedir; - - bedir = retrocl_get_config_str(CONFIG_CHANGELOG_DIRECTORY_ATTRIBUTE); - if (bedir == NULL) { - /* none specified */ - } - - rc = retrocl_create_be(bedir); - slapi_ch_free_string(&bedir); - if (rc != LDAP_SUCCESS && rc != LDAP_ALREADY_EXISTS) { - return rc; - } - retrocl_be_changelog = slapi_be_select_by_instance_name("changelog"); - } - return LDAP_SUCCESS; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/servers/slapd/mapping_tree.c new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/servers/slapd/mapping_tree.c --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/ldap/servers/slapd/mapping_tree.c 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/ldap/servers/slapd/mapping_tree.c 2020-11-08 04:33:31.000000000 +0100 @@ -569,7 +569,7 @@ * tree node (guaranteed to be non-NULL). */ static int -mapping_tree_entry_add(Slapi_Entry *entry, mapping_tree_node **newnodep, PRBool check_be) +mapping_tree_entry_add(Slapi_Entry *entry, mapping_tree_node **newnodep) { Slapi_DN *subtree = NULL; const char *tmp_ndn; @@ -605,37 +605,6 @@ return lderr; } - /* Verify there is a matching backend for this suffix */ - if (check_be) { - const char *mt_be_name; - char *cookie = NULL; - int32_t found_be = 0; - - /* get the backend name for this mapping tree node */ - mt_be_name = slapi_entry_attr_get_ref(entry, "nsslapd-backend"); - - be = slapi_get_first_backend(&cookie); - while (be) { - char *be_name = slapi_be_get_name(be); - if (mt_be_name && be_name && - strcasecmp(be_name, mt_be_name) == 0 && - slapi_sdn_compare(subtree, be->be_suffix) == 0) - { - found_be = 1; - break; - } - be = (backend *)slapi_get_next_backend(cookie); - } - slapi_ch_free((void **)&cookie); - if (!found_be) { - slapi_log_err(SLAPI_LOG_ERR, "mapping_tree_entry_add", - "The subtree %s does not match any existing backends, and will not be created.\n", - slapi_sdn_get_dn(subtree)); - slapi_sdn_free(&subtree); - return LDAP_UNWILLING_TO_PERFORM; - } - } - tmp_ndn = slapi_sdn_get_ndn(subtree); if (tmp_ndn && ('\0' == *tmp_ndn)) { @@ -953,7 +922,7 @@ for (x = 0; entries[x] != NULL; x++) { mapping_tree_node *child = NULL; - if (LDAP_SUCCESS != mapping_tree_entry_add(entries[x], &child, PR_FALSE)) { + if (LDAP_SUCCESS != mapping_tree_entry_add(entries[x], &child)) { slapi_log_err(SLAPI_LOG_ERR, "mapping_tree_node_get_children", "Could not add mapping tree node %s\n", slapi_entry_get_dn(entries[x])); @@ -1362,7 +1331,7 @@ * Should the mapping tree stucture change, this would have to * be checked again */ - *returncode = mapping_tree_entry_add(entryBefore, &node, PR_TRUE /* Check be exists */); + *returncode = mapping_tree_entry_add(entryBefore, &node); if (LDAP_SUCCESS != *returncode || !node) { return SLAPI_DSE_CALLBACK_ERROR; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/src/lib389/lib389/__init__.py new/389-ds-base-1.4.4.8~git0.bf454ad07/src/lib389/lib389/__init__.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/src/lib389/lib389/__init__.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/src/lib389/lib389/__init__.py 2020-11-08 04:33:31.000000000 +0100 @@ -807,7 +807,7 @@ self.log.debug(backends) sds.create_from_args(general, slapd, backends, None) - def create(self, pyinstall=False, version=INSTALL_LATEST_CONFIG): + def create(self, version=INSTALL_LATEST_CONFIG): """ Creates an instance with the parameters sets in dirsrv The state change from DIRSRV_STATE_ALLOCATED -> @@ -900,13 +900,11 @@ self.state = DIRSRV_STATE_ALLOCATED - def delete(self, pyinstall=False): + def delete(self): # Time to create the instance and retrieve the effective sroot - if (not self.ds_paths.perl_enabled or pyinstall): - from lib389.instance.remove import remove_ds_instance - remove_ds_instance(self) - else: - self._deleteDirsrv() + from lib389.instance.remove import remove_ds_instance + remove_ds_instance(self) + # Now, we are still an allocated ds object so we can be re-installed self.state = DIRSRV_STATE_ALLOCATED @@ -1542,9 +1540,6 @@ if selinux_present(): selinux_label_port(self.sslport) - if self.ds_paths.perl_enabled: - # We don't setup sslport correctly in perl installer .... - self.config.set('nsslapd-secureport', '%s' % self.sslport) # If we are old, we don't have template dse, so enable manually. if ds_is_older('1.4.0'): if not self.encryption.exists(): @@ -3228,7 +3223,7 @@ self.set_option(ldap.OPT_SERVER_CONTROLS, []) return resp_data, decoded_resp_ctrls - def buildLDIF(self, num, ldif_file, suffix='dc=example,dc=com', pyinstall=False): + def buildLDIF(self, num, ldif_file, suffix='dc=example,dc=com'): """Generate a simple ldif file using the dbgen.pl script, and set the ownership and permissions to match the user that the server runs as. @@ -3238,21 +3233,8 @@ @return - nothing @raise - OSError """ - if (not self.ds_paths.perl_enabled or pyinstall): - raise Exception("Perl tools disabled on this system. Try dbgen py module.") - else: - try: - os.system('%s -s %s -n %d -o %s' % (os.path.join(self.ds_paths.bin_dir, 'dbgen.pl'), suffix, num, ldif_file)) - os.chmod(ldif_file, 0o644) - if os.getuid() == 0: - # root user - chown the ldif to the server user - uid = pwd.getpwnam(self.userid).pw_uid - gid = grp.getgrnam(self.userid).gr_gid - os.chown(ldif_file, uid, gid) - except OSError as e: - self.log.exception('Failed to create ldif file (%s): error %d - %s', - ldif_file, e.errno, e.strerror) - raise e + raise Exception("Perl tools disabled on this system. Try dbgen py module.") + def getConsumerMaxCSN(self, replica_entry, binddn=None, bindpw=None): """ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/src/lib389/lib389/paths.py new/389-ds-base-1.4.4.8~git0.bf454ad07/src/lib389/lib389/paths.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/src/lib389/lib389/paths.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/src/lib389/lib389/paths.py 2020-11-08 04:33:31.000000000 +0100 @@ -199,16 +199,6 @@ return False @property - def perl_enabled(self): - if self._defaults_cached is False and self._islocal: - self._read_defaults() - self._validate_defaults() - if self._config.has_option(SECTION, 'enable_perl'): - if self._config.get(SECTION, 'enable_perl') == 'yes': - return True - return False - - @property def rust_enabled(self): if self._defaults_cached is False: self._read_defaults() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/src/lib389/lib389/schema.py new/389-ds-base-1.4.4.8~git0.bf454ad07/src/lib389/lib389/schema.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/src/lib389/lib389/schema.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/src/lib389/lib389/schema.py 2020-11-08 04:33:31.000000000 +0100 @@ -142,7 +142,7 @@ remainder = obj.split(" X-ORIGIN ")[1] if remainder[:1] == "(": # Have multiple values - end = remainder.find(')') + end = remainder.rfind(')') vals = remainder[1:end] vals = re.findall(X_ORIGIN_REGEX, vals) # For now use the first value, but this should be a set (another bug in python-ldap) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/389-ds-base-1.4.4.6~git0.71baa8cb2/src/lib389/lib389/topologies.py new/389-ds-base-1.4.4.8~git0.bf454ad07/src/lib389/lib389/topologies.py --- old/389-ds-base-1.4.4.6~git0.71baa8cb2/src/lib389/lib389/topologies.py 2020-10-26 21:32:27.000000000 +0100 +++ new/389-ds-base-1.4.4.8~git0.bf454ad07/src/lib389/lib389/topologies.py 2020-11-08 04:33:31.000000000 +0100 @@ -8,12 +8,8 @@ # import os import logging - -# For hostname detection for GSSAPI tests -import socket - +import socket # For hostname detection for GSSAPI tests import pytest - from lib389 import DirSrv from lib389.utils import generate_ds_params from lib389.mit_krb5 import MitKrb5 @@ -23,9 +19,7 @@ from lib389._constants import * from lib389.cli_base import LogCapture -PYINSTALL = True if os.getenv('PYINSTALL') else False DEBUGGING = os.getenv('DEBUGGING', default=False) - if DEBUGGING: logging.getLogger(__name__).setLevel(logging.DEBUG) else: @@ -89,9 +83,9 @@ instance_exists = instance.exists() if instance_exists: - instance.delete(pyinstall=PYINSTALL) + instance.delete() - instance.create(pyinstall=PYINSTALL) + instance.create() # We set a URL here to force ldap:// only. Once we turn on TLS # we'll flick this to ldaps. instance.use_ldap_uri() @@ -250,17 +244,11 @@ topology = create_topology({ReplicaRole.STANDALONE: 1}) def fin(): - try: - topology.standalone.simple_bind_s(DN_DM, PASSWORD) - except: - pass - - if DEBUGGING: - topology.standalone.stop() - else: + topology.standalone.stop() + if DEBUGGING is None: assert _remove_ssca_db(topology) if topology.standalone.exists(): - topology.standalone.delete(pyinstall=PYINSTALL) + topology.standalone.delete() request.addfinalizer(fin) @@ -325,17 +313,11 @@ topology.standalone.clearTmpDir(__file__) def fin(): - try: - topology.standalone.simple_bind_s(DN_DM, PASSWORD) - except: - pass - - if DEBUGGING: - topology.standalone.stop() - else: + topology.standalone.stop() + if DEBUGGING is None: assert _remove_ssca_db(topology) if topology.standalone.exists(): - topology.standalone.delete(pyinstall=PYINSTALL) + topology.standalone.delete() krb.destroy_realm() request.addfinalizer(fin) @@ -355,17 +337,11 @@ }) def fin(): - try: - topology.standalone.simple_bind_s(DN_DM, PASSWORD) - except: - pass - - if DEBUGGING: - topology.standalone.stop() - else: + topology.standalone.stop() + if DEBUGGING is None: assert _remove_ssca_db(topology) if topology.standalone.exists(): - topology.standalone.delete(pyinstall=PYINSTALL) + topology.standalone.delete() request.addfinalizer(fin) @@ -380,17 +356,12 @@ topology = create_topology({ReplicaRole.STANDALONE: 2}) def fin(): - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() request.addfinalizer(fin) @@ -405,18 +376,12 @@ topology = create_topology({ReplicaRole.STANDALONE: 3}) def fin(): - topology.standalone.simple_bind_s(DN_DM, PASSWORD) - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() request.addfinalizer(fin) @@ -430,18 +395,13 @@ topology = create_topology({ReplicaRole.MASTER: 1}) def fin(): - topology.standalone.simple_bind_s(DN_DM, PASSWORD) - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() + request.addfinalizer(fin) @@ -456,17 +416,12 @@ ReplicaRole.CONSUMER: 1}) def fin(): - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() request.addfinalizer(fin) @@ -481,17 +436,12 @@ topology = create_topology({ReplicaRole.MASTER: 2}) def fin(): - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() request.addfinalizer(fin) @@ -506,17 +456,12 @@ topology = create_topology({ReplicaRole.MASTER: 3}) def fin(): - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() request.addfinalizer(fin) @@ -531,17 +476,12 @@ topology = create_topology({ReplicaRole.MASTER: 4}) def fin(): - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() request.addfinalizer(fin) @@ -557,17 +497,12 @@ ReplicaRole.CONSUMER: 2}) def fin(): - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() request.addfinalizer(fin) @@ -601,17 +536,12 @@ instance.clearTmpDir(__file__) def fin(): - if DEBUGGING: - [inst.stop() for inst in topology] - else: + [inst.stop() for inst in topology] + if DEBUGGING is None: assert _remove_ssca_db(topology) for inst in topology: if inst.exists(): - try: - inst.simple_bind_s(DN_DM, PASSWORD) - except: - pass - inst.delete(pyinstall=PYINSTALL) + inst.delete() request.addfinalizer(fin) ++++++ 389-ds-base.obsinfo ++++++ --- /var/tmp/diff_new_pack.gjo5SC/_old 2020-11-12 22:49:47.242792901 +0100 +++ /var/tmp/diff_new_pack.gjo5SC/_new 2020-11-12 22:49:47.242792901 +0100 @@ -1,5 +1,5 @@ name: 389-ds-base -version: 1.4.4.6~git0.71baa8cb2 -mtime: 1603744347 -commit: 71baa8cb214ef2eb127074b67c6d50d0c1125623 +version: 1.4.4.8~git0.bf454ad07 +mtime: 1604806411 +commit: bf454ad070199d5e8c0a03b5e2505e6f2750e998 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.gjo5SC/_old 2020-11-12 22:49:47.306792968 +0100 +++ /var/tmp/diff_new_pack.gjo5SC/_new 2020-11-12 22:49:47.310792972 +0100 @@ -3,8 +3,8 @@ <param name="url">https://github.com/389ds/389-ds-base.git</param> <param name="versionformat">@PARENT_TAG@~git@TAG_OFFSET@.%h</param> <param name="scm">git</param> - <param name="revision">389-ds-base-1.4.4.6</param> - <param name="match-tag">389-ds-base-1.4.4.6</param> + <param name="revision">389-ds-base-1.4.4.8</param> + <param name="match-tag">389-ds-base-1.4.4.8</param> <param name="versionrewrite-pattern">389dsbase(.*)</param> <param name="versionrewrite-replacement">\1</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.gjo5SC/_old 2020-11-12 22:49:47.334792997 +0100 +++ /var/tmp/diff_new_pack.gjo5SC/_new 2020-11-12 22:49:47.334792997 +0100 @@ -5,4 +5,4 @@ <param name="url">https://pagure.io/forks/firstyear/389-ds-base.git</param> <param name="changesrevision">52fa3f10591fc102b1e08def13e1e2bf48ecfd2e</param></service><service name="tar_scm"> <param name="url">https://github.com/389ds/389-ds-base.git</param> - <param name="changesrevision">71baa8cb214ef2eb127074b67c6d50d0c1125623</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">bf454ad070199d5e8c0a03b5e2505e6f2750e998</param></service></servicedata> \ No newline at end of file ++++++ vendor.tar.xz ++++++ _______________________________________________ openSUSE Commits mailing list -- [email protected] To unsubscribe, email [email protected] List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette List Archives: https://lists.opensuse.org/archives/list/[email protected]
