code: @Override
  	public void connectionFreed(IManagedConnectionEvent<C> event) {
  		// physical connection is already set free
  		if (!event.getManagedConnection().hasCoreConnection()) {
  			return;
  		}
  		C con = event.getManagedConnection().getCoreConnection();
  		if (con == null || !(con instanceof IXADataRecorderAware)) {
  			return;
  		}
  
  		IXADataRecorderAware messageAwareConnection = (IXADataRecorderAware) con;
  		// Transaction is closed and the xaDataRecorder is destroyed ...
  		IXADataRecorder xaDataRecorder = messageAwareConnection
  				.getXADataRecorder();
  		if (xaDataRecorder == null) {
  			return;
  		}
  
  		// if commit/rollback was performed, nothing happend. If no the logged
  		// data is closed but not destroy. So recovery can happen
  
  		if (event.getManagedConnection().hasTransactionalData()) {
  			xaRecorderRepository.close(); // close without removing the recover
  											// data
  		} else {
  			xaDataRecorder.destroy();
  		}
  		messageAwareConnection.setXADataRecorder(null);
  
  	}
docs: Logger will be closed. If a dataRecorder has remaining transactional data
  an abnormal prgram flow is detected an the data of the logger is not
  destroy but kept to further recovery
  
  @param event
  current connection