Stephan Brunner [Sun, 9 May 2021 17:27:19 +0000 (19:27 +0200)]
[MongoDB Persistence] Fix error 500 and various improvements (#10584)
* [MongoDB Persistence] Rename connectToDatabase to tryConnectToDatabase.
Currently, the implementation throws a RuntimeException.
This fails horribly in query() and store(), because the exception is never caught and connection reestablishment won't happen.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Fix JavaDoc
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Fix Bundle name
The correct database name is "MongoDB" without a space.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Also check for connection validity in isConnected()
When the connection was established successfully once, and the server goes down (e. g. a restart of the DB server), the connection still seems to be OK.
This would throw an exception later on, which is not caught and connection reestablishment won't happen.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Disconnect from database before reconnecting to database.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Disconnect from database when connection procedure fails.
When, for example, the creation of the index fails (disk full, ...), the connection is still there, but the collection isn't created with it's appropriate indices.
Thus, disconnect when the procedure fails to ensure no database connection remains valid.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Fix logic
Create the shared collection with its indices when collectionPerItem is disabled, not enabled.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Access database via getDatabase()
Preparation for synchronization.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Remove global mongoCollection variable.
This allows to easify implementing necessary multithreading locks.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Codestyle improvements.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Move isConnected-Check into tryConnectToDatabase.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Synchronize all connection handling methods.
Though the MongoDB driver is thread-safe, we still need to synchronize connection establishment/closing/...
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Remove all unnecessary @NonNullByDefault attributes.
The given attributes should not be NotNullByDefault, because some may be null, too.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Remove duplicate logging.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Test the db connection after creating the MongoClient.
The mongo always succeeds in creating the connection.
We have to actually force it to test the connection to try to connect to the server.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Fix date query.
Issues:
- Second should have been getEndDate, not getBeginDate
- Send a Date object as the other version wasn't serializable.
- EndDate would have overridden beginDate.
Fixes #10574
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Add debug log for MongoDB query sent to the server.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Reorder index on collections.
The order (Item, Timestamp) makes much more sense and should be better for performance.
All queries are always done with an item, and the dates are optional.
Also, the database server can now execute a range query for the date.
Existing indices are not dropped for backwards compatibility with other systems analyzing the data.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Add @author JavaDoc as per developer guidelines.
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Improve logging
Signed-off-by: Stephan Brunner <s.brunner@stephan-brunner.net>
* [MongoDB Persistence] Add @NonNullByDefault
grro [Sun, 9 May 2021 17:18:39 +0000 (19:18 +0200)]
[WebThing] If WebThing network connection is crashed, WebThing will not be reconnected. (#10579)
* Unnecessary NonNull annotations removed
Signed-off-by: Gregor Roth <gregor.roth@web.de> Signed-off-by: gregor roth <gregor.roth@web.de>
* Bugfix "If network connection is interrupted, WebThing will not be reconnected." Due to the variable webThingURI is unset, re connection fails
Signed-off-by: Gregor Roth <gregor.roth@web.de> Signed-off-by: gregor roth <gregor.roth@web.de>
* webThingURI will be loaded in a lazy way
Signed-off-by: Gregor Roth <gregor.roth@web.de> Signed-off-by: gregor roth <gregor.roth@web.de>
ENTRY_MODIFY is triggered on each keypress multiple times, so we should
not trigger on it.
The usecase for ENTRY_MODIFY triggers where detecting permission changes
of the event nodes.
Inotify does have a dedicate event ("ATTRIB") for that but Java
WatchService normalizes this to a ENTRY_MODIFY event
(See LinuxWatchService.java)
After permission changes users now have to trigger a scan manually.
* Use proper representation property
* Show event node in label
This makes it easier to figure out which thing is which device in the
presence of symlinks or multiple identical devices.
David [Sat, 1 May 2021 08:24:23 +0000 (10:24 +0200)]
[enocean] Fix discovery of D2-50 devices (#10577)
This change accepts a new message type which is sent by some air ventilation devices durin teach in. This is required for the search feature to detect these devices correctly.
Signed-off-by: David Schumann <david@dev-core.org>
Dan Cunningham [Wed, 28 Apr 2021 07:12:01 +0000 (00:12 -0700)]
[openhabcloud] Accept all Jetty supported http method types (#10600)
* Accept all Jetty supported http method types
This fixes a number of open issues due to the fact that we were only accepting a limited number of http method types. The effect of this was some functionality like DELETE or HEAD requests would just not work when using the cloud service, which madee our UI look broken in different ways, also it poluted the users log with a lot of messages.
[velux] Fix synchronisation of handler initialization and disposal (#10449)
* [velux] break on socket timeout if interrupted flag set
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] pause initialize until pending dispose is done
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] synchronization key is IP address not ThingUID
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] reduce logging level
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] reduce logging level, improve user comprehensibility
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] access updateBindingState() externally via static method
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] tweak logging
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] defer refreshBindingInfo until after initialized / disposed
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] refactor method names to show the type of scheduler they run on
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] don't terminate thread early
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] restore calls to updateBindingState
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] logger cosmetics
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] reduce logging levels
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] change logger level
Signed-off-by: Andrew Fiddian-Green <software@whitebear.ch>
* [velux] synch on ip address object instead of Future<>; make shutdown timeout explicit; disable HSM on shutdown