hvanhovell commented on code in PR #52200: URL: https://github.com/apache/spark/pull/52200#discussion_r2317177135
########## sql/connect/server/src/main/scala/org/apache/spark/sql/connect/service/SparkConnectSessionManager.scala: ########## @@ -114,6 +114,73 @@ class SparkConnectSessionManager extends Logging { Option(getSession(key, None)) } + /** + * Clone an existing session with a new session ID. + * Creates a new SessionHolder with a cloned SparkSession that shares configuration + * and catalog state but has independent caches and runtime state. + */ + private[connect] def cloneSession( + sourceKey: SessionKey, + newSessionId: String, + previouslyObservedSessionId: Option[String]): SessionHolder = { + + // Get source session (must exist) + val sourceSessionHolder = getIsolatedSession(sourceKey, None) + + previouslyObservedSessionId.foreach(sessionId => + validateSessionId(sourceKey, sourceSessionHolder.session.sessionUUID, sessionId)) + + val newKey = SessionKey(sourceKey.userId, newSessionId) + + // Validate new sessionId for clone operation + validateCloneTargetSession(newKey) + + // Create cloned session + val clonedSessionHolder = getSession( + newKey, + Some(() => { + val session = sessionStore.get(newKey) + if (session == null) { + // Clone the underlying SparkSession using cloneSession() which preserves + // configuration, catalog, session state, temporary views, and registered functions + val clonedSparkSession = sourceSessionHolder.session.cloneSession() + + val newHolder = SessionHolder(newKey.userId, newKey.sessionId, clonedSparkSession) Review Comment: Shouldn't we clone more state here? For example MLCache, or DataFrameCache? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org