diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/IDeviceStorage.java b/src/main/java/net/onrc/onos/ofcontroller/core/IDeviceStorage.java
index 2eddadf..9818b1b 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/IDeviceStorage.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/IDeviceStorage.java
@@ -14,6 +14,8 @@
 	public IDeviceObject getDeviceByIP(int ipv4Address);
 	public void changeDeviceAttachments(IDevice device);
 	public void changeDeviceIPv4Address(IDevice device);
+	public void rollback();
+	public void commit();
 	
 	public void addOnosDevice(OnosDevice onosDevice);
 }
diff --git a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
index 0699491..94954a6 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/core/internal/DeviceStorageImpl.java
@@ -162,6 +162,20 @@
 	}
 
 	/***
+	 * This function is for closing the DB transaction properly.
+	 * After you use any DB operation, to clear the cache of transaction, it should be called.
+	 */
+	@Override
+	public void rollback() {
+		ope.rollback();
+	}
+	
+	@Override
+	public void commit(){
+		ope.commit();
+	}
+
+	/***
 	 * This function is for getting the Device from the DB by IP address of the device.
 	 * @param ip The device ip address you want to get from the DB.
 	 * @return IDeviceObject you want to get.
diff --git a/src/main/java/net/onrc/onos/ofcontroller/forwarding/Forwarding.java b/src/main/java/net/onrc/onos/ofcontroller/forwarding/Forwarding.java
index 479f170..9947eb0 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/forwarding/Forwarding.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/forwarding/Forwarding.java
@@ -253,22 +253,24 @@
 		String destinationMac = 
 				HexString.toHexString(eth.getDestinationMACAddress()); 
 		
-		//FIXME TitanTransaction opened here probably needs to be either commit()/rollback() to avoid transaction leak, before exiting run().
-		//But it seems that IDeviceStorage does not provide a way to close transaction properly.
-		//Also getDeviceByMac() is a blocking call, so it may be better way to handle it to avoid the condition.
-		IDeviceObject deviceObject = deviceStorage.getDeviceByMac(
+		//FIXME getDeviceByMac() is a blocking call, so it may be better way to handle it to avoid the condition.
+		try{	
+			IDeviceObject deviceObject = deviceStorage.getDeviceByMac(
 				destinationMac);
-		
-		if (deviceObject == null) {
-			log.debug("No device entry found for {}",
-					destinationMac);
-			
-			//Device is not in the DB, so wait it until the device is added.
-			executor.schedule(new WaitDeviceArp(sw, pi, eth), SLEEP_TIME_FOR_DB_DEVICE_INSTALLED, TimeUnit.MILLISECONDS);
-			return;
+
+			if (deviceObject == null) {
+				log.debug("No device entry found for {}",
+						destinationMac);
+
+				//Device is not in the DB, so wait it until the device is added.
+				executor.schedule(new WaitDeviceArp(sw, pi, eth), SLEEP_TIME_FOR_DB_DEVICE_INSTALLED, TimeUnit.MILLISECONDS);
+				return;
+			}
+
+			continueHandlePacketIn(sw, pi, eth, deviceObject);
+		} finally {
+			deviceStorage.rollback();
 		}
-		
-		continueHandlePacketIn(sw, pi, eth, deviceObject);
 	}
 	
 	private class WaitDeviceArp implements Runnable {
@@ -285,14 +287,18 @@
 
 		@Override
 		public void run() {
+			try {
 				IDeviceObject deviceObject = deviceStorage.getDeviceByMac(HexString.toHexString(eth.getDestinationMACAddress()));
-				if(deviceObject == null){
-					log.debug("wait {}ms and device was not found. Send broadcast packet and the thread finish.", SLEEP_TIME_FOR_DB_DEVICE_INSTALLED);
-					handleBroadcast(sw, pi, eth);
-					return;
-				}
-				log.debug("wait {}ms and device {} was found, continue",SLEEP_TIME_FOR_DB_DEVICE_INSTALLED, deviceObject.getMACAddress());
-				continueHandlePacketIn(sw, pi, eth, deviceObject);
+					if(deviceObject == null){
+						log.debug("wait {}ms and device was not found. Send broadcast packet and the thread finish.", SLEEP_TIME_FOR_DB_DEVICE_INSTALLED);
+						handleBroadcast(sw, pi, eth);
+						return;
+					}
+					log.debug("wait {}ms and device {} was found, continue",SLEEP_TIME_FOR_DB_DEVICE_INSTALLED, deviceObject.getMACAddress());
+					continueHandlePacketIn(sw, pi, eth, deviceObject);
+			} finally {
+				deviceStorage.rollback();
+			}
 		}
 	}
 
