Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Browser notifications stuck in notifications queue #17684

Open
2 tasks done
Berlinst opened this issue Aug 13, 2024 · 3 comments
Open
2 tasks done

Browser notifications stuck in notifications queue #17684

Berlinst opened this issue Aug 13, 2024 · 3 comments
Labels

Comments

@Berlinst
Copy link

Code of Conduct

  • I agree to follow this project's Code of Conduct

Is there an existing issue for this?

  • I have searched the existing issues

Version

10.0.16

Bug description

I created a browser notification for new tickets. Upon creating a new ticket, I receive the notification in my browser as expected. However, when checking the notification queue, I notice that the notification remains in the queue; it does not clear after being sent.

I tested by forcing the notification to be sent, but it still remains in the queue, and I receive the following message:

image

I have also executed the 'queuednotificationclean' automatic action both through GLPI and the CLI, but the notification still does not clear from the queue.

The notification only clears from the queue if I manually select it and move it to the trash bin. However, this approach is obviously not feasible for managing notifications.

Relevant log output

No response

Page URL

https://yourglpi.com/front/queuednotification.php

Steps To reproduce

  1. Create a browser notification for new tickets.
  2. Create a new ticket and observe that the browser notification is received.
  3. Check the notification queue and observe that the notification remains in the queue.
  4. Attempt to force the sending of notifications and observe that the notification still does not clear from the queue.

Your GLPI setup information

Information about system installation & configuration
GLPI 10.0.16 ( => /usr/share/glpiteste)
Installation mode: TARBALL
Current language:en_US

Server
 
Operating system: Linux servicetic-server 5.15.0-208.159.3.2.el8uek.x86_64 #​2 SMP Wed Jul 17 12:11:35 PDT 2024 x86_64
PHP 8.1.29 fpm-fcgi (Core, PDO, Phar, Reflection, SPL, SimpleXML, Zend OPcache, apcu, bcmath, bz2, calendar, cgi-fcgi, ctype,
curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, imap, intl, json, krb5, ldap, libxml, mbstring, mysql,
mysqli, mysqlnd, openssl, pcre, pdo_mysql, pdo_sqlite, posix, selinux, session, shmop, snmp, soap, sockets, sodium, sqlite3,
standard, sysvmsg, sysvsem, sysvshm, tokenizer, xml, xmlreader, xmlrpc, xmlwriter, xsl, zip, zlib)
Setup: max_execution_time="30" memory_limit="512M" post_max_size="512M" safe_mode="" session.save_handler="files"
upload_max_filesize="100M" disable_functions=""
Software: Apache/2.4.37 (Oracle Linux Server) OpenSSL/1.1.1k ()
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0
Server Software: Percona Server (GPL), Release 29, Revision 30dc4e71
Server Version: 8.0.37-29
Server SQL Mode: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
Parameters: glpiteste@localhost/glpiteste
Host info: Localhost via UNIX socket

PHP version (8.1.29) is supported.
Sessions configuration is OK.
Allocated memory is sufficient.
mysqli extension is installed.
Following extensions are installed: dom, fileinfo, filter, libxml, json, simplexml, xmlreader, xmlwriter.
curl extension is installed.
gd extension is installed.
intl extension is installed.
zlib extension is installed.
The constant SODIUM_CRYPTO_AEAD_XCHACHA20POLY1305_IETF_NPUBBYTES is present.
Database engine version (8.0.37) is supported.
No files from previous GLPI version detected.
The log file has been created successfully.
Write access to /var/lib/glpiteste/files/_cache has been validated.
Write access to /var/lib/glpiteste/files/_cron has been validated.
Write access to /var/lib/glpiteste/files/_documents has been validated.
Write access to /var/lib/glpiteste/files/_dumps has been validated.
Write access to /var/lib/glpiteste/files/_graphs has been validated.
Write access to /var/lib/glpiteste/files/_lock has been validated.
Write access to /var/lib/glpiteste/files/_pictures has been validated.
Write access to /var/lib/glpiteste/files/_plugins has been validated.
Write access to /var/lib/glpiteste/files/_rss has been validated.
Write access to /var/lib/glpiteste/files/_sessions has been validated.
Write access to /var/lib/glpiteste/files/_tmp has been validated.
Write access to /var/lib/glpiteste/files/_uploads has been validated.
For security reasons, SELinux mode should be Enforcing.

