When Brocade fabric setting 'fc_southbound_protocol' is set to 'HTTPS', any write attempts to the SAN switch will possibly encounter the error - ('SSL routines', 'SSL3_WRITE_PENDING', 'bad write retry')
When communicating through a SSL connection, all data payloads must be in the string format. Currently the driver code is pulling in zoning data from the SAN switch through the method get_zone_info(). The zoning data retrieved can be unicode based, which when used in constructing the payload string to be sent during a write; a SSL3_WRITE_PENDING occurs since the string constructed for the payload is of type 'unicode'.
More info as to why a unicode string is not allowed, as it causes the buffer during the connection to be recreated each time, which is not allowed for the OpenSSL
https://github.com/shazow/urllib3/issues/717
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/cinder/zonemanager/drivers/brocade/brcd_http_fc_zone_client.py", line 536, in add_zones
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager error_code, error_msg = self.post_zone_data(data)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/cinder/zonemanager/drivers/brocade/brcd_http_fc_zone_client.py", line 879, in post_zone_data
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager headers)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/cinder/zonemanager/drivers/brocade/brcd_http_fc_zone_client.py", line 110, in connect
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager verify=False)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 518, in post
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager return self.request('POST', url, data=data, json=json, **kwargs)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager resp = self.send(prep, **send_kwargs)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 585, in send
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager r = adapter.send(request, **kwargs)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 403, in send
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager timeout=timeout
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 595, in urlopen
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager chunked=chunked)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py", line 363, in _make_request
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager conn.request(method, url, **httplib_request_kw)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib64/python2.7/httplib.py", line 973, in request
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager self._send_request(method, url, body, headers)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib64/python2.7/httplib.py", line 1007, in _send_request
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager self.endheaders(body)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib64/python2.7/httplib.py", line 969, in endheaders
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager self._send_output(message_body)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib64/python2.7/httplib.py", line 833, in _send_output
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager self.send(message_body)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib64/python2.7/httplib.py", line 805, in send
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager self.sock.sendall(data)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 253, in sendall
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager sent = self._send_until_done(data[total_sent:total_sent + SSL_WRITE_BLOCKSIZE])
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 242, in _send_until_done
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager return self.connection.send(data)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/OpenSSL/SSL.py", line 1271, in send
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager self._raise_ssl_error(self._ssl, result)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/OpenSSL/SSL.py", line 1187, in _raise_ssl_error
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager _raise_current_error()
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager File "/usr/lib/python2.7/site-packages/OpenSSL/_util.py", line 48, in exception_from_error_queue
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager raise exception_type(errors)
2016-12-27 15:19:43.972 31592 ERROR cinder.zonemanager.fc_zone_manager Error: [('SSL routines', 'SSL3_WRITE_PENDING', 'bad write retry')]
Fix proposed: https:/ /review. openstack. org/#/c/ 416371/