head	1.4;
access;
symbols
	NEWHELM:1.1.1.1 TIGRIS_NOV_12_2000:1.1.1;
locks; strict;
comment	@# @;


1.4
date	2000.11.30.23.56.41;	author leonardr;	state dead;
branches;
next	1.3;

1.3
date	2000.11.14.20.47.11;	author leonardr;	state Exp;
branches;
next	1.2;

1.2
date	2000.11.14.18.47.44;	author leonardr;	state Exp;
branches;
next	1.1;

1.1
date	2000.11.12.21.16.46;	author dlr;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2000.11.12.21.16.46;	author dlr;	state Exp;
branches;
next	;


desc
@@


1.4
log
@Mega patch which makes script data persistent and which provides a general framework for tasks to be run (which will be used by anzu eventually)
@
text
@/* ================================================================
 * Copyright (c) 2000 CollabNet.  All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * 3. The end-user documentation included with the redistribution, if
 * any, must include the following acknowlegement: "This product includes
 * software developed by CollabNet (http://www.Collab.Net/)."
 * Alternately, this acknowlegement may appear in the software itself, if
 * and wherever such third-party acknowlegements normally appear.
 * 
 * 4. The hosted project names must not be used to endorse or promote
 * products derived from this software without prior written
 * permission. For written permission, please contact info@@collab.net.
 * 
 * 5. Products derived from this software may not use the "Tigris" name
 * nor may "Tigris" appear in their names without prior written
 * permission of CollabNet.
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ====================================================================
 * 
 * This software consists of voluntary contributions made by many
 * individuals on behalf of CollabNet.
 */


package org.tigris.helm.tool;

import java.sql.Connection;

import org.apache.turbine.services.db.PoolBrokerService;
import org.apache.turbine.util.db.pool.DBConnection;

import org.joist.database.DataManager;

import org.webmacro.util.Log;
import org.tigris.helm.tool.TigrisUpdate;
import org.tigris.helm.tool.HelmEmailer;

/**
 * QueueHandler runs as a thread 
 *
 * <p>Access to the program is synchronized, so only one access at a
 * time. Hopefully this will prevent data corruption. 
 */
public class QueueHandler extends Thread
{
    static public Log log = new Log("QHand", "Queue Handler");
    static private boolean debug = true;

    public void run()
    {        
        while (true)
        {
            if (TigrisUpdate.emptyQueue())
            {
                try 
                {
                    sleep(5000);
                } catch (InterruptedException e) {
                    //Do nothing.
                }
            } else { 
                try {
                    log.info("Dequeueing.");
                    TigrisUpdate.dequeue();
                } catch (UpdateException e) {
                    //Send email to the host admin(s).
                    String subject = "Update script failed.";
                    String body = 
                        "Execution of the following script failed: \n\n" 
                        + e.getMessage();

                    try 
                    {
                        DBConnection dbConn = PoolBrokerService.getInstance()
                            .getConnection();
                        Connection connection = dbConn.getConnection();
                        
                        HelmEmailer emailer = new 
                            HelmEmailer(connection, new DataManager());
                        emailer.sendError(subject, body);
                        
                        if (dbConn != null)
                        {
                            PoolBrokerService.getInstance()
                                .releaseConnection(dbConn);
                        }
                    } catch (Exception f) {
                            log.warning("Could not release connection.");
                    }
                }
                
            }
        }
    }
} /* end class QueueHandler */

@


1.3
log
@For some reason scripts weren't being run. They seem to be now.
@
text
@@


1.2
log
@Email host admins on failure of a script.
@
text
@d86 1
d91 3
a93 1
                    String body = "Execution of the following script failed: \n\n" + e.getMessage();
d97 2
a98 1
                        DBConnection dbConn = PoolBrokerService.getInstance().getConnection();
d101 2
a102 1
                        HelmEmailer emailer = new HelmEmailer(connection, new DataManager());
d107 2
a108 1
                            PoolBrokerService.getInstance().releaseConnection(dbConn);
@


1.1
log
@Initial revision
@
text
@d50 7
d59 1
d85 24
a108 1
                TigrisUpdate.dequeue();
a111 1

@


1.1.1.1
log
@Merging newhelm tree into helm, as per IZ issue #557.  Previous major version of helm is tagged TIGRIS_NOV_11_2000.
@
text
@@
