Skip to content

Commit

Permalink
[KYUUBI #4360][FOLLOWUP] Get valid unlimited users from existing limi…
Browse files Browse the repository at this point in the history
…ters instead of conf

### _Why are the changes needed?_

It is more accurate to get the unlimited users from existing limiters.
### _How was this patch tested?_
- [ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

- [ ] Add screenshots for manual tests if appropriate

- [x] [Run test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests) locally before make a pull request

Closes #4363 from turboFei/refresh_unlimit.

Closes #4360

a880b41 [fwang12] refactor
6da9f9b [fwang12] get

Authored-by: fwang12 <fwang12@ebay.com>
Signed-off-by: Cheng Pan <chengpan@apache.org>
  • Loading branch information
turboFei authored and pan3793 committed Feb 18, 2023
1 parent 709c664 commit 2342950
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -131,12 +131,10 @@ object KyuubiServer extends Logging {
}

private[kyuubi] def refreshUnlimitedUsers(): Unit = synchronized {
val existingUnlimitedUsers =
kyuubiServer.conf.get(KyuubiConf.SERVER_LIMIT_CONNECTIONS_USER_UNLIMITED_LIST).toSet
val refreshedUnlimitedUsers = KyuubiConf().loadFileDefaults().get(
KyuubiConf.SERVER_LIMIT_CONNECTIONS_USER_UNLIMITED_LIST).toSet
kyuubiServer.backendService.sessionManager.asInstanceOf[KyuubiSessionManager]
.refreshUnlimitedUsers(refreshedUnlimitedUsers)
val sessionMgr = kyuubiServer.backendService.sessionManager.asInstanceOf[KyuubiSessionManager]
val existingUnlimitedUsers = sessionMgr.getUnlimitedUsers()
sessionMgr.refreshUnlimitedUsers(KyuubiConf().loadFileDefaults())
val refreshedUnlimitedUsers = sessionMgr.getUnlimitedUsers()
info(s"Refreshed unlimited users from $existingUnlimitedUsers to $refreshedUnlimitedUsers")
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -299,9 +299,14 @@ class KyuubiSessionManager private (name: String) extends SessionManager(name) {
userUnlimitedList)
}

private[kyuubi] def refreshUnlimitedUsers(userUnlimitedList: Set[String]): Unit = {
limiter.foreach(SessionLimiter.resetUnlimitedUsers(_, userUnlimitedList))
batchLimiter.foreach(SessionLimiter.resetUnlimitedUsers(_, userUnlimitedList))
private[kyuubi] def getUnlimitedUsers(): Set[String] = {
limiter.orElse(batchLimiter).map(SessionLimiter.getUnlimitedUsers).getOrElse(Set.empty)
}

private[kyuubi] def refreshUnlimitedUsers(conf: KyuubiConf): Unit = {
val unlimitedUsers = conf.get(SERVER_LIMIT_CONNECTIONS_USER_UNLIMITED_LIST).toSet
limiter.foreach(SessionLimiter.resetUnlimitedUsers(_, unlimitedUsers))
batchLimiter.foreach(SessionLimiter.resetUnlimitedUsers(_, unlimitedUsers))
}

private def applySessionLimiter(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,10 +138,14 @@ object SessionLimiter {
unlimitedUsers)
}

def resetUnlimitedUsers(limiter: SessionLimiter, unlimitedUsers: Set[String]): Unit = {
def resetUnlimitedUsers(limiter: SessionLimiter, unlimitedUsers: Set[String]): Unit =
limiter match {
case l: SessionLimiterWithUnlimitedUsersImpl => l.setUnlimitedUsers(unlimitedUsers)
case _ =>
}

def getUnlimitedUsers(limiter: SessionLimiter): Set[String] = limiter match {
case l: SessionLimiterWithUnlimitedUsersImpl => l.unlimitedUsers
case _ => Set.empty
}
}

0 comments on commit 2342950

Please sign in to comment.