Package: tt-rss
Version: 21~git20210204.b4cbc79+dfsg-1.2
Severity: normal
X-Debbugs-Cc: mnalis-debian...@voyager.hr

Dear Maintainer,

There was happily working tt-rss instalation in Bullseye, however after
upgrading the Bookworm, the first time updating script run, it re-fetched 
a lot of older articles and marked them as unread.

Trying to debug the issue, I've found that the GUID seems to have changed,
probably due to PHP 8.2 in Bookworm changed not to quote integers fetched
from database:
https://www.php.net/manual/en/migration81.incompatible.php#migration81.incompatible.pdo.mysql

and the old packaged version of tt-rss apparently not having support for it.

That resulted in duplicate rows (in otherwise UNIQUE field "guid"), e.g.:

MariaDB [ttrss]> select id, title, guid, updated, date_entered, date_updated 
from ttrss_entries where title like 'Could the Sun%';
+--------+---------------------------------------+----------------------------------------------------------------------------+---------------------+---------------------+---------------------+
| id     | title                                 | guid                         
                                              | updated             | 
date_entered        | date_updated        |
+--------+---------------------------------------+----------------------------------------------------------------------------+---------------------+---------------------+---------------------+
| 528463 | Could the Sun be hiding a black hole? | 
{"ver":2,"uid":"3","hash":"SHA1:dcf27dd8206c88fc25db2439fbfdbcc1113d826e"} | 
2024-01-21 15:01:08 | 2024-01-22 00:05:00 | 2024-02-05 00:09:14 |
| 534207 | Could the Sun be hiding a black hole? | 
{"ver":2,"uid":3,"hash":"SHA1:dcf27dd8206c88fc25db2439fbfdbcc1113d826e"}   | 
2024-01-21 15:01:08 | 2024-02-09 00:56:00 | 2024-02-09 00:56:08 |
+--------+---------------------------------------+----------------------------------------------------------------------------+---------------------+---------------------+---------------------+

That should not have happened, there should've been only first row existing, and
second row shouldn't have been created. The problem seems to be that "guid"
is not EXACTLY the same, before it said:
"uid":"3"
and now it says
"uid":3

while it points to exactly the same data, the strings are not the same, so
it fails to detect it as a duplicate.

I've worked around the problem by stopping updating services, restoring the
last tt-rss database backup before Bookworm upgrade, and running following
mysql command on ttrss database:

UPDATE ttrss_entries SET guid = REGEXP_REPLACE(guid, '"uid":"([0-9]+)"', 
'"uid":\\1');

that converted all old entries (which used quoted-integers) to a new format
(which does not quote integers), thus allowing subsequent tt-rss feed updates 
not to create duplicates as even old entries are using new format.

Perhaps newer upstream version of tt-rss handles that as well as it does
other similar problems with string/integer (e.g. as it does in #1054608)

-- System Information:
Debian Release: 12.4
  APT prefers stable-security
  APT policy: (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-17-amd64 (SMP w/4 CPU threads; PREEMPT)
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)
LSM: AppArmor: enabled

Versions of packages tt-rss depends on:
ii  dbconfig-common                       2.0.24
ii  dbconfig-mysql                        2.0.24
ii  debconf [debconf-2.0]                 1.5.82
ii  fonts-material-design-icons-iconfont  6.7.0+dfsg-1
ii  init-system-helpers                   1.65.2
ii  libapache2-mod-php8.2 [php-json]      8.2.7-1~deb12u1
ii  libjs-dojo-core                       1.17.2+dfsg1-2.1
ii  libjs-dojo-dijit                      1.17.2+dfsg1-2.1
ii  libjs-scriptaculous                   1.9.0-3
ii  lsb-base                              11.6
ii  php                                   2:8.2+93
pn  php-cli                               <none>
ii  php-intl                              2:8.2+93
ii  php-mbstring                          2:8.2+93
ii  php-mysql                             2:8.2+93
ii  php-php-gettext                       1.0.12-5
ii  php-psr-log                           1.1.4-2
ii  php-xml                               2:8.2+93
ii  php8.2 [php]                          8.2.7-1~deb12u1
ii  php8.2-cli [php-json]                 8.2.7-1~deb12u1
ii  php8.2-intl [php-intl]                8.2.7-1~deb12u1
ii  php8.2-mbstring [php-mbstring]        8.2.7-1~deb12u1
ii  php8.2-phpdbg [php-json]              8.2.7-1~deb12u1
ii  php8.2-xml [php-xml]                  8.2.7-1~deb12u1
ii  phpqrcode                             1.1.4-3.1
ii  sysvinit-utils [lsb-base]             3.06-4

Versions of packages tt-rss recommends:
ii  apache2 [httpd]         2.4.57-2
ii  ca-certificates         20230311
ii  php-curl                2:8.2+93
ii  php-gd                  2:8.2+93
pn  php-mcrypt              <none>
ii  php8.2-curl [php-curl]  8.2.7-1~deb12u1
ii  php8.2-gd [php-gd]      8.2.7-1~deb12u1

Versions of packages tt-rss suggests:
pn  php-apc       <none>
pn  sphinxsearch  <none>

-- Configuration Files:
/etc/default/tt-rss changed [not included]
/etc/logrotate.d/tt-rss changed [not included]
/etc/tt-rss/apache.conf changed [not included]
/etc/tt-rss/config.php changed [not included]

-- debconf information excluded

-- debsums errors found:
debsums: changed file /usr/share/tt-rss/www/classes/feeds.php (from tt-rss 
package)

Reply via email to