One problem with saving the JobId is actors because actors run on a separate VM it will be a little like there on a separate server but with the same JobId so instead of the JobId a better option is to use GenerateGUID this will prevent actors from bypassing the lock
the reason we save the time is because we can not guaranty that a session will be unlocked
lets assume you lock a session and lets assume the server crashed or Robloxs datastore server goes down the session will stay locked forever
so this does not happen we add a timeout and we say that if a session was locked and this lock was not updated in so much time we assume that the session is dead and we bypass the lock
this is why we need to know how long ago the session was locked
os.time() uses the servers operating systems time while Roblox does a good job at keeping all the server os.time() in sync this is not 100% guaranteed
the way its done by Suphi's DataStore Module is that it uses the memorystores expiration time this guarantees all the servers see the session unlock at the exact same time