Web server root directory configuration seems safe.
Sessions configuration is secured.
OS and PHP are relying on 64 bits integers.
exif extension is installed.
ldap extension is installed.
openssl extension is installed.
Following extensions are installed: bz2, Phar, zip.
Zend OPcache extension is installed.
Following extensions are installed: ctype, iconv, mbstring, sodium.
Write access to /usr/share/glpiteste/marketplace has been validated.
Timezones seems loaded in database.

GLPI constants
 
GLPI_ROOT: "/usr/share/glpiteste"
GLPI_CONFIG_DIR: "/etc/glpiteste"
GLPI_MARKETPLACE_ALLOW_OVERRIDE: false
GLPI_VAR_DIR: "/var/lib/glpiteste/files"
GLPI_DOC_DIR: "/var/lib/glpiteste/files/_documents"
GLPI_CRON_DIR: "/var/lib/glpiteste/files/_cron"
GLPI_DUMP_DIR: "/var/lib/glpiteste/files/_dumps"
GLPI_GRAPH_DIR: "/var/lib/glpiteste/files/_graphs"
GLPI_LOCK_DIR: "/var/lib/glpiteste/files/_lock"
GLPI_PICTURE_DIR: "/var/lib/glpiteste/files/_pictures"
GLPI_PLUGIN_DOC_DIR: "/var/lib/glpiteste/files/_plugins"
GLPI_RSS_DIR: "/var/lib/glpiteste/files/_rss"
GLPI_SESSION_DIR: "/var/lib/glpiteste/files/_sessions"
GLPI_TMP_DIR: "/var/lib/glpiteste/files/_tmp"
GLPI_UPLOAD_DIR: "/var/lib/glpiteste/files/_uploads"
GLPI_CACHE_DIR: "/var/lib/glpiteste/files/_cache"
GLPI_LOG_DIR: "/var/log/glpiteste"
GLPI_SYSTEM_CRON: true
GLPI_MARKETPLACE_DIR: "/usr/share/glpiteste/marketplace"
GLPI_USE_CSRF_CHECK: "1"
GLPI_CSRF_EXPIRES: "7200"
GLPI_CSRF_MAX_TOKENS: "100"
GLPI_USE_IDOR_CHECK: "1"
GLPI_IDOR_EXPIRES: "7200"
GLPI_ALLOW_IFRAME_IN_RICH_TEXT: false
GLPI_SERVERSIDE_URL_ALLOWLIST: ["/^(https?|feed):\/\/[^@:]+(\/.*)?$/"]
GLPI_TELEMETRY_URI: "https://telemetry.glpi-project.org"
GLPI_INSTALL_MODE: "TARBALL"
GLPI_NETWORK_MAIL: "glpi@teclib.com"
GLPI_NETWORK_SERVICES: "https://services.glpi-network.com"
GLPI_MARKETPLACE_MANUAL_DOWNLOADS: true
GLPI_USER_AGENT_EXTRA_COMMENTS: ""
GLPI_DISABLE_ONLY_FULL_GROUP_BY_SQL_MODE: "1"
GLPI_AJAX_DASHBOARD: "1"
GLPI_CALDAV_IMPORT_STATE: 0
GLPI_DEMO_MODE: "0"
GLPI_CENTRAL_WARNINGS: "1"
GLPI_TEXT_MAXSIZE: "4000"
GLPI_LOCAL_I18N_DIR: "/var/lib/glpiteste/files/_locales"
GLPI_INVENTORY_DIR: "/var/lib/glpiteste/files/_inventories"
GLPI_NETWORK_REGISTRATION_API_URL: "https://services.glpi-network.com/api/registration/"
GLPI_MARKETPLACE_PLUGINS_API_URI: "https://services.glpi-network.com/api/marketplace/"
GLPI_I18N_DIR: "/usr/share/glpiteste/locales"
GLPI_VERSION: "10.0.16"
GLPI_SCHEMA_VERSION: "10.0.16"
GLPI_MARKETPLACE_PRERELEASES: false
GLPI_MIN_PHP: "7.4.0"
GLPI_MAX_PHP: "8.4.0"
GLPI_YEAR: "2024"

Libraries
 
