private FileChannel findOrCreateNewLogFile() {
		
		long currentSyncTime = writer.getSyncTime();
		
		resetCurrentChannel(currentMaxTxnTime);
		
		for (int i = 0; i < logFiles.size(); i++) {
			if (i == currentFilePosn) {
				continue;
			}
			FileChannel channel = logFiles.get(i).getChannel();
			long size = 0;
			try {
				size = channel.size();
			} catch (IOException e1) {
				e1.printStackTrace();
			} 
			if (size == 0) {
				continue;
			}
			try {
				channel.position(0);
			} catch (IOException e) {
			}
			ByteBuffer buffer = ByteBuffer.allocate(Long.SIZE/8); 
			try {
				channel.read(buffer);
			} catch (IOException e) {
				e.printStackTrace();
			}
			buffer.flip();
			long l = buffer.getLong();
			if (currentSyncTime >= l) {
				currentFilePosn = i;
				resetCurrentChannel(Long.MAX_VALUE);
				return channel;
			}
		}
		
		// create new one
		RandomAccessFile raf = null;
		try {
			raf = new RandomAccessFile(filePath+"/redolog"+logFiles.size(), "rw");
			logFiles.add(raf);
			currentFilePosn = logFiles.size()-1;
			resetCurrentChannel(Long.MAX_VALUE);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		return logFiles.get(currentFilePosn).getChannel();
	}