summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/prserv/client.py4
-rw-r--r--bitbake/lib/prserv/db.py64
-rw-r--r--bitbake/lib/prserv/serv.py3
3 files changed, 6 insertions, 65 deletions
diff --git a/bitbake/lib/prserv/client.py b/bitbake/lib/prserv/client.py
index 565c6f3872..9f5794c433 100644
--- a/bitbake/lib/prserv/client.py
+++ b/bitbake/lib/prserv/client.py
@@ -42,9 +42,9 @@ class PRAsyncClient(bb.asyncrpc.AsyncClient):
42 if response: 42 if response:
43 return response["value"] 43 return response["value"]
44 44
45 async def importone(self, version, pkgarch, checksum, value, history=False): 45 async def importone(self, version, pkgarch, checksum, value):
46 response = await self.invoke( 46 response = await self.invoke(
47 {"import-one": {"version": version, "pkgarch": pkgarch, "checksum": checksum, "value": value, "history": history}} 47 {"import-one": {"version": version, "pkgarch": pkgarch, "checksum": checksum, "value": value}}
48 ) 48 )
49 if response: 49 if response:
50 return response["value"] 50 return response["value"]
diff --git a/bitbake/lib/prserv/db.py b/bitbake/lib/prserv/db.py
index 88ed8e2125..2da493ddf5 100644
--- a/bitbake/lib/prserv/db.py
+++ b/bitbake/lib/prserv/db.py
@@ -192,67 +192,9 @@ class PRTable(object):
192 self.store_value(version, pkgarch, checksum, value) 192 self.store_value(version, pkgarch, checksum, value)
193 return value 193 return value
194 194
195 def _import_hist(self, version, pkgarch, checksum, value): 195 def importone(self, version, pkgarch, checksum, value):
196 if self.read_only: 196 self.store_value(version, pkgarch, checksum, value)
197 return None 197 return value
198
199 val = None
200 with closing(self.conn.cursor()) as cursor:
201 data = cursor.execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table,
202 (version, pkgarch, checksum))
203 row = data.fetchone()
204 if row is not None:
205 val=row[0]
206 else:
207 #no value found, try to insert
208 try:
209 cursor.execute("INSERT INTO %s VALUES (?, ?, ?, ?);" % (self.table),
210 (version, pkgarch, checksum, value))
211 except sqlite3.IntegrityError as exc:
212 logger.error(str(exc))
213
214 self.conn.commit()
215
216 data = cursor.execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=?;" % self.table,
217 (version, pkgarch, checksum))
218 row = data.fetchone()
219 if row is not None:
220 val = row[0]
221 return val
222
223 def _import_no_hist(self, version, pkgarch, checksum, value):
224 if self.read_only:
225 return None
226
227 with closing(self.conn.cursor()) as cursor:
228 try:
229 #try to insert
230 cursor.execute("INSERT INTO %s VALUES (?, ?, ?, ?);" % (self.table),
231 (version, pkgarch, checksum, value))
232 except sqlite3.IntegrityError as exc:
233 #already have the record, try to update
234 try:
235 cursor.execute("UPDATE %s SET value=? WHERE version=? AND pkgarch=? AND checksum=? AND value<?"
236 % (self.table),
237 (value, version, pkgarch, checksum, value))
238 except sqlite3.IntegrityError as exc:
239 logger.error(str(exc))
240
241 self.conn.commit()
242
243 data = cursor.execute("SELECT value FROM %s WHERE version=? AND pkgarch=? AND checksum=? AND value>=?;" % self.table,
244 (version, pkgarch, checksum, value))
245 row=data.fetchone()
246 if row is not None:
247 return row[0]
248 else:
249 return None
250
251 def importone(self, version, pkgarch, checksum, value, history=False):
252 if history:
253 return self._import_hist(version, pkgarch, checksum, value)
254 else:
255 return self._import_no_hist(version, pkgarch, checksum, value)
256 198
257 def export(self, version, pkgarch, checksum, colinfo, history=False): 199 def export(self, version, pkgarch, checksum, colinfo, history=False):
258 metainfo = {} 200 metainfo = {}
diff --git a/bitbake/lib/prserv/serv.py b/bitbake/lib/prserv/serv.py
index 3992056f88..e175886308 100644
--- a/bitbake/lib/prserv/serv.py
+++ b/bitbake/lib/prserv/serv.py
@@ -179,9 +179,8 @@ class PRServerClient(bb.asyncrpc.AsyncServerConnection):
179 pkgarch = request["pkgarch"] 179 pkgarch = request["pkgarch"]
180 checksum = request["checksum"] 180 checksum = request["checksum"]
181 value = request["value"] 181 value = request["value"]
182 history = request["history"]
183 182
184 value = self.server.table.importone(version, pkgarch, checksum, value, history) 183 value = self.server.table.importone(version, pkgarch, checksum, value)
185 if value is not None: 184 if value is not None:
186 response = {"value": value} 185 response = {"value": value}
187 186