Issue #1398
This commit is contained in:
parent
5e6243caec
commit
5bc7882190
|
@ -98,6 +98,7 @@ public class GCloudSessionDataStore extends AbstractSessionDataStore
|
|||
public static final String EXPIRY = "expiry";
|
||||
public static final String MAXINACTIVE = "maxInactive";
|
||||
public static final String ATTRIBUTES = "attributes";
|
||||
public static final String LASTSAVED = "lastSaved";
|
||||
|
||||
public static final String KIND = "GCloudSession";
|
||||
protected String _kind = KIND;
|
||||
|
@ -107,6 +108,7 @@ public class GCloudSessionDataStore extends AbstractSessionDataStore
|
|||
protected String _accessed = ACCESSED;
|
||||
protected String _lastAccessed = LASTACCESSED;
|
||||
protected String _lastNode = LASTNODE;
|
||||
protected String _lastSaved = LASTSAVED;
|
||||
protected String _createTime = CREATETIME;
|
||||
protected String _cookieSetTime = COOKIESETTIME;
|
||||
protected String _expiry = EXPIRY;
|
||||
|
@ -302,6 +304,23 @@ public class GCloudSessionDataStore extends AbstractSessionDataStore
|
|||
_attributes = attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the lastSaved
|
||||
*/
|
||||
public String getLastSaved()
|
||||
{
|
||||
return _lastSaved;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param lastSaved the lastSaved to set
|
||||
*/
|
||||
public void setLastSaved(String lastSaved)
|
||||
{
|
||||
checkNotNull(lastSaved);
|
||||
_lastSaved = lastSaved;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see java.lang.Object#toString()
|
||||
*/
|
||||
|
@ -868,6 +887,7 @@ public class GCloudSessionDataStore extends AbstractSessionDataStore
|
|||
.set(_model.getLastNode(),session.getLastNode())
|
||||
.set(_model.getExpiry(), session.getExpiry())
|
||||
.set(_model.getMaxInactive(), session.getMaxInactiveMs())
|
||||
.set(_model.getLastSaved(), session.getLastSaved())
|
||||
.set(_model.getAttributes(), BlobValue.newBuilder(Blob.copyFrom(baos.toByteArray())).setExcludeFromIndexes(true).build()).build();
|
||||
|
||||
|
||||
|
@ -902,6 +922,17 @@ public class GCloudSessionDataStore extends AbstractSessionDataStore
|
|||
long createTime = entity.getLong(_model.getCreateTime());
|
||||
long cookieSet = entity.getLong(_model.getCookieSetTime());
|
||||
String lastNode = entity.getString(_model.getLastNode());
|
||||
|
||||
long lastSaved = 0;
|
||||
//for compatibility with previously saved sessions, lastSaved may not be present
|
||||
try
|
||||
{
|
||||
lastSaved = entity.getLong(_model.getLastSaved());
|
||||
}
|
||||
catch (DatastoreException e)
|
||||
{
|
||||
LOG.ignore(e);
|
||||
}
|
||||
long expiry = entity.getLong(_model.getExpiry());
|
||||
long maxInactive = entity.getLong(_model.getMaxInactive());
|
||||
Blob blob = (Blob) entity.getBlob(_model.getAttributes());
|
||||
|
@ -912,6 +943,7 @@ public class GCloudSessionDataStore extends AbstractSessionDataStore
|
|||
session.setVhost(vhost);
|
||||
session.setCookieSet(cookieSet);
|
||||
session.setLastNode(lastNode);
|
||||
session.setLastSaved(lastSaved);
|
||||
session.setExpiry(expiry);
|
||||
try (ClassLoadingObjectInputStream ois = new ClassLoadingObjectInputStream(blob.asInputStream()))
|
||||
{
|
||||
|
|
|
@ -117,6 +117,12 @@ public class MongoSessionDataStore extends NoSqlSessionDataStore
|
|||
*/
|
||||
public final static String __VERSION = __METADATA + ".version";
|
||||
|
||||
|
||||
public final static String __LASTSAVED = __METADATA + ".lastSaved";
|
||||
|
||||
|
||||
public final static String __LASTNODE = __METADATA + ".lastNode";
|
||||
|
||||
/**
|
||||
* Last access time of session
|
||||
*/
|
||||
|
@ -202,8 +208,9 @@ public class MongoSessionDataStore extends NoSqlSessionDataStore
|
|||
if (valid == null || !valid)
|
||||
return;
|
||||
|
||||
|
||||
Object version = getNestedValue(sessionDocument, getContextSubfield(__VERSION));
|
||||
Long lastSaved = (Long)getNestedValue(sessionDocument, getContextSubfield(__LASTSAVED));
|
||||
String lastNode = (String)getNestedValue(sessionDocument, getContextSubfield(__LASTNODE));
|
||||
|
||||
Long created = (Long)sessionDocument.get(__CREATED);
|
||||
Long accessed = (Long)sessionDocument.get(__ACCESSED);
|
||||
|
@ -228,6 +235,8 @@ public class MongoSessionDataStore extends NoSqlSessionDataStore
|
|||
data.setExpiry(expiry);
|
||||
data.setContextPath(_context.getCanonicalContextPath());
|
||||
data.setVhost(_context.getVhost());
|
||||
data.setLastSaved(lastSaved);
|
||||
data.setLastNode(lastNode);
|
||||
|
||||
HashMap<String, Object> attributes = new HashMap<>();
|
||||
for (String name : sessionSubDocumentForContext.keySet())
|
||||
|
@ -449,12 +458,16 @@ public class MongoSessionDataStore extends NoSqlSessionDataStore
|
|||
sets.put(__CREATED,nsqd.getCreated());
|
||||
sets.put(__VALID,true);
|
||||
sets.put(getContextSubfield(__VERSION),version);
|
||||
sets.put(getContextSubfield(__LASTSAVED), data.getLastSaved());
|
||||
sets.put(getContextSubfield(__LASTNODE), data.getLastNode());
|
||||
sets.put(__MAX_IDLE, nsqd.getMaxInactiveMs());
|
||||
sets.put(__EXPIRY, nsqd.getExpiry());
|
||||
nsqd.setVersion(version);
|
||||
}
|
||||
else
|
||||
{
|
||||
sets.put(getContextSubfield(__LASTSAVED), data.getLastSaved());
|
||||
sets.put(getContextSubfield(__LASTNODE), data.getLastNode());
|
||||
version = new Long(((Number)version).longValue() + 1);
|
||||
nsqd.setVersion(version);
|
||||
update.put("$inc",_version_1);
|
||||
|
|
|
@ -196,6 +196,7 @@ public class FileSessionDataStore extends AbstractSessionDataStore
|
|||
try (FileInputStream in = new FileInputStream(file))
|
||||
{
|
||||
SessionData data = load(in);
|
||||
data.setLastSaved(file.lastModified());
|
||||
//delete restored file
|
||||
file.delete();
|
||||
reference.set(data);
|
||||
|
|
Loading…
Reference in New Issue