Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2006, Red Hat Middleware LLC, and individual contributors 
   * as indicated by the @author tags. 
   * See the copyright.txt in the distribution for a
   * full listing of individual contributors. 
   * This copyrighted material is made available to anyone wishing to use,
   * modify, copy, or redistribute it subject to the terms and conditions
   * of the GNU Lesser General Public License, v. 2.1.
  * This program is distributed in the hope that it will be useful, but WITHOUT A 
  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  * You should have received a copy of the GNU Lesser General Public License,
  * v.2.1 along with this distribution; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
  * MA  02110-1301, USA.
  * 
  * (C) 2007,
  * @author JBoss Inc.
  */
 
 package com.arjuna.ats.internal.arjuna.recovery;
 
 
This class is a plug-in module for the recovery manager. This class is responsible for the removing transaction status manager items that are too old.
 
 
 public class ExpiredTransactionScanner implements ExpiryScanner
 {
 	public ExpiredTransactionScanner(String typeNameString movedTypeName)
 	{
 		 = StoreManager.getRecoveryStore();
 		 = typeName;
 		 = movedTypeName;
 	}

This is called periodically by the RecoveryManager
 
 	public void scan()
 	{
 		boolean initialScan = false;
 
 		if ( == null)
 		{
 			 = new Hashtable();
 			initialScan = true;
 		}
 
 		try
 		{
 
 			// take a snapshot of the log
 
 			{
 				Uid theUid = null;
 
 				boolean endOfUids = false;
 
 				while (!endOfUids)
 				{
 					// extract a uid
 				        theUid = UidHelper.unpackFrom(uids);
 
 					if (theUid.equals(Uid.nullUid()))
 						endOfUids = true;
 					else
 					{
 						Uid newUid = new Uid(theUid);
 
 						if (initialScan)
 							.put(newUidnewUid);
 						else
 						{
 							if (!.contains(newUid))
 							{
 								if ( == null)
 									 = new Hashtable();
 
 								.put(newUidnewUid);
 							}
 							else
 							// log is present in this iteration, so move it
							{
								try
								{
								    moveEntry(newUid);
								}
								catch (Exception ex)
								{
                                    ..warn_recovery_ExpiredTransactionScanner_2(newUidex);
									.put(newUidnewUid);
								}
							}
						}
					}
				}
				if ( != null)
				{
					 = null;
				}
			}
		}
		catch (Exception e)
		{
			// end of uids!
		}
	}
	public boolean toBeUsed()
	{
		return true;
	}
	public boolean moveEntry (Uid newUidthrows ObjectStoreException
	{
	    boolean res = false;
	    
	    if (state != null// just in case recovery
	        // kicked-in
	    {
	        boolean moved = .write_committed(newUidnew OutputObjectState(state));
	        if (!moved) {
            }
	        else
	            res = .remove_committed(newUid);
	    }
          
	    return res;
	}
	private String _typeName;
	private Hashtable _scanM = null;
	private Hashtable _scanN = null;
New to GrepCode? Check out our FAQ X