RPM Community Forums

Mailing List Message of <rpm-devel>

Re: [CVS] RPM: rpm/ CHANGES rpm/rpmdb/ rpmlio.c

From: Jeff Johnson <n3npq@mac.com>
Date: Tue 01 Dec 2009 - 18:20:39 CET
Message-id: <7A341AAB-1E50-4F65-9835-CB7A1976AFFA@mac.com>
I've disabled "syscall ACID" and "scriptlet ACID" logging for now.

That should reduce your log file sizes dramatically by not saving
file content within the log.

That leaves "database ACID", and the second largets "Bloat!" is
header blobs in the primary Packages store. The fix there will
be another rpmdb schema change that I'm not yet prepared to undertake.
With luck, I 'll be there mebbe 2-3 weeks from now.

Meanwhile, please look carefully for false failures while doing installations/erasures.

I just saw this:

	[jbj@fedora10 wdj]$ sudo rpm -evv time
	...
	error: Failed dependencies:
		systemtap-runtime = 1.0-2.fc11 is needed by (installed) systemtap-1.0-2.fc11.i586

No way are time and systemtap related through dependencies.

The root cause has to do with primary retrieval keys getting mixed up somehow.

But note that I'm actively developing RPM and flipping between
multiple versions of RPM and that there is an endian switch
in the primary retrieval keys.

So "mixed up" is likelier from some brain fart of mine using rpm than coding
errors, too much of the rpmdb is "working" on largely common code paths.

Any "mixed up" keys will be easily detectable as I get the development
under a unit test harness. I've been headed towards rpmdb unit tests
for 2-3 weeks but the trash hauling keeps getting in the way.

hth

73 de Jeff

On Dec 1, 2009, at 12:05 PM, Jeff Johnson wrote:

