When determining if a session should be persisted, PersistentValve calls getSessionInternal with no arguments which causes a new one to be allocated if none exists. It should pass false to avoid unnecessary sessions being allocated. http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/PersistentValve.java?revision=1561138&view=markup#l131
Fixed in trunk.
Will be included in tomcat 8.0.21 and 7.0.60.