public static CassandraJob GetJob(CassandraContext db, int hide_time_sec) { loop: dynamic job = null; for (int i = 0; i < 1000; i++) { var jobs = db.ExecuteQuery(SelectCQL_Main(1000)).ToArray(); var mx = jobs.Length < 1000 ? jobs.Length - 1 : 1000; if (mx == -1) { break; } job = jobs[rnd.Value.Next(mx)]; if (job["hidden_till"] < ToUnixTime(DateTimeOffset.UtcNow)) { break; } } if (job != null) { var myID = Guid.NewGuid(); var ret = new CassandraJob(job, myID); db.ExecuteNonQuery(HideRowCQL_Trans(ret.GetID(), ret.GetAckID())); var cnt = db.ExecuteQuery(SelectCQL_Trans(ret.GetID(), 1000)).ToArray(); var counter = cnt.First()["count"]; if (counter > 1) { db.ExecuteNonQuery(DeleteRowCQL_Trans(ret.GetID())); goto loop; } if (counter == 0) { goto loop; } db.ExecuteNonQuery(HideRowCQL_Main2(ret.GetID(), hide_time_sec, ret.GetLogic(), ret.GetCommand())); return(ret); } else { return(null); } }
public static CassandraJob GetJob(CassandraContext db, int hide_time_sec) { loop: dynamic job = null; for (int i = 0; i < 1000; i++) { var jobs = db.ExecuteQuery(SelectCQL_Main(1000)).ToArray(); var mx = jobs.Length < 1000 ? jobs.Length - 1 : 1000; if (mx == -1) break; job = jobs[rnd.Value.Next(mx)]; if (job["hidden_till"] < ToUnixTime(DateTimeOffset.UtcNow)) break; } if (job != null) { var myID = Guid.NewGuid(); var ret = new CassandraJob(job, myID); db.ExecuteNonQuery(HideRowCQL_Trans(ret.GetID(), ret.GetAckID())); var cnt = db.ExecuteQuery(SelectCQL_Trans(ret.GetID(), 1000)).ToArray(); var counter = cnt.First()["count"]; if (counter > 1) { db.ExecuteNonQuery(DeleteRowCQL_Trans(ret.GetID())); goto loop; } if (counter == 0) goto loop; db.ExecuteNonQuery(HideRowCQL_Main2(ret.GetID(), hide_time_sec,ret.GetLogic(),ret.GetCommand())); return ret; } else return null; }
public static void DeleteJob(CassandraContext db, CassandraJob job) { db.ExecuteNonQuery(DeleteRowCQL_Main((job as CassandraJob).GetID())); db.ExecuteNonQuery(DeleteRowCQL_Trans((job as CassandraJob).GetID())); }