Ticket #11318: patch2

File patch2, 9.6 KB (added by verycoldpenguin@…, 14 years ago)

Patch2 - Ugly patch to mask the effects of truncated data being returned from slave backends

Line 
1diff --git a/mythtv/programs/mythbackend/mainserver.cpp b/mythtv/programs/mythbackend/mainserver.cpp
2index f38ba4a..d0a5aa9 100644
3--- a/mythtv/programs/mythbackend/mainserver.cpp
4+++ b/mythtv/programs/mythbackend/mainserver.cpp
5@@ -4465,8 +4465,10 @@ void MainServer::BackendQueryDiskSpace(QStringList &strlist, bool consolidated,
6 {
7 // If we don't have any dirs of our own, fallback to list of Default
8 // dirs since that is what StorageGroup::Init() does.
9+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP Checking Storage group directories"));
10 if (!query.size())
11 {
12+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP This host does not have any specific directories"));
13 query.prepare("SELECT MIN(id),dirname "
14 "FROM storagegroup "
15 "WHERE groupname = :GROUP "
16@@ -4482,12 +4484,15 @@ void MainServer::BackendQueryDiskSpace(QStringList &strlist, bool consolidated,
17 int bSize;
18 while (query.next())
19 {
20+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP Start Query"));
21+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP Query start size %1").arg(strlist.size()));
22 dirID = query.value(0).toString();
23 /* The storagegroup.dirname column uses utf8_bin collation, so Qt
24 * uses QString::fromAscii() for toString(). Explicitly convert the
25 * value using QString::fromUtf8() to prevent corruption. */
26 currentDir = QString::fromUtf8(query.value(1)
27 .toByteArray().constData());
28+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP Directory %1").arg(currentDir));
29 if (currentDir.right(1) == "/")
30 currentDir.remove(currentDir.length() - 1, 1);
31
32@@ -4496,6 +4501,7 @@ void MainServer::BackendQueryDiskSpace(QStringList &strlist, bool consolidated,
33 {
34 if (checkDir.exists())
35 {
36+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP Directory exists"));
37 QByteArray cdir = currentDir.toAscii();
38 getDiskSpace(cdir.constData(), totalKB, usedKB);
39 memset(&statbuf, 0, sizeof(statbuf));
40@@ -4532,8 +4538,12 @@ void MainServer::BackendQueryDiskSpace(QStringList &strlist, bool consolidated,
41 foundDirs[currentDir] = true;
42 }
43 else
44+ {
45+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP Directory doesn't exist"));
46 foundDirs[currentDir] = false;
47+ }
48 }
49+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP Leaving Query"));
50 }
51 }
52
53@@ -4567,7 +4577,9 @@ void MainServer::BackendQueryDiskSpace(QStringList &strlist, bool consolidated,
54
55 for (list<PlaybackSock *>::iterator p = localPlaybackList.begin() ;
56 p != localPlaybackList.end() ; ++p) {
57+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP start size %1").arg(strlist.size()));
58 (*p)->GetDiskSpace(strlist);
59+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP end size %1").arg(strlist.size()));
60 (*p)->DecrRef();
61 }
62 }
63@@ -4578,21 +4590,82 @@ void MainServer::BackendQueryDiskSpace(QStringList &strlist, bool consolidated,
64 FileSystemInfo fsInfo;
65 QList<FileSystemInfo> fsInfos;
66
67- QStringList::const_iterator it = strlist.begin();
68- while (it != strlist.end())
69- {
70- fsInfo.setHostname(*(it++));
71- fsInfo.setPath(*(it++));
72- fsInfo.setLocal((*(it++)).toInt() > 0);
73+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, "In trigger");
74+ QStringList::const_iterator it = strlist.constBegin();
75+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP Received %1").arg(strlist.size()));
76+ int size=strlist.size();
77+ int counter=0;
78+ while((size-counter)>7){
79+
80+ fsInfo.setHostname((strlist.value(counter)));
81+ counter++;
82+ fsInfo.setPath((strlist.value(counter)));
83+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPFilesystem %1").arg(fsInfo.getPath()));
84+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPHostname %1").arg(fsInfo.getHostname()));
85+ counter++;
86+ fsInfo.setLocal(((strlist.value(counter))).toInt() > 0);
87+ counter++;
88+ fsInfo.setFSysID(-1);
89+ counter++;
90+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPLocal %1").arg(fsInfo.isLocal()));
91+ //LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPFSID %1").arg(fsInfo.getFSysID()));
92+ fsInfo.setGroupID(((strlist.value(counter))).toInt());
93+ counter++;
94+ fsInfo.setBlockSize(((strlist.value(counter))).toInt());
95+ counter++;
96+ fsInfo.setTotalSpace(((strlist.value(counter))).toLongLong());
97+ counter++;
98+ fsInfo.setUsedSpace(((strlist.value(counter))).toLongLong());
99+ counter++;
100+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPGID %1").arg(fsInfo.getGroupID()));
101+ fsInfos.push_back(fsInfo);
102+ }
103+
104+/* while (it != strlist.constEnd())
105+ {
106+ fsInfo.setHostname(*(it++));
107+ fsInfo.setPath(*(it++));
108+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPFilesystem %1").arg(fsInfo.getPath()));
109+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPHostname %1").arg(fsInfo.getHostname()));
110+ fsInfo.setLocal((*(it++)).toInt() > 0);
111 fsInfo.setFSysID(-1);
112 ++it; // Without this, the strlist gets out of whack
113- fsInfo.setGroupID((*(it++)).toInt());
114+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPLocal %1").arg(fsInfo.isLocal()));
115+ //LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPFSID %1").arg(fsInfo.getFSysID()));
116+ fsInfo.setGroupID((*(it++)).toInt());
117 fsInfo.setBlockSize((*(it++)).toInt());
118 fsInfo.setTotalSpace((*(it++)).toLongLong());
119 fsInfo.setUsedSpace((*(it++)).toLongLong());
120+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CPGID %1").arg(fsInfo.getGroupID()));
121+// fsInfo.setBlockSize((*(it)).toInt());
122+// fsInfo.setTotalSpace((*(it)).toLongLong());
123+// fsInfo.setUsedSpace((*(it)).toLongLong());
124+ fsInfos.push_back(fsInfo);
125+// ++it;
126+ }
127+*/
128+/* {
129+ fsInfo.setHostname(*(it++));
130+ fsInfo.setPath(*(it++));
131+ LOG(VB_SCHEDULE | VB_FILE, LOG_DEBUG, QString("CPFilesystem %1").arg(fsInfo.getPath()));
132+ LOG(VB_SCHEDULE | VB_FILE, LOG_DEBUG, QString("CPHostname %1").arg(fsInfo.getHostname()));
133+ //LOG(VB_SCHEDULE | VB_FILE, LOG_DEBUG, QString("CPLocal %1").arg((*it)));
134+ fsInfo.setLocal((*(it++)).toInt() > 0);
135+it++;
136+ LOG(VB_SCHEDULE | VB_FILE, LOG_DEBUG, QString("CPLocal %1").arg(fsInfo.isLocal()));
137+ fsInfo.setFSysID((*(it++)).toInt());
138+ LOG(VB_SCHEDULE | VB_FILE, LOG_DEBUG, QString("CPFSID %1").arg(fsInfo.getFSysID()));
139+ fsInfo.setGroupID((*(it++)).toInt());
140+ LOG(VB_SCHEDULE | VB_FILE, LOG_DEBUG, QString("CPGID %1").arg(fsInfo.getGroupID()));
141+ fsInfo.setBlockSize((*(it)).toInt());
142+ fsInfo.setTotalSpace((*(it)).toLongLong());
143+ fsInfo.setUsedSpace((*(it)).toLongLong());
144 fsInfos.push_back(fsInfo);
145+ ++it;
146 }
147+*/
148 strlist.clear();
149+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, "Out trigger");
150
151 // Consolidate hosts sharing storage
152 int64_t maxWriteFiveSec = GetCurrentMaxBitrate()/12 /*5 seconds*/;
153@@ -4673,14 +4746,46 @@ void MainServer::GetFilesystemInfos(QList<FileSystemInfo> &fsInfos)
154
155 BackendQueryDiskSpace(strlist, false, true);
156
157- QStringList::const_iterator it = strlist.begin();
158- while (it != strlist.end())
159+ QStringList::const_iterator it = strlist.constBegin();
160+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP2 Received %1").arg(strlist.size()));
161+
162+ int size=strlist.size();
163+ int counter=0;
164+ while ((size-counter)>7)
165+ {
166+ fsInfo.setHostname((strlist.value(counter)));
167+ counter++;
168+ fsInfo.setPath((strlist.value(counter)));
169+ counter++;
170+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP2Filesystem %1").arg(fsInfo.getPath()));
171+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP2Hostname %1").arg(fsInfo.getHostname()));
172+ fsInfo.setLocal(((strlist.value(counter))).toInt() > 0);
173+ counter++;
174+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP2Local %1").arg(fsInfo.isLocal()));
175+ fsInfo.setFSysID(-1);
176+ //it++;
177+ counter++;
178+ fsInfo.setGroupID(((strlist.value(counter))).toInt());
179+ counter++;
180+ fsInfo.setBlockSize(((strlist.value(counter))).toInt());
181+ counter++;
182+ fsInfo.setTotalSpace(((strlist.value(counter))).toLongLong());
183+ counter++;
184+ fsInfo.setUsedSpace(((strlist.value(counter))).toLongLong());
185+ counter++;
186+ fsInfo.setWeight(0);
187+ fsInfos.push_back(fsInfo);
188+ }
189+/* while (it != strlist.constEnd())
190 {
191 fsInfo.setHostname(*(it++));
192 fsInfo.setPath(*(it++));
193+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP2Filesystem %1").arg(fsInfo.getPath()));
194+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP2Hostname %1").arg(fsInfo.getHostname()));
195 fsInfo.setLocal((*(it++)).toInt() > 0);
196+ LOG(VB_SCHEDULE | VB_FILE, LOG_INFO, QString("CP2Local %1").arg(fsInfo.isLocal()));
197 fsInfo.setFSysID(-1);
198- ++it;
199+ it++;
200 fsInfo.setGroupID((*(it++)).toInt());
201 fsInfo.setBlockSize((*(it++)).toInt());
202 fsInfo.setTotalSpace((*(it++)).toLongLong());
203@@ -4688,7 +4793,7 @@ void MainServer::GetFilesystemInfos(QList<FileSystemInfo> &fsInfos)
204 fsInfo.setWeight(0);
205 fsInfos.push_back(fsInfo);
206 }
207-
208+*/
209 LOG(VB_SCHEDULE | VB_FILE, LOG_DEBUG, "Determining unique filesystems");
210 size_t maxWriteFiveSec = GetCurrentMaxBitrate()/12 /*5 seconds*/;
211 // safety for NFS mounted dirs