htmlawed/htmlawed version 1.2.14 in (/usr/share/glpiteste/vendor/htmlawed/htmlawed)
phpmailer/phpmailer version 6.8.0 in (/usr/share/glpiteste/vendor/phpmailer/phpmailer/src)
simplepie/simplepie version 1.5.8 in (/usr/share/glpiteste/vendor/simplepie/simplepie/library)
tecnickcom/tcpdf version 6.4.4 in (/usr/share/glpiteste/plugins/pdf/vendor/tecnickcom/tcpdf)
michelf/php-markdown in (/usr/share/glpiteste/vendor/michelf/php-markdown/Michelf)
true/punycode in (/usr/share/glpiteste/vendor/true/punycode/src)
iamcal/lib_autolink in (/usr/share/glpiteste/vendor/iamcal/lib_autolink)
sabre/dav in (/usr/share/glpiteste/vendor/sabre/dav/lib/DAV)
sabre/http in (/usr/share/glpiteste/vendor/sabre/http/lib)
sabre/uri in (/usr/share/glpiteste/vendor/sabre/uri/lib)
sabre/vobject in (/usr/share/glpiteste/vendor/sabre/vobject/lib)
laminas/laminas-i18n in (/usr/share/glpiteste/vendor/laminas/laminas-i18n/src)
laminas/laminas-servicemanager in (/usr/share/glpiteste/vendor/laminas/laminas-servicemanager/src)
monolog/monolog in (/usr/share/glpiteste/vendor/monolog/monolog/src/Monolog)
sebastian/diff in (/usr/share/glpiteste/vendor/sebastian/diff/src)
donatj/phpuseragentparser in (/usr/share/glpiteste/vendor/donatj/phpuseragentparser/src/UserAgent)
elvanto/litemoji in (/usr/share/glpiteste/vendor/elvanto/litemoji/src)
symfony/console in (/usr/share/glpiteste/vendor/symfony/console)
scssphp/scssphp in (/usr/share/glpiteste/vendor/scssphp/scssphp/src)
laminas/laminas-mail in (/usr/share/glpiteste/vendor/laminas/laminas-mail/src/Protocol)
laminas/laminas-mime in (/usr/share/glpiteste/vendor/laminas/laminas-mime/src)
rlanvin/php-rrule in (/usr/share/glpiteste/vendor/rlanvin/php-rrule/src)
ramsey/uuid in (/usr/share/glpiteste/vendor/ramsey/uuid/src)
psr/log in (/usr/share/glpiteste/vendor/psr/log/Psr/Log)
psr/simple-cache in (/usr/share/glpiteste/vendor/psr/simple-cache/src)
psr/cache in (/usr/share/glpiteste/vendor/psr/cache/src)
league/csv in (/usr/share/glpiteste/vendor/league/csv/src)
mexitek/phpcolors in (/usr/share/glpiteste/vendor/mexitek/phpcolors/src/Mexitek/PHPColors)
guzzlehttp/guzzle in (/usr/share/glpiteste/vendor/guzzlehttp/guzzle/src)
guzzlehttp/psr7 in (/usr/share/glpiteste/vendor/guzzlehttp/psr7/src)
glpi-project/inventory_format in (/usr/share/glpiteste/vendor/glpi-project/inventory_format/lib/php)
wapmorgan/unified-archive in (/usr/share/glpiteste/vendor/wapmorgan/unified-archive/src)
paragonie/sodium_compat in (/usr/share/glpiteste/vendor/paragonie/sodium_compat/src)
symfony/cache in (/usr/share/glpiteste/vendor/symfony/cache)
html2text/html2text in (/usr/share/glpiteste/vendor/html2text/html2text/src)
symfony/css-selector in (/usr/share/glpiteste/vendor/symfony/css-selector)
symfony/dom-crawler in (/usr/share/glpiteste/vendor/symfony/dom-crawler)
twig/twig in (/usr/share/glpiteste/vendor/twig/twig/src)
twig/string-extra in (/usr/share/glpiteste/vendor/twig/string-extra)
symfony/polyfill-ctype not found
symfony/polyfill-iconv not found
symfony/polyfill-mbstring not found
symfony/polyfill-php80 not found
symfony/polyfill-php81 not found
symfony/polyfill-php82 in (/usr/share/glpiteste/vendor/symfony/polyfill-php82)
league/oauth2-client in (/usr/share/glpiteste/vendor/league/oauth2-client/src/Provider)
league/oauth2-google in (/usr/share/glpiteste/vendor/league/oauth2-google/src/Provider)
thenetworg/oauth2-azure in (/usr/share/glpiteste/vendor/thenetworg/oauth2-azure/src/Provider)

