[mono/monkeywrench] ad8613b5: Rework data fetching for the front page to be chunkier.
"Rolf Bjarne Kvinge (
[email protected])" <
[email protected]>
Tue, 12 Nov 2013 11:06:08 +0000
| Newsgroups |
gmane.comp.gnome.mono.patches |
| Message-ID |
<000001424bfd6baa-647cfef1-6a0b-423c-b786-71afd582a854-000000@email.amazonses.com> |
Branch: refs/heads/master
Home: https://github.com/mono/monkeywrench
Compare: https://github.com/mono/monkeywrench/compare/91fa40cefd19...ad8613b535f3
Commit: ad8613b535f3311d25acfc15be8afdfb3ea20596
Author: Rolf Bjarne Kvinge <[email protected]> (rolfbjarne)
Date: 2013-11-12 11:04:52 GMT
URL: https://github.com/mono/monkeywrench/commit/ad8613b535f3311d25acfc15be8afdfb3ea20596
Rework data fetching for the front page to be chunkier.
Changed paths:
M MonkeyWrench.Web.WebService/WebServices.asmx.cs
Modified: MonkeyWrench.Web.WebService/WebServices.asmx.cs
===================================================================
@@ -1026,7 +1026,6 @@ public FrontPageResponse GetFrontPageData3 (WebServiceLogin login, int page_size
List<DBLane> Lanes = new List<DBLane> ();
List<DBHost> Hosts = new List<DBHost> ();
List<DBHostLane> HostLanes = new List<DBHostLane> ();
- List<DBRevisionWorkView2> RevisionWork;
page_size = Math.Min (page_size, 500);
@@ -1092,23 +1091,42 @@ FROM HostLane
response.RevisionWorkViews = new List<List<DBRevisionWorkView2>> ();
response.RevisionWorkHostLaneRelation = new List<int> ();
- foreach (DBHostLane hl in HostLanes) {
- RevisionWork = new List<DBRevisionWorkView2> ();
- using (IDbCommand cmd = db.CreateCommand ()) {
- cmd.CommandText = @"SELECT R.* FROM (" + DBRevisionWorkView2.SQL.Replace (';', ' ') + ") AS R WHERE R.host_id = @host_id AND R.lane_id = @lane_id LIMIT @limit OFFSET @offset";
- DB.CreateParameter (cmd, "host_id", hl.host_id);
- DB.CreateParameter (cmd, "lane_id", hl.lane_id);
- DB.CreateParameter (cmd, "limit", page_size);
- DB.CreateParameter (cmd, "offset", page * page_size);
+ using (IDbCommand cmd = db.CreateCommand ()) {
+ var revisionworklists = new Queue<List<DBRevisionWorkView2>> ();
- using (IDataReader reader = cmd.ExecuteReader ()) {
+ for (int i = 0; i < HostLanes.Count; i++) {
+ DBHostLane hl = HostLanes [i];
+ var RevisionWork = new List<DBRevisionWorkView2> ();
+ revisionworklists.Enqueue (RevisionWork);
+
+ var stri = i.ToString ();
+ cmd.CommandText += @"SELECT R.* FROM (" + DBRevisionWorkView2.SQL.Replace (';', ' ') + ") AS R WHERE " +
+ "R.host_id = @host_id" + stri + " AND R.lane_id = @lane_id" + stri + " LIMIT @limit OFFSET @offset;\n";
+ DB.CreateParameter (cmd, "host_id" + stri, hl.host_id);
+ DB.CreateParameter (cmd, "lane_id" + stri, hl.lane_id);
+
+ response.RevisionWorkHostLaneRelation.Add (hl.id);
+ response.RevisionWorkViews.Add (RevisionWork);
+ }
+
+ DB.CreateParameter (cmd, "limit", page_size);
+ DB.CreateParameter (cmd, "offset", page * page_size);
+
+ using (IDataReader reader = cmd.ExecuteReader ()) {
+ while (reader.NextResult ()) {
+ if (revisionworklists.Count == 0)
+ throw new Exception ("GetFrontPageData3: got more datasets back for revision works than expected. This is most likely a bug, not a configuration issue.");
+
+ var RevisionWork = revisionworklists.Dequeue ();
while (reader.Read ())
RevisionWork.Add (new DBRevisionWorkView2 (reader));
}
+
+ if (revisionworklists.Count != 0)
+ throw new Exception ("GetFrontPageData3: got fewer datasets back for revision works than expected. This is most likely a bug, not a configuration issue.");
+
}
- response.RevisionWorkHostLaneRelation.Add (hl.id);
- response.RevisionWorkViews.Add (RevisionWork);
}
// Create a list of all the lanes which have hostlanes
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches