[Qa-jenkins-scm] [jenkins.debian.net] 04/10: reproducible db: s, builder, job, also in the schedule table.

Holger Levsen holger at moszumanska.debian.org
Wed Dec 9 10:30:06 UTC 2015


This is an automated email from the git hooks/post-receive script.

holger pushed a commit to branch master
in repository jenkins.debian.net.

commit e8a1da03fee36b81a2fb75e3c564237e66931a5c
Author: Mattia Rizzolo <mattia at mapreri.org>
Date:   Sat Oct 17 23:44:30 2015 +0000

    reproducible db: s,builder,job, also in the schedule table.
---
 bin/reproducible_build.sh          | 18 +++++++++---------
 bin/reproducible_db_maintenance.py | 21 +++++++++++++++++++++
 bin/reproducible_scheduler.py      |  4 ++--
 3 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/bin/reproducible_build.sh b/bin/reproducible_build.sh
index 79bc306..e825631 100755
--- a/bin/reproducible_build.sh
+++ b/bin/reproducible_build.sh
@@ -24,8 +24,8 @@ create_results_dirs() {
 
 handle_race_condition() {
 	echo | tee -a $BUILDLOG
-	local RESULT=$(sqlite3 -init $INIT ${PACKAGES_DB} "SELECT builder FROM schedule WHERE package_id='$SRCPKGID'")
-	local msg="Warning, package ${SRCPACKAGE} (id=$SRCPKGID) in ${SUITE} is building at $RESULT, this is $BUILD_URL.\n"
+	local RESULT=$(sqlite3 -init $INIT ${PACKAGES_DB} "SELECT job FROM schedule WHERE package_id='$SRCPKGID'")
+	local msg="Warning, package ${SRCPACKAGE} (id=$SRCPKGID) in ${SUITE} on ${ARCH} is probably already building at $RESULT, while this is $BUILD_URL.\n"
 	printf "$msg" | tee -a $BUILDLOG
 	printf "$(date -u) - $msg" >> /var/log/jenkins/reproducible-race-conditions.log
 	echo "$(date -u) - Terminating this build quickly and nicely..." | tee -a $RBUILDLOG
@@ -275,7 +275,7 @@ handle_reproducible() {
 
 unregister_build() {
 	# unregister this build so it will immeditiatly tried again
-	sqlite3 -init $INIT ${PACKAGES_DB} "UPDATE schedule SET date_build_started='', builder='' WHERE package_id='$SRCPKGID'"
+	sqlite3 -init $INIT ${PACKAGES_DB} "UPDATE schedule SET date_build_started='', job='' WHERE package_id='$SRCPKGID'"
 	NOTIFY=""
 }
 
@@ -401,7 +401,7 @@ call_diffoscope_on_changes_files() {
 
 choose_package() {
 	local RESULT=$(sqlite3 -init $INIT ${PACKAGES_DB} "
-		SELECT s.suite, s.id, s.name, sch.date_scheduled, sch.save_artifacts, sch.notify, s.notify_maintainer, sch.builder
+		SELECT s.suite, s.id, s.name, sch.date_scheduled, sch.save_artifacts, sch.notify, s.notify_maintainer
 		FROM schedule AS sch JOIN sources AS s ON sch.package_id=s.id
 		WHERE sch.date_build_started=''
 		AND s.architecture='$ARCH'
@@ -421,13 +421,13 @@ choose_package() {
 	# remove previous build attempts which didnt finish correctly:
 	BUILDER_PREFIX="${JOB_NAME#reproducible_builder_}/"
 	BAD_BUILDS=$(mktemp --tmpdir=$TMPDIR)
-	sqlite3 -init $INIT ${PACKAGES_DB} "SELECT package_id, date_build_started, builder FROM schedule WHERE builder LIKE '${BUILDER_PREFIX}%'" > $BAD_BUILDS
+	sqlite3 -init $INIT ${PACKAGES_DB} "SELECT package_id, date_build_started, job FROM schedule WHERE job LIKE '${BUILDER_PREFIX}%'" > $BAD_BUILDS
 	if [ -s "$BAD_BUILDS" ] ; then
 		local STALELOG=/var/log/jenkins/reproducible-stale-builds.log
 		# reproducible-stale-builds.log is mailed once a day by reproducible_maintenance.sh
 		echo "$(date -u) - stale builds found, cleaning db from these:" | tee -a $STALELOG
 		cat $BAD_BUILDS | tee -a $STALELOG
-		sqlite3 -init $INIT ${PACKAGES_DB} "UPDATE schedule SET date_build_started='', builder='' WHERE builder LIKE '${BUILDER_PREFIX}%'"
+		sqlite3 -init $INIT ${PACKAGES_DB} "UPDATE schedule SET date_build_started='', job='' WHERE job LIKE '${BUILDER_PREFIX}%'"
 		echo >> $STALELOG
 	fi
 	rm -f $BAD_BUILDS
@@ -437,8 +437,8 @@ choose_package() {
 	if [ -z "$RESULT" ] ; then
 		echo "ok, $SRCPACKAGE is not building anywhere…"
 		# try to update the schedule with our build attempt, then check no else did it, if so, abort
-		sqlite3 -init $INIT ${PACKAGES_DB} "UPDATE schedule SET date_build_started='$DATE', builder='$JOB' WHERE package_id='$SRCPKGID' AND date_build_started=''"
-		RESULT=$(sqlite3 -init $INIT ${PACKAGES_DB} "SELECT date_build_started FROM schedule WHERE package_id='$SRCPKGID' AND date_build_started='$DATE' AND builder='$JOB'")
+		sqlite3 -init $INIT ${PACKAGES_DB} "UPDATE schedule SET date_build_started='$DATE', job='$JOB' WHERE package_id='$SRCPKGID' AND date_build_started=''"
+		RESULT=$(sqlite3 -init $INIT ${PACKAGES_DB} "SELECT date_build_started FROM schedule WHERE package_id='$SRCPKGID' AND date_build_started='$DATE' AND job='$JOB'")
 		if [ -z "$RESULT" ] ; then
 			echo "hm, seems $SRCPACKAGE is building somewhere… failed to update the schedule table with our build ($SRCPKGID, $DATE, $JOB)."
 			handle_race_condition
@@ -693,7 +693,7 @@ build_rebuild() {
 	if [ ! -f b1/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] && [ -f b1/${SRCPACKAGE}_*_${ARCH}.changes ] ; then
 			echo "Version mismatch between main node (${SRCPACKAGE}_${EVERSION}_${ARCH}.dsc expected) and first build node ($(ls b1/*dsc)) for $SUITE/$ARCH, aborting. Please upgrade the schroots..." | tee -a ${RBUILDLOG}
 			# reschedule the package for later and quit the build without saving anything
-			sqlite3 -init $INIT ${PACKAGES_DB} "UPDATE schedule SET date_build_started='', builder='', date_scheduled='$(date -u +'%Y-%m-%d %H:%M')' WHERE package_id='$SRCPKGID'"
+			sqlite3 -init $INIT ${PACKAGES_DB} "UPDATE schedule SET date_build_started='', job='', date_scheduled='$(date -u +'%Y-%m-%d %H:%M')' WHERE package_id='$SRCPKGID'"
 			NOTIFY=""
 			exit 0
 	elif [ -f b1/${SRCPACKAGE}_${EVERSION}_${ARCH}.changes ] ; then
diff --git a/bin/reproducible_db_maintenance.py b/bin/reproducible_db_maintenance.py
index ec01205..9bed659 100755
--- a/bin/reproducible_db_maintenance.py
+++ b/bin/reproducible_db_maintenance.py
@@ -525,6 +525,27 @@ schema_updates = {
         'DROP TABLE results',
         'ALTER TABLE results_tmp RENAME TO results',
         'INSERT INTO rb_schema VALUES ("24", "' + now + '")'],
+    25: [ # rename the builder column also on the schedule table.
+        '''CREATE TABLE schedule_tmp
+           (id INTEGER PRIMARY KEY,
+            package_id INTEGER NOT NULL,
+            date_scheduled TEXT NOT NULL,
+            scheduler TEXT,
+            date_build_started TEXT,
+            job TEXT,
+            notify TEXT NOT NULL DEFAULT '',
+            save_artifacts INTEGER DEFAULT 0,
+            UNIQUE (package_id),
+            FOREIGN KEY(package_id) REFERENCES sources(id))''',
+        'UPDATE schedule SET notify = "" WHERE notify IS NULL',
+        '''INSERT INTO schedule_tmp (id, package_id, date_scheduled, scheduler,
+                    date_build_started, job, notify, save_artifacts)
+           SELECT id, package_id, date_scheduled, scheduler,
+                    date_build_started, builder, notify, save_artifacts
+           FROM schedule''',
+        'DROP TABLE schedule',
+        'ALTER TABLE schedule_tmp RENAME TO schedule',
+        'INSERT INTO rb_schema VALUES ("25", "' + now + '")'],
 }
 
 
diff --git a/bin/reproducible_scheduler.py b/bin/reproducible_scheduler.py
index 31d0f3f..3149cef 100755
--- a/bin/reproducible_scheduler.py
+++ b/bin/reproducible_scheduler.py
@@ -301,8 +301,8 @@ def schedule_packages(packages):
     pkgs = ((x, packages[x]) for x in packages)
     log.debug('IDs about to be scheduled: ' + str(packages.keys()))
     query = 'INSERT INTO schedule ' + \
-            '(package_id, date_scheduled, date_build_started) ' + \
-            'VALUES (?, ?, "")'
+            '(package_id, date_scheduled) ' + \
+            'VALUES (?, ?)'
     cursor = conn_db.cursor()
     cursor.executemany(query, pkgs)
     conn_db.commit()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/qa/jenkins.debian.net.git



More information about the Qa-jenkins-scm mailing list