ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/server/uk/org/iscream/cms/server/client/WebFeeder.java
(Generate patch)

Comparing projects/cms/source/server/uk/org/iscream/cms/server/client/WebFeeder.java (file contents):
Revision 1.19 by tdb, Tue May 29 17:02:34 2001 UTC vs.
Revision 1.23 by tdb, Tue May 21 16:47:16 2002 UTC

# Line 1 | Line 1
1 + /*
2 + * i-scream central monitoring system
3 + * http://www.i-scream.org.uk
4 + * Copyright (C) 2000-2002 i-scream
5 + *
6 + * This program is free software; you can redistribute it and/or
7 + * modify it under the terms of the GNU General Public License
8 + * as published by the Free Software Foundation; either version 2
9 + * of the License, or (at your option) any later version.
10 + *
11 + * This program is distributed in the hope that it will be useful,
12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 + * GNU General Public License for more details.
15 + *
16 + * You should have received a copy of the GNU General Public License
17 + * along with this program; if not, write to the Free Software
18 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 + */
20 +
21   //---PACKAGE DECLARATION---
22   package uk.org.iscream.cms.server.client;
23  
# Line 10 | Line 30 | import java.io.*;
30   /**
31   * Provides a feed to the webpage system.
32   *
13 * !! There may also be need to have a Thread to grab any
14 * !! required config (groups, "nice names, etc) and dump
15 * !! that to a file.
16 *
33   * @author  $Author$
34   * @version $Id$
35   */
# Line 148 | Line 164 | public class WebFeeder extends Thread {
164              
165              // list the files and delete as appropriate
166              File alertsDir = new File(rootPath, alertSubDir);
167 <            // get all the hostnames directories
168 <            File[] contents = alertsDir.listFiles();
169 <            for(int i=0; i < contents.length; i++) {
170 <                // get a single directory from the array..
171 <                File hostdir = contents[i];
172 <                // ..and check it's a directory
173 <                if(hostdir.isDirectory()) {
174 <                    // if this is set, we clean files older than it
175 <                    long deleteFiles = -1;
176 <                    // get all the contents of that directory
177 <                    File[] hostdirContents = hostdir.listFiles();
178 <                    for(int j=0; j < hostdirContents.length; j++) {
179 <                        File alertFile = hostdirContents[j];
180 <                        // get the filename..
181 <                        String filename = alertFile.getName();
182 <                        // ..and see if it ends with OK or FINAL
183 <                        if(filename.endsWith(Alert.alertLevels[0]) ||
184 <                           filename.endsWith(Alert.alertLevels[Alert.alertLevels.length-1])) {
185 <                            // it does end with either OK or FINAL
186 <                            // ... so we can check it for deletion
187 <                            long lastModified = alertFile.lastModified();
188 <                            long age = System.currentTimeMillis() - lastModified;
189 <                            if(age > ((long) deleteOlderThan*1000)) {
190 <                                // if we're on a final heartbeat, we probably want to
191 <                                // clean up any stale alerts left behind
192 <                                // by setting this flag, we'll clean them up on leaving this loop
193 <                                if(filename.endsWith(".HB."+Alert.alertLevels[Alert.alertLevels.length-1])) {
194 <                                    // we do this so that delete files is set to the
195 <                                    // latest date of a HB.FINAL. There should only be
196 <                                    // one of them though :)
197 <                                    if(lastModified > deleteFiles) {
198 <                                        deleteFiles = lastModified;
167 >            // check it's a directory
168 >            if(alertsDir.isDirectory()) {
169 >                // get all the hostnames directories
170 >                File[] contents = alertsDir.listFiles();
171 >                for(int i=0; i < contents.length; i++) {
172 >                    // get a single directory from the array..
173 >                    File hostdir = contents[i];
174 >                    // ..and check it's a directory
175 >                    if(hostdir.isDirectory()) {
176 >                        // if this is set, we clean files older than it
177 >                        long deleteFiles = -1;
178 >                        // get all the contents of that directory
179 >                        File[] hostdirContents = hostdir.listFiles();
180 >                        for(int j=0; j < hostdirContents.length; j++) {
181 >                            File alertFile = hostdirContents[j];
182 >                            // get the filename..
183 >                            String filename = alertFile.getName();
184 >                            // ..and see if it ends with OK or FINAL
185 >                            if(filename.endsWith(Alert.alertLevels[0]) ||
186 >                               filename.endsWith(Alert.alertLevels[Alert.alertLevels.length-1])) {
187 >                                // it does end with either OK or FINAL
188 >                                // ... so we can check it for deletion
189 >                                long lastModified = alertFile.lastModified();
190 >                                long age = System.currentTimeMillis() - lastModified;
191 >                                if(age > ((long) deleteOlderThan*1000)) {
192 >                                    // if we're on a final heartbeat, we probably want to
193 >                                    // clean up any stale alerts left behind
194 >                                    // by setting this flag, we'll clean them up on leaving this loop
195 >                                    if(filename.endsWith(".HB."+Alert.alertLevels[Alert.alertLevels.length-1])) {
196 >                                        // we do this so that delete files is set to the
197 >                                        // latest date of a HB.FINAL. There should only be
198 >                                        // one of them though :)
199 >                                        if(lastModified > deleteFiles) {
200 >                                            deleteFiles = lastModified;
201 >                                        }
202                                      }
203 +                                    // it's also older than our age to delete older than
204 +                                    if(!alertFile.delete()) {
205 +                                        _logger.write(this.toString(), Logger.WARNING, "Failed to delete the following 'old' alert file: "+alertFile.getPath());
206 +                                    }
207                                  }
185                                // it's also older than our age to delete older than
186                                if(!alertFile.delete()) {
187                                    _logger.write(this.toString(), Logger.WARNING, "Failed to delete the following 'old' alert file: "+alertFile.getPath());
188                                }
208                              }
209                          }
210 <                    }
211 <                    // cleanup stale alerts
212 <                    if(deleteFiles >= 0) {
213 <                        File[] remainingHostdirContents = hostdir.listFiles();
214 <                        for(int j=0; j < remainingHostdirContents.length; j++) {
215 <                            File alertFile = remainingHostdirContents[j];
216 <                            if(alertFile.lastModified() < deleteFiles) {
217 <                                // alert file is older than the most recent
218 <                                // FINAL Heartbeat alert.
219 <                                if(alertFile.delete()) {
220 <                                    _logger.write(this.toString(), Logger.DEBUG, "Deleted stale alert file: "+alertFile.getPath());
210 >                        // cleanup stale alerts
211 >                        if(deleteFiles >= 0) {
212 >                            File[] remainingHostdirContents = hostdir.listFiles();
213 >                            for(int j=0; j < remainingHostdirContents.length; j++) {
214 >                                File alertFile = remainingHostdirContents[j];
215 >                                if(alertFile.lastModified() < deleteFiles) {
216 >                                    // alert file is older than the most recent
217 >                                    // FINAL Heartbeat alert.
218 >                                    if(alertFile.delete()) {
219 >                                        _logger.write(this.toString(), Logger.DEBUG, "Deleted stale alert file: "+alertFile.getPath());
220 >                                    }
221 >                                    else {
222 >                                        _logger.write(this.toString(), Logger.WARNING, "Failed to delete the following 'stale' alert file: "+alertFile.getPath());
223 >                                    }
224                                  }
203                                else {
204                                    _logger.write(this.toString(), Logger.WARNING, "Failed to delete the following 'stale' alert file: "+alertFile.getPath());
205                                }
225                              }
226                          }
227 <                    }
228 <                    // ---- RECAP ----
229 <                    // at this point, we have cleaned up any OK or FINAL alerts
230 <                    // that have passed our age limit. We have then cleaned up
231 <                    // any alerts older the most recent Heartbeat FINAL alert,
232 <                    // as these are probably stale. Any files left are valid and
233 <                    // active alerts. We are now in a position to remove the host
234 <                    // directory if it's empty.
235 <                    // ---------------
236 <                    // do a quick check to see if the directory is now empty
237 <                    File[] newHostdirContents = hostdir.listFiles();
238 <                    if(newHostdirContents.length == 0) {
239 <                        // it does seem to be, try and delete it
240 <                        // this will fail anyway if files still remain
241 <                        if(!hostdir.delete()) {
242 <                            _logger.write(this.toString(), Logger.WARNING, "Failed to delete the following empty host directory: "+hostdir.getPath());
227 >                        // ---- RECAP ----
228 >                        // at this point, we have cleaned up any OK or FINAL alerts
229 >                        // that have passed our age limit. We have then cleaned up
230 >                        // any alerts older the most recent Heartbeat FINAL alert,
231 >                        // as these are probably stale. Any files left are valid and
232 >                        // active alerts. We are now in a position to remove the host
233 >                        // directory if it's empty.
234 >                        // ---------------
235 >                        // do a quick check to see if the directory is now empty
236 >                        File[] newHostdirContents = hostdir.listFiles();
237 >                        if(newHostdirContents.length == 0) {
238 >                            // it does seem to be, try and delete it
239 >                            // this will fail anyway if files still remain
240 >                            if(!hostdir.delete()) {
241 >                                _logger.write(this.toString(), Logger.WARNING, "Failed to delete the following empty host directory: "+hostdir.getPath());
242 >                            }
243                          }
244                      }
245                  }
246 +            }
247 +            else {
248 +                _logger.write(toString(), Logger.WARNING, "IO error reading alerts directory, maybe it doesn't exist? : " +rootPath+sep+alertSubDir);
249              }
250          }
251      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines