openhab-core/bundles
Markus Rathgeb f881ef87f1 model: prevent simultan access of singleton (#773)
The singleton instance of "Diagnostician" is used without
synchronization.
The singleton "Diasnostician" instance is using the singleton
"EValidator.Registry" instance (without synchronization).
In very rare high load situations there has been CME detected.

My first "solution" has been to synchronize the access of
Diagnostician's instance method by using

```java
synchronized (Diagnostician.INSTANCE) {
    ...
```

But after realize that EMF is using internally other singletons I tried
to find any information about EMF and thread safety.

I found this one: https://javahacks.net/2016/07/13/emf-thread-safety/

  EMF models are not thread-safe by default and writing multithreaded
  applications is not that simple.
  The more complex our application became, the more often we got
  concurrent modification exceptions and had problems with filtering and
  sorting operations.

So, I assume instead of adding synchronizations to our code that is
using EMF (IIRC this has been already done on the ESH hosted code base
long time ago) we should try to execute EMF code in a safe manner.

This implementation adds a "SafeEMF" OSGi service that should be used to
execute EMF code to ensure none code of EMF (or at least the ones that
calls has been migrated to the SafeEMF usage) is accessed by separate
threads at the same time.

Related to: https://github.com/openhab/openhab-core/issues/772

Signed-off-by: Markus Rathgeb <maggu2810@gmail.com>
2019-05-01 23:19:07 +02:00
..
org.openhab.core Added i18n feature for dynamic command descriptions (#771) 2019-04-29 19:16:47 +02:00
org.openhab.core.audio Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.auth.jaas Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.auth.oauth2client Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.automation automation: some cleanup (#776) 2019-05-01 23:04:07 +02:00
org.openhab.core.automation.module.media Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.automation.module.script remove build path entries for non-existent folders (#716) 2019-04-14 09:55:32 +02:00
org.openhab.core.automation.module.script.rulesupport Sort by filename instead of path (#724) 2019-04-18 20:15:50 +02:00
org.openhab.core.automation.rest Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.binding.xml Updated xml schema definition locations to openhab (#768) 2019-04-29 19:14:51 +02:00
org.openhab.core.boot Configure LanguageServer exit behavior (#742) 2019-04-17 06:52:42 +02:00
org.openhab.core.compat1x Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.config.core Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.config.discovery Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.config.discovery.mdns Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.config.discovery.upnp Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.config.discovery.usbserial Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.config.discovery.usbserial.linuxsysfs Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.config.dispatch Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.config.serial Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.config.xml Updated xml schema definition locations to openhab (#768) 2019-04-29 19:14:51 +02:00
org.openhab.core.extension.sample Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.id Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.console Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.console.eclipse Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.console.karaf differ between min. karaf version (OSGi) und karaf compilation tooling (#740) 2019-04-16 22:41:27 +02:00
org.openhab.core.io.console.rfc147 Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.http Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.http.auth Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.http.auth.basic Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.jetty.certificate Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.monitor Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.net Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.rest Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.rest.auth Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.rest.core Added i18n feature for dynamic state descriptions (#655) 2019-04-26 12:54:40 +02:00
org.openhab.core.io.rest.log Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.rest.mdns Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.rest.optimize Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.rest.sitemap Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.rest.sse drop blocking async SSE implementation (#754) 2019-04-25 20:05:22 +02:00
org.openhab.core.io.rest.voice Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.transport.dbus Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.transport.mdns Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.transport.mqtt Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.io.transport.serial Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.transport.serial.javacomm Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.transport.serial.rxtx Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.transport.serial.rxtx.rfc2217 Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.io.transport.upnp Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.karaf Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.model.codegen Updated NOTICE files to openHAB (#578) 2019-02-15 10:46:18 +01:00
org.openhab.core.model.core model: prevent simultan access of singleton (#773) 2019-05-01 23:19:07 +02:00
org.openhab.core.model.item Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.item.ide Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.item.runtime Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.lazygen Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.lsp Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.model.persistence Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.persistence.ide Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.persistence.runtime Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.rule Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.rule.ide Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.rule.runtime Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.script Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.model.script.ide Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.script.runtime Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.sitemap Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.sitemap.ide Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.sitemap.runtime Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.thing Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.thing.ide Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.model.thing.runtime Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.persistence Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.scheduler Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.semantics Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.storage.json Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.storage.mapdb mapdb storage: minor cleanups (#707) 2019-04-09 21:23:25 +02:00
org.openhab.core.test Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.test.magic Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.thing Changed ordering of annotation and quialifier 2019-04-30 13:22:26 +02:00
org.openhab.core.thing.xml Updated xml schema definition locations to openhab (#768) 2019-04-29 19:14:51 +02:00
org.openhab.core.transform Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.ui Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
org.openhab.core.ui.icon Ignore and remove Eclipse project specific settings (#677) 2019-03-26 13:04:09 +01:00
org.openhab.core.voice Updated xml schema locations to openhab (#769) 2019-04-29 19:15:24 +02:00
pom.xml Attach source JARs without forking to fix Jenkins warnings (#741) 2019-04-17 06:55:41 +02:00