public boolean commit(){
		synchronized (fatherTable){
			for(Map.Entry<Column, ValueWithTimestamp> entry:localData.entrySet()){
				Column col=entry.getKey();
				ValueWithTimestamp data=entry.getValue();
				Long oldNow=fatherTable.getLatestTimestamp(row, col);
				if(prevData==null)
					System.out.println(null+"");
				Long oldPrev=prevData.get(col);
				if(oldPrev==null)
					oldPrev=(long)-1;
				
				if( oldNow>oldPrev){
					System.out.println("OldNow:"+oldNow);
					System.out.println("OldPrev:"+oldPrev);
					return false; //Some else with a later timestamp has committed first
				}
			}
			//valid to commit
			for(Map.Entry<Column, ValueWithTimestamp> entry:localData.entrySet()){
				Column col=entry.getKey();
				ValueWithTimestamp data=entry.getValue();
				fatherTable.write(row, col, data.timestamp, data.value);
			}
			return true;
		}
	}