set Spawner.server directly

avoids Spawner.server property looking up on the ORM every time,
which is expensive and we want to check `Spawner.server is None` often.
This commit is contained in:
Min RK
2017-08-01 17:01:24 +02:00
parent f49606dff6
commit e6ce468301
5 changed files with 42 additions and 9 deletions

View File

@@ -9,12 +9,13 @@ from oauth2.error import ClientNotFoundError
from sqlalchemy import inspect
from tornado import gen
from tornado.log import app_log
from traitlets import HasTraits, Any, Dict, default
from .utils import url_path_join, default_server_name
from . import orm
from ._version import _check_version, __version__
from traitlets import HasTraits, Any, Dict, observe, default
from .objects import Server
from .spawner import LocalProcessSpawner
from .crypto import encrypt, decrypt, CryptKeeper, EncryptionUnavailable, InvalidToken
@@ -314,8 +315,8 @@ class User(HasTraits):
spawner = self.spawners[server_name]
spawner.server = Server(orm_server=orm_server)
assert orm_spawner.server is orm_server
spawner.server = server = Server(orm_server=orm_server)
assert spawner.orm_spawner.server is orm_server
# Passing user_options to the spawner
spawner.user_options = options or {}
@@ -452,8 +453,6 @@ class User(HasTraits):
spawner.orm_spawner.state = spawner.get_state()
self.last_activity = datetime.utcnow()
# remove server entry from db
if spawner.server is not None:
self.db.delete(spawner.orm_spawner.server)
spawner.server = None
if not spawner.will_resume:
# find and remove the API token if the spawner isn't