Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package openQA for openSUSE:Factory checked 
in at 2026-01-20 21:05:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openQA (Old)
 and      /work/SRC/openSUSE:Factory/.openQA.new.1928 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openQA"

Tue Jan 20 21:05:16 2026 rev:796 rq:1328269 version:5.1768856318.847e4fc7

Changes:
--------
--- /work/SRC/openSUSE:Factory/openQA/openQA.changes    2026-01-17 
21:44:02.129081418 +0100
+++ /work/SRC/openSUSE:Factory/.openQA.new.1928/openQA.changes  2026-01-20 
21:05:28.934349385 +0100
@@ -1,0 +2,10 @@
+Tue Jan 20 13:17:03 UTC 2026 - [email protected]
+
+- Update to version 5.1768856318.847e4fc7:
+  * fix(systemd): prevent openqa-gru starting while mounts are unavailable
+  * fix(systemd): try restarts on failure to be more resilient
+  * feat: Show when "Next & Previous" jobs are limited
+  * refactor: Format SQL code for "Next & Previous" jobs more nicely
+  * refactor: Simplify determining latest job in "Next & Previous" list
+
+-------------------------------------------------------------------

Old:
----
  openQA-5.1768564451.45d5d5b2.obscpio

New:
----
  openQA-5.1768856318.847e4fc7.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openQA-client-test.spec ++++++
--- /var/tmp/diff_new_pack.wjISk2/_old  2026-01-20 21:05:29.806385429 +0100
+++ /var/tmp/diff_new_pack.wjISk2/_new  2026-01-20 21:05:29.810385593 +0100
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-client
 Name:           %{short_name}-test
-Version:        5.1768564451.45d5d5b2
+Version:        5.1768856318.847e4fc7
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-devel-test.spec ++++++
--- /var/tmp/diff_new_pack.wjISk2/_old  2026-01-20 21:05:29.838386750 +0100
+++ /var/tmp/diff_new_pack.wjISk2/_new  2026-01-20 21:05:29.842386916 +0100
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-devel
 Name:           %{short_name}-test
-Version:        5.1768564451.45d5d5b2
+Version:        5.1768856318.847e4fc7
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-test.spec ++++++
--- /var/tmp/diff_new_pack.wjISk2/_old  2026-01-20 21:05:29.878388404 +0100
+++ /var/tmp/diff_new_pack.wjISk2/_new  2026-01-20 21:05:29.878388404 +0100
@@ -18,7 +18,7 @@
 
 %define         short_name openQA
 Name:           %{short_name}-test
-Version:        5.1768564451.45d5d5b2
+Version:        5.1768856318.847e4fc7
 Release:        0
 Summary:        Test package for openQA
 License:        GPL-2.0-or-later

++++++ openQA-worker-test.spec ++++++
--- /var/tmp/diff_new_pack.wjISk2/_old  2026-01-20 21:05:29.910389727 +0100
+++ /var/tmp/diff_new_pack.wjISk2/_new  2026-01-20 21:05:29.910389727 +0100
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-worker
 Name:           %{short_name}-test
-Version:        5.1768564451.45d5d5b2
+Version:        5.1768856318.847e4fc7
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA.spec ++++++
--- /var/tmp/diff_new_pack.wjISk2/_old  2026-01-20 21:05:29.958391710 +0100
+++ /var/tmp/diff_new_pack.wjISk2/_new  2026-01-20 21:05:29.958391710 +0100
@@ -99,7 +99,7 @@
 %define devel_requires %devel_no_selenium_requires chromedriver
 
 Name:           openQA
-Version:        5.1768564451.45d5d5b2
+Version:        5.1768856318.847e4fc7
 Release:        0
 Summary:        The openQA web-frontend, scheduler and tools
 License:        GPL-2.0-or-later