LDAP directories
 
Server: '127.0.0.1', Port: '389', BaseDN: none, Connection filter:
'(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))', RootDN: none, Use TLS:
none

SQL replicas
 
Not active

Notifications
 
Way of sending emails: SMTP+TLS (teste@servicetic.com.br@mail.servicetic.com.br)

Plugins list
 
actualtime Name: ActualTime Version: 2.1.0 State: Error / to clean
Install Method: Manual
news Name: Alertas Version: 1.12.2 State: To update
Install Method: Manual
fields Name: Campos adicionais Version: 1.20.6 State: Error / to clean
Install Method: Manual
screenshot Name: Captura de tela Version: 2.0.3 State: Not installed
Install Method: Manual
behaviors Name: Comportamentos Version: 2.7.3 State: To update
Install Method: Manual
costs Name: Costs Version: 3.0.1 State: Error / to clean
Install Method: Manual
customlogin Name: Custom Login Version: 1.0.6 State: Installed / not activated
Install Method: Manual
formcreator Name: Form Creator Version: 2.13.9 State: To update
Install Method: Manual
tag Name: Gerenciamento de Etiquetas Version: 2.11.2 State: Error / to clean
Install Method: Manual
genericobject Name: Gerenciamento de objetos Version: 2.14.3 State: Error / to clean
Install Method: Manual
glpiinventory Name: GLPI Inventory Version: 1.3.5 State: Installed / not activated
Install Method: Manual
holiday Name: Holidays Version: 1.2 State: Not installed
Install Method: Manual
datainjection Name: Importação de dados Version: 2.13.1 State: Error / to clean
Install Method: Manual
pdf Name: Imprimir em PDF Version: 3.0.0 State: Enabled
Install Method: Manual
releases Name: Liberações Version: 2.0.3 State: Enabled
Install Method: Manual
timelineticket Name: Linha do tempo dos chamados Version: 10.0+1.2 State: Installed / not activated
Install Method: Manual
mailanalyzer Name: Mail Analyzer Version: 3.2.0 State: To update
Install Method: Manual
moreticket Name: Mais Chamados Version: 1.7.1 State: Error / to clean
Install Method: Manual
satisfaction Name: Mais satisfação Version: 1.6.1 State: Error / to clean
Install Method: Manual
metabase Name: Metabase Version: 1.3.3 State: Not installed
Install Method: Manual
mydashboard Name: Meu Painel Version: 2.1.5 State: Error / to clean
Install Method: Manual
oauthimap Name: Oauth IMAP Version: 1.4.3 State: Not installed
Install Method: Manual
dashboard Name: Painel Version: 1.0.3 State: Not installed
Install Method: Manual
phpsaml Name: PHP SAML Version: 1.3.0 State: Error / to clean
Install Method: Manual
example Name: Plugin Example Version: 0.0.1 State: Error / to clean
Install Method: Manual
singlesignon Name: Single Sign-on Version: 1.3.3 State: Enabled
Install Method: Manual
stsync Name: ST-Sync Version: 1.0.0 State: Error / to clean
Install Method: Manual
tasklists Name: Tasks list Version: 2.0.3 State: Installed / not activated
Install Method: Manual
ticketcleaner Name: Ticket Cleaner Version: 4.0.3 State: Error / to clean
Install Method: Manual

Anything else?

No response

@cconard96
Copy link
Contributor

I cannot recreate the issue consistently, but there is definitely an issue with browser notification management. Possibly a race condition where the client-side script that checks for notifications gets a notification and displays it and the user navigates away from the page before the second request to GLPI to delete the notification is made.

@cconard96 cconard96 added the bug label Aug 13, 2024
@cconard96
Copy link
Contributor

Also, forcing a browser notification to send won't do anything. There is a client-side script that asks GLPI for the user's notifications to display rather than this being a push notification system, so GLPI can't send the notifications on demand like that.

@Berlinst
Copy link
Author

Also, forcing a browser notification to send won't do anything. There is a client-side script that asks GLPI for the user's notifications to display rather than this being a push notification system, so GLPI can't send the notifications on demand like that.

Ok, I understand. However, do you agree that it’s not ideal for the GLPI notification queue to keep filling up? Is there any solution to prevent this from happening? Would this script be able to clear the notification queue? If so, where is this script located, and can it be adjusted to address the issue?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants