Giambattista created SPARK-19798:
------------------------------------

             Summary: Query returns stale results when tables are modified on 
other sessions
                 Key: SPARK-19798
                 URL: https://issues.apache.org/jira/browse/SPARK-19798
             Project: Spark
          Issue Type: Bug
          Components: Spark Core
    Affects Versions: 2.2.0
            Reporter: Giambattista


I observed the problem on master branch with thrift server in multisession mode 
(default), but I was able to replicate also with spark-shell as well (see below 
the sequence for replicating).
I observed cases where changes made in a session (table insert, table renaming) 
are not visible to other derived sessions (created with session.newSession).

The problem seems due to the fact that each session has its own 
tableRelationCache and it does not get refreshed.
IMO tableRelationCache should be shared in sharedState, maybe in the 
cacheManager so that refresh of caches for data that is not session-specific 
such as temporary tables gets centralized.  

--- Spark shell script

val spark2 = spark.newSession
spark.sql("CREATE TABLE test (a int) using parquet")
spark2.sql("select * from test").show // OK returns empty
spark.sql("select * from test").show // OK returns empty
spark.sql("insert into TABLE test values 1,2,3")
spark2.sql("select * from test").show // ERROR returns empty
spark.sql("select * from test").show // OK returns 3,2,1
spark.sql("create table test2 (a int) using parquet")
spark.sql("insert into TABLE test2 values 4,5,6")
spark2.sql("select * from test2").show // OK returns 6,4,5
spark.sql("select * from test2").show // OK returns 6,4,5
spark.sql("alter table test rename to test3")
spark.sql("alter table test2 rename to test")
spark.sql("alter table test3 rename to test2")
spark2.sql("select * from test").show // ERROR returns empty
spark.sql("select * from test").show // OK returns 6,4,5
spark2.sql("select * from test2").show // ERROR throws 
java.io.FileNotFoundException
spark.sql("select * from test2").show // OK returns 3,1,2





--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to