Mongo - Custom pessimistic locking mechanism

Problem:Having one thread updating a document at a time.
Solution:Lock manager:

, lock implementation:

, how to:
1) check if the document is locked
2) acquire the lock
3) release the lock

Logstash - logstash.runner, An unexpected error occurred! does not exist, and I failed trying to create it

Problem: [FATAL][logstash.runner          ] An unexpected error occurred! {:error=>#<ArgumentError: Path "<path>" does not exist, and I failed trying to create it
Solution: chmod -R 755 <path>
chmod -R 755 <path>/..

spring @async causing BeanCurrentlyInCreationException

Problem: Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name '<bean name>': Bean with name '<bean name>' has been injected into other beans [<some other bean name>] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.

Solution: Autowire the beans by bean id

@Qualifier("<bean name>")
private <bean type> <var name>;

, for example

private Publisher publisher;

Linux - Grep, escape back slash characters

Problem: Execute 'grep' in order to match with: \"123456789\"
Solution: grep '\\\"123456789\\\"' <filename>

Hibernate - Exception "node to traverse cannot be null"

Problem:Hibernate exception "java.lang.IllegalArgumentException: node to traverse cannot be null"
Query query = session.createQuery("delete " +
"(...) " +
"where > " +
" and map_material.map_key = map_material_1.map_key " +
"(...) "
Solution:Make sure to use hibernate "createSQLQuery" method
Query query = session.createSQLQuery("delete " +
"(...) " +
"where > " +
"and map_material.map_key = map_material_1.map_key " +
"(...) "

Java - Transform string list into list

Problem:Transform a list of strings into a single string. One solution is to iterate over the list and append its contents. Remember that StringBuilder's append is much faster than Strings concatenation.

Solution:A better solution is relying on Java StringJoiner

, or with Java 8