[Bug 1987663] Re: cinder-volume: "Failed to re-export volume, setting to ERROR" with "tgtadm: failed to send request hdr to tgt daemon, Transport endpoint is not connected" on service startup

Mauricio Faria de Oliveira 1987663 at bugs.launchpad.net
Fri Nov 22 19:28:23 UTC 2024


Verification done on bionic's ESM Infra Updates -staging ("-proposed").

The detailed verification steps as per comment #3
are attached. This is the summary with key steps.

With the packages from -staging, when (re)starting {cinder-volume,tgt}.service,
the cinder-volume service is started _after_ the tgt service, and
the volumes remain with 'in-use' status (no longer 'error' status).

# Reproducer (45-second startup delay in tgt.service)

Before:

... Notice that cinder-volume.service is Started _BEFORE_ tgt.service
... And the 'tgtadm' error _IS_ seen in the logs.
... And volumes are listed with 'error' Status.
 
	root at cinder-bionic:~# dpkg -s cinder-volume | grep Version:
	Version: 2:12.0.10-0ubuntu2.2

	root at cinder-bionic:~# date; systemctl restart cinder-volume.service tgt.service; date
	Fri Nov 22 19:02:00 UTC 2024
	Fri Nov 22 19:02:45 UTC 2024
	
	root at cinder-bionic:~# journalctl -b -u cinder-volume.service -u tgt.service | grep Start | tail -3
	Nov 22 19:02:00 cinder-bionic systemd[1]: Started OpenStack Cinder Volume.
	Nov 22 19:02:00 cinder-bionic systemd[1]: Starting (i)SCSI target daemon...
	Nov 22 19:02:45 cinder-bionic systemd[1]: Started (i)SCSI target daemon.

	root at cinder-bionic:~# grep 'ERROR cinder.volume.manager' /var/log/cinder/cinder-volume.log | grep tgtadm
	2024-11-22 19:02:04.926 9281 ERROR cinder.volume.manager Command: sudo cinder-rootwrap /etc/cinder/rootwrap.conf tgtadm --lld iscsi --op show --mode target
	2024-11-22 19:02:04.926 9281 ERROR cinder.volume.manager Stderr: u'tgtadm: failed to send request hdr to tgt daemon, Transport endpoint is not connected\n'

	root at cinder-bionic:~# cinder list
	+--------------------------------------+--------+-------------+------+-------------+----------+-------------+
	| ID                                   | Status | Name        | Size | Volume Type | Bootable | Attached to |
	+--------------------------------------+--------+-------------+------+-------------+----------+-------------+
	| a07b08d7-1fef-446e-b760-d69bad24aa40 | error  | test-volume | 1    | -           | false    |             |
	+--------------------------------------+--------+-------------+------+-------------+----------+-------------+
	
After:

... Notice that cinder-volume.service is Started *AFTER* tgt.service now
... And now the 'tgtadm' error is *NOT* seen in the logs.
... And the volumes are listed with Status 'in-use' (no longer 'error')

	root at cinder-bionic:~# dpkg -s cinder-volume | grep Version:
	Version: 2:12.0.10-0ubuntu2.2+esm1

	root at cinder-bionic:~# date; systemctl restart cinder-volume.service tgt.service; date
	Fri Nov 22 19:20:52 UTC 2024
	Fri Nov 22 19:21:37 UTC 2024

	root at cinder-bionic:~# journalctl -b -u cinder-volume.service -u tgt.service | grep Start | tail -3
	Nov 22 19:20:52 cinder-bionic systemd[1]: Starting (i)SCSI target daemon...
	Nov 22 19:21:37 cinder-bionic systemd[1]: Started (i)SCSI target daemon.
	Nov 22 19:21:37 cinder-bionic systemd[1]: Started OpenStack Cinder Volume.

	(error timestamps are from the previous/non-proposed run)
	root at cinder-bionic:~# grep 'ERROR cinder.volume.manager' /var/log/cinder/cinder-volume.log | grep tgtadm
	2024-11-22 19:02:04.926 9281 ERROR cinder.volume.manager Command: sudo cinder-rootwrap /etc/cinder/rootwrap.conf tgtadm --lld iscsi --op show --mode target
	2024-11-22 19:02:04.926 9281 ERROR cinder.volume.manager Stderr: u'tgtadm: failed to send request hdr to tgt daemon, Transport endpoint is not connected\n'

	root at cinder-bionic:~# cinder list
	+--------------------------------------+--------+-------------+------+-------------+----------+-------------+
	| ID                                   | Status | Name        | Size | Volume Type | Bootable | Attached to |
	+--------------------------------------+--------+-------------+------+-------------+----------+-------------+
	| a07b08d7-1fef-446e-b760-d69bad24aa40 | in-use | test-volume | 1    | -           | false    |             |
	+--------------------------------------+--------+-------------+------+-------------+----------+-------------+

