#7275 Viewing DNS Records with WebUI fails
Closed: fixed 6 years ago Opened 6 years ago by rcmurphy.

Issue

If a DNS record is viewed that has certain entries (so far I've verified with AAAA and SSHFP), the WebUI gives a 500 Error.

Steps to Reproduce

  1. Create an SSHFP or AAAA DNS record in any zone (or have ipa-client-install on a host one is enrolling create them)
  2. View the record in the UI. (e.x. https://ipa-1.int.example.net/ipa/ui/#/e/dnsrecord/details/int.example.net.&ipa-1)

Note: records that are just an A record don't seem to cause the issue

Actual behavior

The record details page is shown, but I am immediately presented with a dialog indicating an internal error has occurred.

The dialog title is "IPA Error 903: InternalError" and the description is "an internal error has occurred" (screenshot attached).

The stack trace (from the httpd error_log) is:

[Tue Nov 21 16:42:21.580551 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765] ipa: ERROR: non-public: RuntimeError: dictionary changed size during iteration
[Tue Nov 21 16:42:21.580592 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765] Traceback (most recent call last):
[Tue Nov 21 16:42:21.580598 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]   File "/usr/lib/python3.6/site-packages/ipaserver/rpcserver.py", line 370, in wsgi_execute
[Tue Nov 21 16:42:21.580602 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]     result = command(*args, **options)
[Tue Nov 21 16:42:21.580606 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]   File "/usr/lib/python3.6/site-packages/ipalib/frontend.py", line 450, in __call__
[Tue Nov 21 16:42:21.580611 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]     return self.__do_call(*args, **options)
[Tue Nov 21 16:42:21.580615 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]   File "/usr/lib/python3.6/site-packages/ipalib/frontend.py", line 478, in __do_call
[Tue Nov 21 16:42:21.580619 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]     ret = self.run(*args, **options)
[Tue Nov 21 16:42:21.580622 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]   File "/usr/lib/python3.6/site-packages/ipalib/frontend.py", line 800, in run
[Tue Nov 21 16:42:21.580626 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]     return self.execute(*args, **options)
[Tue Nov 21 16:42:21.580630 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]   File "/usr/lib/python3.6/site-packages/ipaserver/plugins/baseldap.py", line 1331, in execute
[Tue Nov 21 16:42:21.580634 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]     self, ldap, entry_attrs.dn, entry_attrs, *keys, **options)
[Tue Nov 21 16:42:21.580638 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]   File "/usr/lib/python3.6/site-packages/ipaserver/plugins/dns.py", line 3979, in post_callback
[Tue Nov 21 16:42:21.580643 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]     self.obj.postprocess_record(entry_attrs, **options)
[Tue Nov 21 16:42:21.580646 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]   File "/usr/lib/python3.6/site-packages/ipaserver/plugins/dns.py", line 3209, in postprocess_record
[Tue Nov 21 16:42:21.580665 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]     for attr in record.keys():
[Tue Nov 21 16:42:21.580669 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]   File "/usr/lib64/python3.6/_collections_abc.py", line 720, in __iter__
[Tue Nov 21 16:42:21.580673 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]     yield from self._mapping
[Tue Nov 21 16:42:21.580681 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765] RuntimeError: dictionary changed size during iteration
[Tue Nov 21 16:42:21.580691 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765]
[Tue Nov 21 16:42:21.580924 2017] [wsgi:error] [pid 8178:tid 139704718759680] [remote 10.5.2.181:59765] ipa: INFO: [jsonserver_session] myuser@INT.EXAMPLE.NET: dnsrecord_show('int.example.net.', 'ipa-1', rights=True, structured=True, all=True, version='2.229'): InternalError

Expected behavior

The record details page is shown without error.

Version/Release/Distribution

Distribution: "Fedora 27 (Server Edition)" (Completely fresh install aside from installing the freeipa-server/freeipa-server-dns packages and running ipa-server-install)

Packages:

freeipa-server-4.6.1-3.fc27.x86_64
freeipa-server-dns-4.6.1-3.fc27.noarch
freeipa-client-4.6.1-3.fc27.x86_64
package ipa-server is not installed
package ipa-client is not installed
389-ds-base-1.3.7.7-1.fc27.x86_64
pki-ca-10.5.1-1.fc27.noarch
krb5-server-1.15.2-4.fc27.x86_64
python3-3.6.3-2.fc27.x86_64

Metadata Update from @cheimes:
- Issue assigned to cheimes

6 years ago

Metadata Update from @cheimes:
- Issue tagged with: py3

6 years ago

Metadata Update from @pvoborni:
- Issue priority set to: important
- Issue set to the milestone: FreeIPA 4.6.2
- Issue tagged with: regression

6 years ago

Metadata Update from @frenaud:
- Custom field on_review adjusted to https://github.com/freeipa/freeipa/pull/1324

6 years ago

master:

  • 191605e Reproducer for bug in structured dnsrecord_show
  • f528a44 Fix dict iteration bug in dnsrecord_show

ipa-4-6:

  • 4de5bf3 Reproducer for bug in structured dnsrecord_show
  • a090225 Fix dict iteration bug in dnsrecord_show

Metadata Update from @cheimes:
- Issue close_status updated to: fixed
- Issue status updated to: Closed (was: Open)

6 years ago

Login to comment on this ticket.

Metadata