1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

fixes #3428 - caching invalidation issues

Mitgate invalidation issues by using prefetch_related instead of select_related.
Also use invalidated_update instead of just update.
This commit is contained in:
John Anderson
2019-08-19 01:53:39 -04:00
parent dd4dafa7be
commit ade844f7a7
29 changed files with 236 additions and 294 deletions

View File

@ -632,7 +632,7 @@ class RackFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
)
group_id = ChainedModelChoiceField(
label='Rack group',
queryset=RackGroup.objects.select_related('site'),
queryset=RackGroup.objects.prefetch_related('site'),
chains=(
('site', 'site'),
),
@ -745,7 +745,7 @@ class RackReservationFilterForm(BootstrapMixin, TenancyFilterForm):
)
)
group_id = FilterChoiceField(
queryset=RackGroup.objects.select_related('site'),
queryset=RackGroup.objects.prefetch_related('site'),
label='Rack group',
null_label='-- None --',
widget=APISelectMultiple(
@ -1391,14 +1391,14 @@ class DeviceForm(BootstrapMixin, TenancyForm, CustomFieldForm):
interface_ids = self.instance.vc_interfaces.values('pk')
# Collect interface IPs
interface_ips = IPAddress.objects.select_related('interface').filter(
interface_ips = IPAddress.objects.prefetch_related('interface').filter(
family=family, interface_id__in=interface_ids
)
if interface_ips:
ip_list = [(ip.id, '{} ({})'.format(ip.address, ip.interface)) for ip in interface_ips]
ip_choices.append(('Interface IPs', ip_list))
# Collect NAT IPs
nat_ips = IPAddress.objects.select_related('nat_inside').filter(
nat_ips = IPAddress.objects.prefetch_related('nat_inside').filter(
family=family, nat_inside__interface__in=interface_ids
)
if nat_ips:
@ -1710,7 +1710,7 @@ class DeviceFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm)
)
)
rack_group_id = FilterChoiceField(
queryset=RackGroup.objects.select_related(
queryset=RackGroup.objects.prefetch_related(
'site'
),
label='Rack group',
@ -1749,7 +1749,7 @@ class DeviceFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm)
)
)
device_type_id = FilterChoiceField(
queryset=DeviceType.objects.select_related(
queryset=DeviceType.objects.prefetch_related(
'manufacturer'
),
label='Model',