zmaudit.pl Too early removal ?

Support and queries relating to all previous versions of ZoneMinder
Locked
kamand
Posts: 24
Joined: Fri Nov 28, 2003 10:04 am

zmaudit.pl Too early removal ?

Post by kamand »

Hi
It seems that zmaduit delete new events which was not in database when zmaudit started.
I found this for zm 1.22.2, but this piece of code did not changed in 1.223 and 1.23.RC2.

Partial log file:

Code: Select all

Nov 15 18:48:48 vdrsf zma_m6[7064]: INF [C-06: 23218 - Gone into alarm state]
Nov 15 18:48:49 vdrsf zma_m7[7072]: INF [C-07: 23225 - Gone into alarm state]

Nov 15 18:48:51 vdrsf zmaudit[7086]: INF [Filesystem event '6/707264' does not exist in database]
Nov 15 18:48:51 vdrsf zmaudit[7086]: INF [deleting]
Nov 15 18:48:51 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00026-capture.jpg: No such file or directory]
Nov 15 18:48:51 vdrsf zmaudit[7086]: INF [Filesystem event '7/707265' does not exist in database]
Nov 15 18:48:51 vdrsf zmaudit[7086]: INF [deleting]
Nov 15 18:48:52 vdrsf zma_m7[7072]: ERR [Can't open events/7/707265/00023-capture.jpg: No such file or directory]
Nov 15 18:48:52 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00027-capture.jpg: No such file or directory]
Nov 15 18:48:52 vdrsf zma_m7[7072]: ERR [Can't open events/7/707265/00024-capture.jpg: No such file or directory]
Nov 15 18:48:52 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00028-capture.jpg: No such file or directory]
Nov 15 18:48:52 vdrsf zma_m7[7072]: ERR [Can't open events/7/707265/00025-capture.jpg: No such file or directory]
Nov 15 18:48:52 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00029-capture.jpg: No such file or directory]
Nov 15 18:48:52 vdrsf zma_m7[7072]: ERR [Can't open events/7/707265/00026-capture.jpg: No such file or directory]
Nov 15 18:48:52 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00030-capture.jpg: No such file or directory]
Nov 15 18:48:52 vdrsf zma_m7[7072]: ERR [Can't open events/7/707265/00027-capture.jpg: No such file or directory]
Nov 15 18:48:53 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00031-capture.jpg: No such file or directory]

Nov 15 18:49:20 vdrsf zma_m7[7072]: ERR [Can't open events/7/707265/00110-capture.jpg: No such file or directory]
Nov 15 18:49:20 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00114-capture.jpg: No such file or directory]
Nov 15 18:49:20 vdrsf zma_m7[7072]: ERR [Can't open events/7/707265/00111-capture.jpg: No such file or directory]
Nov 15 18:49:20 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00115-capture.jpg: No such file or directory]
Nov 15 18:49:20 vdrsf zma_m7[7072]: INF [C-07: 23326 - Left alarm state (707265) - 111(83) images]
Nov 15 18:49:20 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00116-capture.jpg: No such file or directory]
Nov 15 18:49:20 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00117-capture.jpg: No such file or directory]
Nov 15 18:49:21 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00118-capture.jpg: No such file or directory]
Nov 15 18:49:21 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00119-capture.jpg: No such file or directory]
Nov 15 18:49:21 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00120-capture.jpg: No such file or directory]

Nov 15 18:49:24 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00132-capture.jpg: No such file or directory]
Nov 15 18:49:24 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00133-capture.jpg: No such file or directory]
Nov 15 18:49:24 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00134-capture.jpg: No such file or directory]
Nov 15 18:49:25 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00135-capture.jpg: No such file or directory]
Nov 15 18:49:25 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00136-capture.jpg: No such file or directory]
Nov 15 18:49:25 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00137-capture.jpg: No such file or directory]
Nov 15 18:49:25 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00138-capture.jpg: No such file or directory]
Nov 15 18:49:26 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00139-capture.jpg: No such file or directory]
Nov 15 18:49:26 vdrsf zma_m6[7064]: ERR [Can't open events/6/707264/00140-capture.jpg: No such file or directory]
Nov 15 18:49:26 vdrsf zma_m6[7064]: INF [C-06: 23348 - Left alarm state (707264) - 140(113) images]

Nov 15 19:04:30 vdrsf zmaudit[7086]: INF [Database event '7/707265' does not exist in filesystem]
Nov 15 19:04:30 vdrsf zmaudit[7086]: INF [deleting]
Nov 15 19:04:30 vdrsf zmaudit[7086]: INF [Database event '6/707264' does not exist in filesystem]
Nov 15 19:04:30 vdrsf zmaudit[7086]: INF [deleting]
And code from znaudit from line 188:

Code: Select all

                opendir( DIR, $monitor_dir ) or Fatal( "Can't open directory '$monitor_dir': $!" );
                my @temp_events = sort { $b <=> $a } grep { $_ =~ /^\d+$/ } readdir( DIR );
                closedir( DIR );
                chdir( $monitor_dir );
                my $count = 0;
                foreach my $event ( @temp_events )
                {
                        if ( $count++ > MAX_AGED_DIRS )
                        {
                                $fs_events->{$event} = -1;
                        }
                        else
                        {
                                $fs_events->{$event} = (time() - ($^T - ((-M $event) * 24*60*60)));
                        }
                }
                chdir( EVENT_PATH );
                Debug( "Got ".int(keys(%$fs_events))." events\n" );
        }

        while ( my ( $fs_monitor, $fs_events ) = each(%$fs_monitors) )
        {
                if ( my $db_events = $db_monitors->{$fs_monitor} )
                {
                        if ( $fs_events )
                        {
                                while ( my ( $fs_event, $age ) = each(%$fs_events ) )
                                {
                                        if ( !defined($db_events->{$fs_event}) && ($age < 0 || ($age > MIN_AGE)) )
                                        {
                                                aud_print( "Filesystem event '$fs_monitor/$fs_event' does not exist in datab
                                                if ( confirm() )
                                                {
                                                        my $command = "/bin/rm -rf ".EVENT_PATH."/$fs_monitor/$fs_event";
                                                        qx( $command );
                                                }
                                        }
                                }
                        }
                }
                else
I think we need backward sorting in line:

Code: Select all

                my @temp_events = sort { $b <=> $a } grep { $_ =~ /^\d+$/ } readdir( DIR );
But Im not perl guru.
Regards.
Andrew
User avatar
zoneminder
Site Admin
Posts: 5215
Joined: Wed Jul 09, 2003 2:07 pm
Location: Bristol, UK
Contact:

Post by zoneminder »

It should not be possible for events to exist in the filesystem and not in the database as the database record is inserted first (that's where the event id comes from).

Also zmaudit should ignore any events with db or filesystem records younger than MIN_AGE seconds old.

So there appears to be something very strange going on on your system. First of all can you run mysqlcheck to make sure your DB is not sick?
Phil
kamand
Posts: 24
Joined: Fri Nov 28, 2003 10:04 am

Post by kamand »

Sorry. This is my fault. I has wrongly looked in a code from version 1.22.3 instead of 1.22.2.
1.22.2

Code: Select all

$fs_events->{$event} = ($fs_now - ($^T - ((-M $event) * 24*60*60)));
1.22.3

Code: Select all

$fs_events->{$event} = (time() - ($^T - ((-M $event) * 24*60*60)));
With changes from 1.22.3 everyting is ok.
Had tested for about 4 days: from Nov 16 11:38 until now.
Sorry for false report.
Regards.
Andrew
Locked