mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-18 15:33:02 +00:00
Merge pull request #445 from minrk/check-routes-pending
Don't add users with spawn_pending to the proxy
This commit is contained in:
@@ -178,6 +178,9 @@ class Proxy(Base):
|
|||||||
self.log.info("Adding user %s to proxy %s => %s",
|
self.log.info("Adding user %s to proxy %s => %s",
|
||||||
user.name, user.proxy_path, user.server.host,
|
user.name, user.proxy_path, user.server.host,
|
||||||
)
|
)
|
||||||
|
if user.spawn_pending:
|
||||||
|
raise RuntimeError(
|
||||||
|
"User %s's spawn is pending, shouldn't be added to the proxy yet!", user.name)
|
||||||
|
|
||||||
yield self.api_request(user.proxy_path,
|
yield self.api_request(user.proxy_path,
|
||||||
method='POST',
|
method='POST',
|
||||||
@@ -213,7 +216,7 @@ class Proxy(Base):
|
|||||||
futures = []
|
futures = []
|
||||||
for orm_user in db.query(User):
|
for orm_user in db.query(User):
|
||||||
user = user_dict[orm_user]
|
user = user_dict[orm_user]
|
||||||
if (user.server):
|
if user.running:
|
||||||
futures.append(self.add_user(user))
|
futures.append(self.add_user(user))
|
||||||
# wait after submitting them all
|
# wait after submitting them all
|
||||||
for f in futures:
|
for f in futures:
|
||||||
@@ -230,6 +233,9 @@ class Proxy(Base):
|
|||||||
db = inspect(self).session
|
db = inspect(self).session
|
||||||
for orm_user in db.query(User).filter(User.server != None):
|
for orm_user in db.query(User).filter(User.server != None):
|
||||||
user = user_dict[orm_user]
|
user = user_dict[orm_user]
|
||||||
|
if not user.running:
|
||||||
|
# Don't add users to the proxy that haven't finished starting
|
||||||
|
continue
|
||||||
if user.server is None:
|
if user.server is None:
|
||||||
# This should never be True, but seems to be on rare occasion.
|
# This should never be True, but seems to be on rare occasion.
|
||||||
# catch filter bug, either in sqlalchemy or my understanding of its behavior
|
# catch filter bug, either in sqlalchemy or my understanding of its behavior
|
||||||
|
@@ -145,6 +145,8 @@ class User(HasTraits):
|
|||||||
@property
|
@property
|
||||||
def running(self):
|
def running(self):
|
||||||
"""property for whether a user has a running server"""
|
"""property for whether a user has a running server"""
|
||||||
|
if self.spawn_pending:
|
||||||
|
return False # server is not running if spawn is still pending
|
||||||
if self.server is None:
|
if self.server is None:
|
||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
Reference in New Issue
Block a user