** Attachment added: "2024-11-22 bionic cinder esm verification"
   https://bugs.launchpad.net/ubuntu/+source/cinder/+bug/1987663/+attachment/5839540/+files/2024-11-22%20bionic%20cinder%20esm%20verification

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to cinder in Ubuntu.
https://bugs.launchpad.net/bugs/1987663

Title:
  cinder-volume: "Failed to re-export volume, setting to ERROR" with
  "tgtadm: failed to send request hdr to tgt daemon, Transport endpoint
  is not connected" on service startup

Status in Ubuntu Cloud Archive:
  Fix Released
Status in Ubuntu Cloud Archive antelope series:
  Triaged
Status in Ubuntu Cloud Archive bobcat series:
  Fix Released
Status in Ubuntu Cloud Archive caracal series:
  Fix Released
Status in Ubuntu Cloud Archive ussuri series:
  Fix Committed
Status in Ubuntu Cloud Archive victoria series:
  Won't Fix
Status in Ubuntu Cloud Archive wallaby series:
  Won't Fix
Status in Ubuntu Cloud Archive xena series:
  Won't Fix
Status in Ubuntu Cloud Archive yoga series:
  Fix Released
Status in Ubuntu Cloud Archive zed series:
  Won't Fix
Status in Ubuntu Pro:
  Fix Committed
Status in Ubuntu Pro 18.04 series:
  Fix Committed
Status in cinder package in Ubuntu:
  Fix Released
Status in cinder source package in Bionic:
  Won't Fix
Status in cinder source package in Focal:
  Fix Released
Status in cinder source package in Jammy:
  Fix Released
Status in cinder source package in Lunar:
  Won't Fix
Status in cinder source package in Mantic:
  Fix Released
Status in cinder source package in Noble:
  Fix Released

Bug description:
  [Impact]

   * The cinder-volume service might fail to re-export volumes
     in-use on startup if tgt.service isn't fully started yet.

   * This affects the 'lvm' driver with 'tgtadm' target helper
     (which runs 'tgtadm' commands that need the service ready).

   * Snippets from /var/log/cinder/cinder-volume.log:

     Failed to re-export volume, setting to ERROR.
     ...
     Command: tgtadm --lld iscsi --op show --mode target
     ...
     Stderr: 'tgtadm: failed to send request hdr to tgt daemon,
     Transport endpoint is not connected\n'

   * This issue is more common in openstack compute nodes
     with networking (ovs/ovn) that takes long to startup,
     which might delay the startup of tgt.service _after_
     cinder-volume.service.

  [Test Steps]

   * Steps to reproduce are detailed in comment #3.
     Summary:

   * Install mysql, rabbitmq-server, keystone, and cinder
     (controller and storage nodes; backup node unneeded).

   * Configure cinder-volume (storage node) for LVM backend
     and tgtadm iSCSI helper (tgt.service).

   * Create a cinder volume, and configure it as 'in-use'.

   * Simulate a start delay on tgt.service with a drop-in.

   * Restart services: cinder-volume.service tgt.service

   * Check sequence of service startup.

   * Check status of the cinder volume:
     'in-use' (expected) or 'error' (bug).

   * Check log file /var/log/cinder/cinder-volume.log for
     'tgtadm: failed to send request hdr to tgt daemon'.

  [Regression Potential]

   * The fix introduces systemd unit 'After=' and 'Wants='
     properties for tgt.service in cinder-volume.service,
     thus might delay the boot process (multi-user.target).

       $ systemctl show cinder-volume.service | grep WantedBy=
       WantedBy=multi-user.target

   * However, the boot process already waits on tgt.service
     anyway, thus the difference (if any) should not be big,
     and would provide more correct behavior.

       $ systemctl show tgt.service | grep WantedBy=
       WantedBy=multi-user.target

   * If tgt.service is not present (tgt package not installed)
     _no errors_ occur, as both 'After=' and 'Wants=' are weak
     ordering/dependency properties (man 5 systemd.unit).

  [Other Info]

   * The fix uses a systemd service drop-in snippet because
     the service unit is generated by openstack-pkg-tools
     (pkgos-gen-systemd-unit) based on the 'init' service,
     and it only emits 'Wants=' for network-online.target.

   * Changing that in openstack-pkg-tools changes behavior
     in stable releases, and only manifest at build time,
     for many openstack packages that have no issues now.

   * We'll continue to pursue the general improvement in
     Debian, so it comes into Ubuntu development release,
     but for the Ubuntu stable releases, this should do.

  [Original Bug Description]

  Real-world example in comment #2.

To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-archive/+bug/1987663/+subscriptions




More information about the Ubuntu-openstack-bugs mailing list