++++++ openQA-5.1768564451.45d5d5b2.obscpio -> 
openQA-5.1768856318.847e4fc7.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1768564451.45d5d5b2/assets/javascripts/job_next_previous.js 
new/openQA-5.1768856318.847e4fc7/assets/javascripts/job_next_previous.js
--- old/openQA-5.1768564451.45d5d5b2/assets/javascripts/job_next_previous.js    
2026-01-16 12:54:11.000000000 +0100
+++ new/openQA-5.1768856318.847e4fc7/assets/javascripts/job_next_previous.js    
2026-01-19 21:58:38.000000000 +0100
@@ -28,6 +28,13 @@
         if (typeof params.next_limit != 'undefined') {
           d.next_limit = params.next_limit.toString();
         }
+      },
+      dataSrc: function (json) {
+        const info = json.info;
+        if (Array.isArray(info) && info.length > 0) {
+          addUniqueFlash('info', 'next_previous_info', info.join('<br/>'), 
$(tableElement), 'before');
+        }
+        return json.data;
       }
     },
     paging: true,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1768564451.45d5d5b2/assets/javascripts/openqa.js 
new/openQA-5.1768856318.847e4fc7/assets/javascripts/openqa.js
--- old/openQA-5.1768564451.45d5d5b2/assets/javascripts/openqa.js       
2026-01-16 12:54:11.000000000 +0100
+++ new/openQA-5.1768856318.847e4fc7/assets/javascripts/openqa.js       
2026-01-19 21:58:38.000000000 +0100
@@ -38,7 +38,7 @@
   return typeof text === 'string' ? '<span>' + text + '</span>' : text;
 }
 
-function addFlash(status, text, container) {
+function addFlash(status, text, container, method = 'append') {
   // add flash messages by default on top of the page
   if (!container) {
     container = $('#flash-messages');
@@ -48,11 +48,11 @@
   div.append(makeFlashElement(text));
   div.append('<button type="button" class="btn-close" data-bs-dismiss="alert" 
aria-label="Close"></button>');
   div.addClass('alert-' + status);
-  container.append(div);
+  container[method](div);
   return div;
 }
 
-function addUniqueFlash(status, id, text, container) {
+function addUniqueFlash(status, id, text, container, method = 'append') {
   // add hash to store present flash messages
   if (!window.uniqueFlashMessages) {
     window.uniqueFlashMessages = {};
@@ -64,7 +64,7 @@
     return;
   }
 
-  var msgElement = addFlash(status, text, container);
+  const msgElement = addFlash(status, text, container, method);
   window.uniqueFlashMessages[id] = msgElement;
   msgElement.on('closed.bs.alert', function () {
     delete window.uniqueFlashMessages[id];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1768564451.45d5d5b2/lib/OpenQA/Schema/Result/JobNextPrevious.pm 
new/openQA-5.1768856318.847e4fc7/lib/OpenQA/Schema/Result/JobNextPrevious.pm
--- 
old/openQA-5.1768564451.45d5d5b2/lib/OpenQA/Schema/Result/JobNextPrevious.pm    
    2026-01-16 12:54:11.000000000 +0100
+++ 
new/openQA-5.1768856318.847e4fc7/lib/OpenQA/Schema/Result/JobNextPrevious.pm    
    2026-01-19 21:58:38.000000000 +0100
@@ -13,41 +13,28 @@
 
 # For the time being this is necessary even for virtual views
 __PACKAGE__->table('JobNextPrevious');
+__PACKAGE__->add_columns(source => {data_type => 'text'});
 
 # do not attempt to deploy() this view
 __PACKAGE__->result_source_instance->is_virtual(1);
 
 __PACKAGE__->result_source_instance->view_definition(
-    q[
+    <<~'END_SQL'
     WITH allofjobs AS(
-    SELECT me.*
-    FROM jobs me WHERE me.state=?
-    AND me.result NOT IN (?, ?, ?, ?, ?, ?)
-    AND me.DISTRI=? AND me.VERSION=? AND me.FLAVOR=? AND me.ARCH=?
-    AND me.TEST=? AND me.MACHINE=?
+        SELECT me.* FROM jobs me
+            WHERE me.state=?
+                AND me.result NOT IN (?, ?, ?, ?, ?, ?)
+                AND me.DISTRI=? AND me.VERSION=? AND me.FLAVOR=? AND me.ARCH=?
+                AND me.TEST=? AND me.MACHINE=?
     )
-    (SELECT *
-    FROM jobs
-    WHERE DISTRI=? AND VERSION=? AND FLAVOR=? AND ARCH=? AND TEST=? AND 
MACHINE=?
-    ORDER BY ID DESC
-    LIMIT 1)
-    UNION
-    (SELECT *
-    FROM allofjobs
-    WHERE id > ?
-    ORDER BY ID ASC
-    LIMIT ?)
-    UNION
-    (SELECT *
-    FROM allofjobs
-    WHERE id < ?
-    ORDER BY ID DESC
-    LIMIT ?)
-    UNION
-    (SELECT *
-    FROM jobs
-    WHERE id = ?)
-    ORDER BY ID DESC]
+    ((SELECT *, 'l' AS source FROM jobs
+        WHERE DISTRI=? AND VERSION=? AND FLAVOR=? AND ARCH=? AND TEST=? AND 
MACHINE=?
+        ORDER BY ID DESC LIMIT 1)
+    UNION (SELECT *, 'n' AS source FROM allofjobs WHERE id > ? ORDER BY ID ASC 
LIMIT ? + 1)
+    UNION (SELECT *, 'p' AS source FROM allofjobs WHERE id < ? ORDER BY ID 
DESC LIMIT ? + 1)
+    UNION (SELECT *, 'c' AS source FROM jobs WHERE id = ?)
+    ORDER BY ID DESC)
+    END_SQL
 );
 
 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1768564451.45d5d5b2/lib/OpenQA/WebAPI/Controller/Test.pm 
new/openQA-5.1768856318.847e4fc7/lib/OpenQA/WebAPI/Controller/Test.pm
--- old/openQA-5.1768564451.45d5d5b2/lib/OpenQA/WebAPI/Controller/Test.pm       
2026-01-16 12:54:11.000000000 +0100
+++ new/openQA-5.1768856318.847e4fc7/lib/OpenQA/WebAPI/Controller/Test.pm       
2026-01-19 21:58:38.000000000 +0100
@@ -627,11 +627,16 @@
     my ($children_by_job, $parents_by_job) = 
$self->_fetch_dependencies_by_jobs([map $_->id, @jobs]);
 
     my $comment_data = 
$self->schema->resultset('Comments')->comment_data_for_jobs(\@jobs, {bugdetails 
=> 1});
-    my $latest = 1;
-    my @data;
+    my (@data, @info);
+    my %source_count;    # keep track of how many jobs of which source 
(latest, next, previous) we got for limiting
+    if (@jobs >= 2 && $jobs[0]->id == $jobs[1]->id) {
+        $source_count{$jobs[0]->source} += 1;
+        undef $jobs[0];
+    }
     for my $job (@jobs) {
+        next unless $job;
         my $job_id = $job->id;
-        $latest = $job_id > $latest ? $job_id : $latest;
+        $source_count{$job->source} += 1;
         my $rendered_data = 0;
         if (my $cd = $comment_data->{$job_id}) {
             $rendered_data = $self->_render_comment_data_for_ajax($job_id, 
$cd);
@@ -653,14 +658,23 @@
                 clone => $job->clone_id,
                 failedmodules => $failed_modules_by_job->{$job_id},
                 iscurrent => $job_id == $main_jobid ? 1 : undef,
-                islatest => $job_id == $latest ? 1 : undef,
                 finished => $job->t_finished ? $job->t_finished->datetime() . 
'Z' : undef,
                 duration => $job->t_started
                   && $job->t_finished ? 
$self->format_time_duration($job->t_finished - $job->t_started) : 0,
                 comment_data => $rendered_data,
             });
     }
-    $self->render(json => {data => \@data});
+    $data[0]->{islatest} = 1 if @data;
+    if (($source_count{p} // 0) > $p_limit) {  # the query requests `$p_limit 
+ 1` so we know when the limit was reached
+        push @info, "The number of \"Previous\" jobs exceeds the display limit 
of $p_limit.";
+        pop @data;    # discard the additional "Previous" job
+    }
+    if (($source_count{n} // 0) > $n_limit) {  # the query requests `$n_limit 
+ 1` so we know when the limit was reached
+        push @info, "The number of \"Next\" jobs exceeds the display limit of 
$n_limit. "
+          . 'The first job on the table is still the latest.';
+        splice @data, 1, 1;    # discard the additional "Next" job (preserving 
the first job as it is always the latest)
+    }
+    $self->render(json => {info => \@info, data => \@data});
 }
 
 sub _calculate_preferred_machines ($jobs) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1768564451.45d5d5b2/systemd/openqa-gru.service 
new/openQA-5.1768856318.847e4fc7/systemd/openqa-gru.service
--- old/openQA-5.1768564451.45d5d5b2/systemd/openqa-gru.service 2026-01-16 
12:54:11.000000000 +0100
+++ new/openQA-5.1768856318.847e4fc7/systemd/openqa-gru.service 2026-01-19 
21:58:38.000000000 +0100
@@ -1,6 +1,6 @@
 [Unit]
 Description=The openQA GRU daemon for various background tasks
-After=postgresql.service openqa-setup-db.service
+After=postgresql.service openqa-setup-db.service remote-fs.target
 Wants=openqa-setup-db.service
 
 [Service]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1768564451.45d5d5b2/systemd/openqa-webui.service 
new/openQA-5.1768856318.847e4fc7/systemd/openqa-webui.service
--- old/openQA-5.1768564451.45d5d5b2/systemd/openqa-webui.service       
2026-01-16 12:54:11.000000000 +0100
+++ new/openQA-5.1768856318.847e4fc7/systemd/openqa-webui.service       
2026-01-19 21:58:38.000000000 +0100
@@ -9,6 +9,8 @@
 User=geekotest
 ExecStart=/usr/share/openqa/script/openqa-webui-daemon
 ExecReload=kill -HUP $MAINPID
+Restart=on-failure
+RestartSec=10
 
 [Install]
 WantedBy=multi-user.target
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1768564451.45d5d5b2/t/ui/16-tests_job_next_previous.t 
new/openQA-5.1768856318.847e4fc7/t/ui/16-tests_job_next_previous.t
--- old/openQA-5.1768564451.45d5d5b2/t/ui/16-tests_job_next_previous.t  
2026-01-16 12:54:11.000000000 +0100
+++ new/openQA-5.1768856318.847e4fc7/t/ui/16-tests_job_next_previous.t  
2026-01-19 21:58:38.000000000 +0100
@@ -263,6 +263,7 @@
 wait_for_ajax();
 is(scalar @{$driver->find_elements('#job_next_previous_table tbody tr', 
'css')},
     1, 'job next and previous of the latest job - 99981');
+element_not_present '#job_next_previous_table_wrapper .alert', 'no info about 
limit present';
 
 subtest 'bug reference shown' => sub {
     my @bug_labels = $driver->find_elements('#bug-99981 .label_bug');
@@ -306,6 +307,11 @@
     $t->get_ok('/tests/99910/ajax', 'query with (low) default limit for next 
and previous')->status_is(200);
     $jobs = $t->tx->res->json->{data};
     is ref $jobs, 'ARRAY', 'data returned (5)' and is scalar @$jobs, 6, 
'default limit for next is effective';
+
+    $driver->get('/tests/99910?previous_limit=6&next_limit=0#next_previous');
+    my $info = wait_for_element selector => '#job_next_previous_table_wrapper 
.alert', desc => 'info shown';
+    like $info->get_text, qr/previous.*limit.*6.*next.*limit.*0/is,
+      'info about next and previous jobs being limited shown';
 };
 
 kill_driver();

++++++ openQA.obsinfo ++++++
--- /var/tmp/diff_new_pack.wjISk2/_old  2026-01-20 21:05:41.798881103 +0100
+++ /var/tmp/diff_new_pack.wjISk2/_new  2026-01-20 21:05:41.810881598 +0100
@@ -1,5 +1,5 @@
 name: openQA
-version: 5.1768564451.45d5d5b2
-mtime: 1768564451
-commit: 45d5d5b2e6506206866f823b651020f2a82a32ce
+version: 5.1768856318.847e4fc7
+mtime: 1768856318
+commit: 847e4fc7f7c46ec6ca38a7f2cea9a89a68f503db
 

Reply via email to