[GeoNode-devel] GeoNode Project: Timeout updates Layer with new ManyToManyField in ResourceBase

Alessio Fabiani alessio.fabiani at geo-solutions.it
Tue Oct 22 02:20:03 PDT 2019


Hi,
most probably you are hitting the post-save signal on ResourceBase
indefinitely.

You should intercept the signal method and updating the resource base only
in the case you are adding the the m2m relationship a new ResourceBase.

Il giorno lun 21 ott 2019 alle ore 18:06 Giambattista Mameli <
mameli.giambattista at gmail.com> ha scritto:

>
> Hi guys,
> I developed a custom GeoNode Project implementing a M:M relationship on
> the ResourceBase table
>
> Here the steps:
>
> 1) model creation of the new table
>
> class DomainArea(models.Model):
>
>     identifier = models.CharField('Domain Area name', max_length=255, unique=True)
>     description = models.TextField(default='')
>     gn_description = models.TextField(
>         'GeoNode description', default='', null=True)
>     is_choice = models.BooleanField(default=True)
>
>     def __unicode__(self):
>         return u"{0}".format(self.gn_description)
>
>     class Meta:
>         ordering = ("identifier",)
>         verbose_name_plural = 'Domain Areas'
>
> 2) add the relation between the ResourceBase table and the new created
> table
>
>         domainarea = models.ManyToManyField(
>             DomainArea,
>             related_name='resourcebase_domainarea',
>             blank=True)
>         ResourceBase.add_to_class('domain_area', domainarea)
>
> 3) Add the function to handle the new value in the admin panel
>
> admin.site.register(DomainArea)
>
> All the steps work good, Django creates the new table with all the
> relationship and I can handle via admin panel both values and associations
> between domain areas and Layers/Docs/Maps.
>
> The problem is when I modify these values.
>
> After the first association, all the updates go wrong (timeout, even with
> a very long timeout set).
>
> This is the error message:
>
> *******
> Traceback:
>
> File
> "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py"
> in inner
>   41.             response = get_response(request)
>
> File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py"
> in _legacy_get_response
>   249.             response = self._get_response(request)
>
> File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py"
> in _get_response
>   187.                 response = self.process_exception_by_middleware(e,
> request)
>
> File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py"
> in _get_response
>   185.                 response = wrapped_callback(request, callback_args,
> *callback_kwargs)
>
> File
> "/usr/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in
> wrapper
>   552.                 return self.admin_site.admin_view(view)(*args,
> **kwargs)
>
> File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py"
> in _wrapped_view
>   149.                     response = view_func(request, args, *kwargs)
>
> File
> "/usr/local/lib/python2.7/site-packages/django/views/decorators/cache.py"
> in _wrapped_view_func
>   57.         response = view_func(request, args, *kwargs)
>
> File
> "/usr/local/lib/python2.7/site-packages/django/contrib/admin/sites.py" in
> inner
>   224.             return view(request, args, *kwargs)
>
> File
> "/usr/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in
> change_view
>   1512.         return self.changeform_view(request, object_id, form_url,
> extra_context)
>
> File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py"
> in _wrapper
>   67.             return bound_func(*args, **kwargs)
>
> File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py"
> in _wrapped_view
>   149.                     response = view_func(request, args, *kwargs)
>
> File "/usr/local/lib/python2.7/site-packages/django/utils/decorators.py"
> in bound_func
>   63.                 return func.__get__(self, type(self))(*args2,
> **kwargs2)
>
> File
> "/usr/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in
> changeform_view
>   1409.             return self._changeform_view(request, object_id,
> form_url, extra_context)
>
> File
> "/usr/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in
> _changeform_view
>   1449.                 self.save_model(request, new_object, form, not add)
>
> File
> "/usr/local/lib/python2.7/site-packages/django/contrib/admin/options.py" in
> save_model
>   980.         obj.save()
>
> File "/usr/local/lib/python2.7/site-packages/polymorphic/models.py" in save
>   83.         return super(PolymorphicModel, self).save(*args, **kwargs)
>
> File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py" in
> save
>   808.                        force_update=force_update,
> update_fields=update_fields)
>
> File "/usr/local/lib/python2.7/site-packages/django/db/models/base.py" in
> save_base
>   848.                 update_fields=update_fields, raw=raw, using=using,
>
> File
> "/usr/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py" in
> send
>   193.             for receiver in self._live_receivers(sender)
>
> File "/usr/local/lib/python2.7/site-packages/geonode/decorators.py" in
> wrapper
>   53.                 return func(*args, **kwargs)
>
> File "/usr/local/lib/python2.7/site-packages/geonode/geoserver/signals.py"
> in geoserver_post_save
>   85.         producer.geoserver_upload_layer(payload)
>
> File
> "/usr/local/lib/python2.7/site-packages/geonode/messaging/producer.py" in
> sync_if_local_memory
>   71.                 worker.run(timeout=broker_socket_timeout)
>
> File "/usr/local/lib/python2.7/site-packages/kombu/mixins.py" in run
>   170.                     for _ in self.consume(limit=None, **kwargs):
>
> File "/usr/local/lib/python2.7/site-packages/kombu/mixins.py" in consume
>   192.                     conn.drain_events(timeout=safety_interval)
>
> File "/usr/local/lib/python2.7/site-packages/kombu/connection.py" in
> drain_events
>   315.         return self.transport.drain_events(self.connection,
> **kwargs)
>
> File
> "/usr/local/lib/python2.7/site-packages/kombu/transport/virtual/base.py" in
> drain_events
>   966.                     raise socket.timeout()
> *****
>
> Any help will be greatly appreciated
>
> Thanks in advance
>
> _______________________________________________
> geonode-devel mailing list
> geonode-devel at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/geonode-devel
>


-- 

==

GeoServer Professional Services from the experts! Visit http://goo.gl/it488V
for more information.
==
Ing. Alessio Fabiani

@alfa7691
Founder/Technical Lead


GeoSolutions S.A.S.
Via di Montramito 3/A - 55054  Massarosa (LU) - Italy
phone: +39 0584 962313
fax:     +39 0584 1660272
mob:   +39 331 6233686


http://www.geo-solutions.it
http://twitter.com/geosolutions_it
-------------------------------------------------------

Con riferimento alla normativa sul trattamento dei dati personali (Reg. UE
2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si
precisa che ogni circostanza inerente alla presente email (il suo
contenuto, gli eventuali allegati, etc.) è un dato la cui conoscenza è
riservata al/i solo/i destinatario/i indicati dallo scrivente. Se il
messaggio Le è giunto per errore, è tenuta/o a cancellarlo, ogni altra
operazione è illecita. Le sarei comunque grato se potesse darmene notizia.


This email is intended only for the person or entity to which it is
addressed and may contain information that is privileged, confidential or
otherwise protected from disclosure. We remind that - as provided by
European Regulation 2016/679 “GDPR” - copying, dissemination or use of this
e-mail or the information herein by anyone other than the intended
recipient is prohibited. If you have received this email by mistake, please
notify us immediately by telephone or e-mail.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geonode-devel/attachments/20191022/bc120cc3/attachment.html>


More information about the geonode-devel mailing list