>  RPM Package Manager, CVS Repository
>  http://rpm5.org/cvs/
>  ____________________________________________________________________________
> 
>  Server: rpm5.org                         Name:   Jeff Johnson
>  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
>  Module: rpm                              Date:   01-Dec-2009 18:05:09
>  Branch: HEAD                             Handle: 2009120117050801
> 
>  Modified files:
>    rpm                     CHANGES
>    rpm/rpmdb               rpmlio.c
> 
>  Log:
>    - rpmlio: add "opt-in" enablers for syscall/scriptlet logging.
> 
>  Summary:
>    Revision    Changes     Path
>    1.3170      +1  -0      rpm/CHANGES
>    1.2         +21 -18     rpm/rpmdb/rpmlio.c
>  ____________________________________________________________________________
> 
>  patch -p0 <<'@@ .'
>  Index: rpm/CHANGES
>  ============================================================================
>  $ cvs diff -u -r1.3169 -r1.3170 CHANGES
>  --- rpm/CHANGES	1 Dec 2009 16:48:32 -0000	1.3169
>  +++ rpm/CHANGES	1 Dec 2009 17:05:08 -0000	1.3170
>  @@ -1,5 +1,6 @@
> 
>   5.2b1 -> 5.3a1
>  +    - jbj: rpmlio: add "opt-in" enablers for syscall/scriptlet logging.
>       - jbj: rpmlio: add --rpmliodebug spewage valve.
>       - jbj: rpmlio: add syscall/scriplet logging to -lrpmdb API for rework.
>       - jbj: revert the change for autoconf-2.65, breaks w autoconf-2.63.
>  @@ .
>  patch -p0 <<'@@ .'
>  Index: rpm/rpmdb/rpmlio.c
>  ============================================================================
>  $ cvs diff -u -r1.1 -r1.2 rpmlio.c
>  --- rpm/rpmdb/rpmlio.c	1 Dec 2009 16:48:33 -0000	1.1
>  +++ rpm/rpmdb/rpmlio.c	1 Dec 2009 17:05:09 -0000	1.2
>  @@ -17,6 +17,9 @@
> 
>   int _rpmlio_debug = 0;
> 
>  +static int _enable_syscall_logging = 0;
>  +static int _enable_scriptlet_logging = 0;
>  +
>   int rpmlioCreat(rpmdb rpmdb, const char * fn, mode_t mode,
>   		const uint8_t * b, size_t blen,
>   		const uint8_t * d, size_t dlen, uint32_t dalgo)
>  @@ -30,7 +33,7 @@
>       DBT FNdbt = {0};
>       DBT Bdbt = {0};
>       DBT Ddbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       Bdbt.data = (void *)b;
>  @@ -56,7 +59,7 @@
>       DBT FNdbt = {0};
>       DBT Bdbt = {0};
>       DBT Ddbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       Bdbt.data = (void *)b;
>  @@ -84,7 +87,7 @@
>       DBT NNdbt = {0};
>       DBT Bdbt = {0};
>       DBT Ddbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       ONdbt.data = (void *)oldname;
>       ONdbt.size = strlen(oldname) + 1;	/* trailing NUL too */
>       NNdbt.data = (void *)newname;
>  @@ -108,7 +111,7 @@
>       DB_TXN * _txn = rpmdb->db_txn;
>       DB_LSN _lsn = {0,0};
>       DBT DNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       DNdbt.data = (void *)dn;
>       DNdbt.size = strlen(dn) + 1;	/* trailing NUL too */
>       rc = logio_Mkdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
>  @@ -126,7 +129,7 @@
>       DB_TXN * _txn = rpmdb->db_txn;
>       DB_LSN _lsn = {0,0};
>       DBT DNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       DNdbt.data = (void *)dn;
>       DNdbt.size = strlen(dn) + 1;	/* trailing NUL too */
>       rc = logio_Rmdir_log(dbenv, _txn, &_lsn, DB_FLUSH, &DNdbt, mode);
>  @@ -145,7 +148,7 @@
>       DB_LSN _lsn = {0,0};
>       DBT FNdbt = {0};
>       DBT CONTEXTdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       if (context == NULL) context = "";	/* XXX prevent segfaults */
>  @@ -166,7 +169,7 @@
>       DB_TXN * _txn = rpmdb->db_txn;
>       DB_LSN _lsn = {0,0};
>       DBT FNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       rc = logio_Chown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
>  @@ -184,7 +187,7 @@
>       DB_TXN * _txn = rpmdb->db_txn;
>       DB_LSN _lsn = {0,0};
>       DBT FNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       rc = logio_Lchown_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, uid, gid);
>  @@ -202,7 +205,7 @@
>       DB_TXN * _txn = rpmdb->db_txn;
>       DB_LSN _lsn = {0,0};
>       DBT FNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       rc = logio_Chmod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
>  @@ -220,7 +223,7 @@
>       DB_TXN * _txn = rpmdb->db_txn;
>       DB_LSN _lsn = {0,0};
>       DBT FNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       rc = logio_Utime_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, actime, modtime);
>  @@ -239,7 +242,7 @@
>       DB_LSN _lsn = {0,0};
>       DBT LNdbt = {0};
>       DBT FNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       LNdbt.data = (void *)ln;
>       LNdbt.size = strlen(ln) + 1;	/* trailing NUL too */
>       FNdbt.data = (void *)fn;
>  @@ -260,7 +263,7 @@
>       DB_LSN _lsn = {0,0};
>       DBT LNdbt = {0};
>       DBT FNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       LNdbt.data = (void *)ln;
>       LNdbt.size = strlen(ln) + 1;	/* trailing NUL too */
>       FNdbt.data = (void *)fn;
>  @@ -280,7 +283,7 @@
>       DB_TXN * _txn = rpmdb->db_txn;
>       DB_LSN _lsn = {0,0};
>       DBT FNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       rc = logio_Mknod_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode, dev);
>  @@ -298,7 +301,7 @@
>       DB_TXN * _txn = rpmdb->db_txn;
>       DB_LSN _lsn = {0,0};
>       DBT FNdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_syscall_logging)) return 0;
>       FNdbt.data = (void *)fn;
>       FNdbt.size = strlen(fn) + 1;	/* trailing NUL too */
>       rc = logio_Mkfifo_log(dbenv, _txn, &_lsn, DB_FLUSH, &FNdbt, mode);
>  @@ -318,7 +321,7 @@
>       DB_LSN _lsn = {0,0};
>       DBT AVdbt = {0};
>       DBT BODYdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
>       AVdbt.data = (void *)cmd;
>       AVdbt.size = strlen(cmd) + 1;	/* trailing NUL too */
>       BODYdbt.data = (void *)body;
>  @@ -341,7 +344,7 @@
>       DB_LSN _lsn = {0,0};
>       DBT AVdbt = {0};
>       DBT BODYdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
>       AVdbt.data = (void *)cmd;
>       AVdbt.size = strlen(cmd) + 1;	/* trailing NUL too */
>       BODYdbt.data = (void *)body;
>  @@ -364,7 +367,7 @@
>       DB_LSN _lsn = {0,0};
>       DBT AVdbt = {0};
>       DBT BODYdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
>       AVdbt.data = (void *)cmd;
>       AVdbt.size = strlen(cmd) + 1;	/* trailing NUL too */
>       BODYdbt.data = (void *)body;
>  @@ -387,7 +390,7 @@
>       DB_LSN _lsn = {0,0};
>       DBT AVdbt = {0};
>       DBT BODYdbt = {0};
>  -    if (!(dbenv && _txn)) return 0;
>  +    if (!(dbenv && _txn && _enable_scriptlet_logging)) return 0;
>       AVdbt.data = (void *)cmd;
>       AVdbt.size = strlen(cmd) + 1;	/* trailing NUL too */
>       BODYdbt.data = (void *)body;
>  @@ .
> ______________________________________________________________________
> RPM Package Manager                                    http://rpm5.org
> CVS Sources Repository                                rpm-cvs@rpm5.org
Received on Tue Dec 1 18:20:59 2009
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.