[Bug] TransactionalMap.putIfAbsent unlock

TransactionalMap.putIfAbsent method locks value in map by lockAndGet and never releases lock if value in map already present.
Fix and test provided.

Fixes #3149