From f11705ee26b7627c351d57351a0fa2a6d957a755 Mon Sep 17 00:00:00 2001 From: Min RK Date: Thu, 14 Sep 2017 13:30:24 +0200 Subject: [PATCH] delete service.server from db when they stop same ondelete='SET NULL' as on spawner.server --- jupyterhub/orm.py | 2 +- jupyterhub/services/service.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/jupyterhub/orm.py b/jupyterhub/orm.py index ef9482f4..11aa0cc3 100644 --- a/jupyterhub/orm.py +++ b/jupyterhub/orm.py @@ -213,7 +213,7 @@ class Service(Base): api_tokens = relationship("APIToken", backref="service") # service-specific interface - _server_id = Column(Integer, ForeignKey('servers.id')) + _server_id = Column(Integer, ForeignKey('servers.id', ondelete='SET NULL')) server = relationship(Server, primaryjoin=_server_id == Server.id) pid = Column(Integer) diff --git a/jupyterhub/services/service.py b/jupyterhub/services/service.py index 29cafdc6..f24645ad 100644 --- a/jupyterhub/services/service.py +++ b/jupyterhub/services/service.py @@ -301,5 +301,8 @@ class Service(LoggingConfigurable): if not self.managed: raise RuntimeError("Cannot stop unmanaged service %s" % self) if self.spawner: + if self.orm.server: + self.db.delete(self.orm.server) + self.db.commit() self.spawner.stop_polling() return self.spawner.stop()