Bug 206861 The data set cache should handle IOException and the cancel request from customer
The data set data will be saved into disk file in the first query and it will be loaded in the later time. The processing of write disk file may be cancelled by customer request or IOException. Using the data from the bad file will cause error.
data/org.eclipse.birt.data/src/org/eclipse/birt/data/engine/executor/cache/SmartCacheHelper.java
{
		if ( sortSpec == null )
			return null;
		final int[] sortKeyIndexes = sortSpec.sortKeyIndexes;
		final String[] sortKeyColumns = sortSpec.sortKeyColumns;
		if ( sortKeyIndexes == null || sortKeyIndexes.length == 0 )
			return null;
		final boolean[] sortAscending = sortSpec.sortAscending;
		Comparator comparator = new Comparator( ) {
			/**
			 * compares two row indexes, actually compares two rows pointed by
			 * the two row indexes
			 */
			public int compare( Object obj1, Object obj2 )
			{
				IResultObject row1 = (IResultObject) obj1;
				IResultObject row2 = (IResultObject) obj2;
				
				for ( int i = 0; i < sortKeyIndexes.length; i++ )
				{
					int colIndex = sortKeyIndexes[i];
					String colName = sortKeyColumns[i];
					try
					{
						Object colObj1 = null;
						Object colObj2 = null;
						if ( eventHandler != null )
						{
							colObj1 = eventHandler.getValue( row1,
									colIndex,