Paul Evans
|
e731d30d90
|
Merge pull request #108 from matrix-org/metrics
Metrics
|
2015-03-13 17:31:10 +00:00 |
|
Erik Johnston
|
98a3825614
|
Allow enabling of registration with --disable-registration false
|
2015-03-13 16:49:18 +00:00 |
|
Erik Johnston
|
9266cb0a22
|
PEP8
|
2015-03-13 15:26:00 +00:00 |
|
Erik Johnston
|
dea236e4fa
|
Add missing commas
|
2015-03-13 15:24:03 +00:00 |
|
Erik Johnston
|
69135f59aa
|
Implement registering with shared secret.
|
2015-03-13 15:23:37 +00:00 |
|
Erik Johnston
|
58367a9da2
|
Disable registration by default
|
2015-03-13 12:59:45 +00:00 |
|
Erik Johnston
|
58247c8b4b
|
Also bump dependency link version
|
2015-03-13 11:39:57 +00:00 |
|
Matthew Hodgson
|
f55bd3f94b
|
bump dep on syweb 0.6.5
|
2015-03-12 18:56:53 +00:00 |
|
Paul "LeoNerd" Evans
|
e90002ca1d
|
Merge remote-tracking branch 'origin/develop' into metrics
|
2015-03-12 16:55:25 +00:00 |
|
David Baker
|
bbb010a30f
|
More sacrifices to the pep8 gods.
|
2015-03-12 16:53:12 +00:00 |
|
Paul "LeoNerd" Evans
|
05a056a409
|
Appease pyflakes
|
2015-03-12 16:45:05 +00:00 |
|
Paul "LeoNerd" Evans
|
0eb7e6b9a8
|
Delete unused import of NOT_READY_YET
|
2015-03-12 16:39:52 +00:00 |
|
Paul "LeoNerd" Evans
|
128cf2daf7
|
Appease pep8
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
b98b4c135d
|
Option to serve metrics from their own localhost-only TCP port instead of muxed on the main listener
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
a2cdd11d4a
|
Fold the slightly-odd bind_port/secure_port/etc.. logic into SynapseHomeServer.start_listening()
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
e0214a263b
|
Build MetricsResource as a specific HomeServer dependency
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
e75fa8bbbf
|
Bugfix to sql_txn_timer increment - add only the per-TXN duration, not the total time ever spent since boot
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
c782e893ec
|
Neater metrics from TransactionQueue
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
89ac1fa8ba
|
Add a counter to track total number of events served by the notifier
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
2e4f0b2bd7
|
Replace the @metrics.counted annotations in federation with specifically-written counters and distributions
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
c1cdd7954d
|
Add an .inc_by() method to CounterMetric; implement DistributionMetric a neater way
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
63cb7ece62
|
Rename the timer metrics exported by synapse.storage to append _time, so the meaning of ':total' is clearer
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
493e3fa0ca
|
Don't forbid '_' in metric basenames any more, to allow things like foo_time
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
f1fbe3e09f
|
Rename TimerMetric to DistributionMetric; as it could count more than just time
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
642f725fd7
|
Pretend the 'getEvent' cache is just another cache in the set of all the others for metric
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
cbc0406be8
|
Export CacheMetric as hits+total, rather than hits+misses, as it's easier to derive hit ratio from that
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
1748605c5d
|
Count incoming HTTP requests per servlet that responds
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
4d661ec0f3
|
Remember to emit final linefeed from /metrics page, or Prometheus gets upset
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
0e847540c3
|
Prometheus needs "escaped" label values
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
22b37b75db
|
Kill unused CounterMetric.fetch() method
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
b0cf867319
|
Use _ instead of . as a metric namespacing separator, for Prometheus
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
0b96bb793e
|
Have all @metrics.counted use a single metric name vectored on the method name, rather than a brand new scalar counter per counted method
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
b3a0179d64
|
Bugfix to rendering output of vectored TimerMetrics
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
f9478e475b
|
Rename Metrics' "keys" to "labels"
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
399689dcc7
|
Provide some process resource usage metrics
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
fa319a5786
|
Add TimerMetrics to shadow the PerformanceCounters in synapse.storage; with the view to eventually replacing them entirely
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
6d146e15df
|
Put some gauge metrics on the number of notifier listeners, and notified-on objects (users, rooms, appservices)
|
2015-03-12 16:24:51 +00:00 |
|
Paul "LeoNerd" Evans
|
25187ab674
|
Collect per-SQL-verb timer stats on query execution time
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
f52acf3b12
|
Neater register_* methods on overall Metrics container
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
a99d6edc05
|
Neater implementation of metric render methods by pulling out 'render' as a base method that calls self.render_item
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
72625f2f4d
|
Initial hack at a TimerMetric; for storing counts + duration accumulators
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
e1a7e3564f
|
Delete a couple of TODO markers of monitoring stats now done
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
094803cf82
|
Put vector gauges on transaction queue pending PDU and EDU dicts
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
e9c4b0d178
|
Ensure that /_synapse/metrics response is UTF-8 encoded
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
23ab0c68c2
|
Implement vector CallbackMetrics
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
849300bc73
|
Neater introspection methods on BaseMetric so that subclasses don't need to touch self.keys directly
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
8664599af7
|
Rename CacheCounterMetric to just CacheMetric; add a CallbackMetric component to give the size of the cache
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
e02cc249da
|
Ensure that exceptions while rendering individual metrics don't stop others from being rendered anyway - especially useful for CallbackMetric
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
59c448f074
|
Add a scalar gauge metric on the size of the presence user cachemap
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
d8caa5454d
|
Initial attempt at a scalar callback-based metric to give instantaneous snapshot gauges
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
b0cdf097f4
|
Sprinkle some CacheCounterMetrics around the synapse.storage layer
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
ce8b5769f7
|
Create the concept of a cachecounter metric; generating two counters specific to caches
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
7d72e44eb9
|
Add vector counters to HTTP clients and servers; count the requests by method and responses by method and response code
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
c53ec53d80
|
Pull out all uses of the underlying HTTP user agent .request() method into a single wrapper function, to make adding metrics easier
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
9470412316
|
Initial attempt at sprinkling some @metrics.counted decorations around the federation code
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
a594087f06
|
Have the MetricsResource actually render metric counters
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
74bc42cfdd
|
An initial implementation of a 'metrics' instance, similar to a 'logger' for keeping counter stats on method calls
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
120b689284
|
Delete pointless (and unreachable) __init__ method from FederationClient
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
e7420a3bef
|
Initial tiny attempt at (vectorable) counter metrics
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
e07fc62833
|
A trivial 'hello world'-style resource on /_synapse/metrics, with optional commandline flag
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
5b6e11d560
|
Commandline option to enable metrics system
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
211c14c391
|
No need to explicitly pass 'web_client' in to create_resource_tree as it can be found via config
|
2015-03-12 16:24:50 +00:00 |
|
Paul "LeoNerd" Evans
|
ad5701f50f
|
Expose 'config' as a real HomeServer dependency key
|
2015-03-12 16:24:50 +00:00 |
|
David Baker
|
c92fdf88a3
|
Log the matching push rule.
|
2015-03-11 22:17:31 +00:00 |
|
Paul "LeoNerd" Evans
|
a7a28f85ae
|
Appease pep8
|
2015-03-11 17:32:43 +00:00 |
|
Paul "LeoNerd" Evans
|
59a5f012cc
|
Also give _execute() a description
|
2015-03-11 17:19:17 +00:00 |
|
Paul "LeoNerd" Evans
|
099e4b88d8
|
Add a description to storage layer's _execute_and_decode()
|
2015-03-11 17:08:57 +00:00 |
|
David Baker
|
cdb2e045ee
|
Again, underscore, not hyphen
|
2015-03-11 14:22:35 +00:00 |
|
David Baker
|
465354ffde
|
'false' is not False
|
2015-03-11 11:24:50 +00:00 |
|
David Baker
|
83b1e7fb3c
|
PEP8 blank lines
|
2015-03-11 10:01:17 +00:00 |
|
David Baker
|
04f8478aaa
|
Add the master push rule for the break-my-push button. Allow server default rules to be disabled by default.
|
2015-03-10 17:26:25 +00:00 |
|
David Baker
|
8916acbc13
|
These aren't defined for redacted events so don't crash
|
2015-03-10 11:21:37 +00:00 |
|
Erik Johnston
|
abaf47bbb6
|
Fix bug in logging.
|
2015-03-10 10:28:29 +00:00 |
|
Erik Johnston
|
045afd6b61
|
in_thread takes no arguments
|
2015-03-10 10:19:03 +00:00 |
|
Erik Johnston
|
98b867f7b7
|
Fix bug in logging.
|
2015-03-10 10:16:09 +00:00 |
|
Kegan Dougal
|
db1fbc6c6f
|
Fix remaining scheduler bugs. Add more informative logging.
|
2015-03-10 10:04:20 +00:00 |
|
Erik Johnston
|
e84fe3599b
|
Merge pull request #105 from matrix-org/erikj-perf
Add a Twisted Service to synapse.app.homeserver
|
2015-03-10 10:02:26 +00:00 |
|
Erik Johnston
|
c37eceeb9e
|
Split out the 'run' from 'setup'
|
2015-03-10 09:58:33 +00:00 |
|
Erik Johnston
|
b8a6692657
|
Add documentation. When starting via twistd respect soft_file_limit config option.
|
2015-03-10 09:39:42 +00:00 |
|
Kegan Dougal
|
7e0bba555c
|
Remove unused import
|
2015-03-09 17:48:37 +00:00 |
|
Kegan Dougal
|
04c9751f24
|
Bug fixes whilst putting it all together
|
2015-03-09 17:45:41 +00:00 |
|
Erik Johnston
|
019422ebba
|
Merge pull request #101 from matrix-org/neaten-federation-servlets
Neaten federation servlets
|
2015-03-09 17:39:06 +00:00 |
|
Kegan Dougal
|
b98cd03193
|
Use event IDs instead of dumping event content in the txns table.
|
2015-03-09 17:25:20 +00:00 |
|
Kegan Dougal
|
21fd84dcb8
|
Use seconds; start gluing in the AS scheduler into the AS handler.
|
2015-03-09 17:01:19 +00:00 |
|
Erik Johnston
|
8e28db5cc9
|
Change room handlers get_rooms_for_user to get_joined_rooms_for_user. This uses the a storage api that is cached.
|
2015-03-09 16:43:09 +00:00 |
|
Kegan Dougal
|
0a60bbf4fa
|
Finish appservice txn storage impl and tests.
|
2015-03-09 15:53:03 +00:00 |
|
Kegan Dougal
|
1ead1caa18
|
Implement create_appservice_txn with tests.
|
2015-03-09 13:54:20 +00:00 |
|
Erik Johnston
|
f31e65ca8b
|
Merge branch 'develop' of github.com:matrix-org/synapse into erikj-perf
|
2015-03-09 13:29:41 +00:00 |
|
Kegan Dougal
|
1c2dcf762a
|
Partially implement txn store methods with tests.
|
2015-03-09 13:10:31 +00:00 |
|
David Baker
|
1df3ccf7ee
|
D'oh: underscore, not hyphen
|
2015-03-09 12:39:56 +00:00 |
|
David Baker
|
118c883429
|
Call notifications should be override else they'll get clobbered by sender/room rules.
|
2015-03-06 19:41:36 +00:00 |
|
Kegan Dougal
|
406d32f8b5
|
Start implementing ApplicationServiceTransactionStore
|
2015-03-06 17:35:14 +00:00 |
|
Kegan Dougal
|
34ce2ca62f
|
Merge branch 'develop' into application-services-txn-reliability
|
2015-03-06 17:28:49 +00:00 |
|
Kegan Dougal
|
4a6afa6abf
|
Assign the AS ID from the database; replace old placeholder txn id.
|
2015-03-06 17:27:55 +00:00 |
|
Kegan Dougal
|
01c099d9ef
|
Add appservice txns sql schema
|
2015-03-06 17:16:47 +00:00 |
|
Kegan Dougal
|
64345b7559
|
Upper bound the backoff.
|
2015-03-06 16:41:19 +00:00 |
|
Erik Johnston
|
5d43eaed61
|
Merge branch 'develop' into release-v0.8.0
|
2015-03-06 16:25:19 +00:00 |
|
Erik Johnston
|
9ccccd4874
|
When setting display name more graciously handle failures to update room state.
|
2015-03-06 16:24:05 +00:00 |
|
Kegan Dougal
|
2602ddc379
|
Apply clarity and docstrings
|
2015-03-06 16:16:14 +00:00 |
|
Kegan Dougal
|
0354659f9d
|
Finish synapse.appservice.scheduler implementation.
With tests to assert behaviour. Not hooked up yet. Stub datastore methods
not implemented yet.
|
2015-03-06 16:09:05 +00:00 |
|
David Baker
|
be9dafcd37
|
Dial down logging for failed pushers
|
2015-03-06 15:32:38 +00:00 |
|
Kegan Dougal
|
7d3491c741
|
Add some loggers
|
2015-03-06 15:17:50 +00:00 |
|
David Baker
|
96eda876a4
|
Specify when we don't want to highlight
|
2015-03-06 15:12:37 +00:00 |
|
Kegan Dougal
|
f260cb72cd
|
Flesh out more stub functions.
|
2015-03-06 15:12:24 +00:00 |
|
David Baker
|
e7d7152c3c
|
Remove the fallback rule - we probably don't want to be notifying for everything even if we don't know what it is.
|
2015-03-06 15:03:34 +00:00 |
|
Kegan Dougal
|
141ec04d19
|
Add stub ApplicationServiceTransactionStore. Bootstrap Recoverers. Fill in stub Transaction functions.
|
2015-03-06 14:53:35 +00:00 |
|
David Baker
|
5ecc768970
|
Add attribute so push gateways can tell if a member event is about the user in question
|
2015-03-06 14:41:50 +00:00 |
|
Kegan Dougal
|
0fbfe1b08a
|
Add more tests; fix bugs.
|
2015-03-06 14:36:52 +00:00 |
|
Erik Johnston
|
369449827d
|
Bump version
|
2015-03-06 14:24:53 +00:00 |
|
Erik Johnston
|
c54773473f
|
Merge branch 'master' of github.com:matrix-org/synapse into develop
|
2015-03-06 14:23:41 +00:00 |
|
Erik Johnston
|
b102a87348
|
Merge pull request #96 from matrix-org/pushrules2
Evolution of push rules
|
2015-03-06 14:20:04 +00:00 |
|
David Baker
|
cf66ddc1b4
|
Schema change as delta in v14
|
2015-03-06 14:11:49 +00:00 |
|
David Baker
|
c06b45129c
|
Add more server default rules so we have default rules for whether you get notifs for invites / random member events
|
2015-03-06 11:50:51 +00:00 |
|
Kegan Dougal
|
192e228a98
|
Start adding some tests
|
2015-03-06 11:50:27 +00:00 |
|
Erik Johnston
|
e49d6b1568
|
Unused import
|
2015-03-06 11:37:24 +00:00 |
|
David Baker
|
657a0d2568
|
Comment typo
|
2015-03-06 11:34:30 +00:00 |
|
Erik Johnston
|
3ce8540484
|
Don't look for an TLS private key if we have set --no-tls
|
2015-03-06 11:34:06 +00:00 |
|
David Baker
|
1487bba226
|
Suppress notices should trump content/room/sender rules.
|
2015-03-06 10:27:32 +00:00 |
|
David Baker
|
83d31144eb
|
Add the highlight tweak where messages should be highlighted a different colour in appropriate clients.
|
2015-03-06 10:26:08 +00:00 |
|
Kegan Dougal
|
d516d68b29
|
Rejig structure given the appservice_handler already filters the correct ASes to use.
|
2015-03-06 10:25:50 +00:00 |
|
Erik Johnston
|
130df8fb01
|
Add some randomness to the user specified timeout on event streams to mitigate against thundering herds problems
|
2015-03-06 10:25:36 +00:00 |
|
Paul "LeoNerd" Evans
|
d79d91a4a7
|
Appease pep8
|
2015-03-05 20:55:40 +00:00 |
|
Paul "LeoNerd" Evans
|
5eab2549ab
|
Append a $ on PATH at registration time, meaning each PATH attribute doesn't need it
|
2015-03-05 20:36:05 +00:00 |
|
Paul "LeoNerd" Evans
|
7644cb79b2
|
Slightly neater(?) arrangement of authentication wrapper for HTTP servlet methods
|
2015-03-05 20:33:16 +00:00 |
|
Paul "LeoNerd" Evans
|
ba8ac996f9
|
Remove the dead 'rate_limit_origin' method from TransportLayerServer
|
2015-03-05 19:43:17 +00:00 |
|
Paul "LeoNerd" Evans
|
a901ed16b5
|
Move federation API responding code out of weird mix of lambdas into Servlet-style methods on instances
|
2015-03-05 19:10:57 +00:00 |
|
Kegan Dougal
|
0c838f9f5e
|
Minor tweaks
|
2015-03-05 17:45:52 +00:00 |
|
Kegan Dougal
|
773cb3b688
|
Add stub architecture for txn reliability.
|
2015-03-05 17:35:07 +00:00 |
|
Erik Johnston
|
5b5c7a28d6
|
Log error message when we fail to fetch remote server keys
|
2015-03-05 17:09:13 +00:00 |
|
Erik Johnston
|
12bcf3d179
|
Merge pull request #100 from matrix-org/missing_pdu_compat
Handle if get_missing_pdu returns 400 or not all events.
|
2015-03-05 16:42:15 +00:00 |
|
Erik Johnston
|
9708f49abf
|
Docs
|
2015-03-05 16:35:16 +00:00 |
|
Erik Johnston
|
96fee64421
|
Remove unecessary check
|
2015-03-05 16:31:47 +00:00 |
|
Erik Johnston
|
39aa968a76
|
Respect min_depth argument
|
2015-03-05 16:31:32 +00:00 |
|
Erik Johnston
|
6dfd8c73fc
|
Docs.
|
2015-03-05 16:31:13 +00:00 |
|
Kegan Dougal
|
e319071191
|
Add stub scheduler module for txn reliability
|
2015-03-05 16:30:33 +00:00 |
|
Paul "LeoNerd" Evans
|
9d9d39536b
|
Slightly reduce the insane amounts of indentation in main http server response path, by 'continue'ing around a non-match or falling through
|
2015-03-05 16:24:13 +00:00 |
|
Erik Johnston
|
ae702d161a
|
Handle if get_missing_pdu returns 400 or not all events.
|
2015-03-05 16:08:02 +00:00 |
|
Kegan Dougal
|
be09c23ff0
|
Add txn_id kwarg to push methods
|
2015-03-05 15:40:07 +00:00 |
|
Paul "LeoNerd" Evans
|
dc4b774f1e
|
Rename rooms_to_listeners to room_to_listeners, for consistency with user_ and appservice_*
|
2015-03-05 14:30:20 +00:00 |
|
Paul "LeoNerd" Evans
|
027fd1242c
|
Give LruCache a __len__, so that len(cache) works
|
2015-03-04 17:32:28 +00:00 |
|
David Baker
|
590b544f67
|
Add default rule to suppress notices.
|
2015-03-04 15:29:02 +00:00 |
|
David Baker
|
ed72fc3a50
|
Merge branch 'develop' into pushrules2
Conflicts:
synapse/storage/schema/pusher.sql
|
2015-03-04 15:24:21 +00:00 |
|
Erik Johnston
|
d56c01fff4
|
Note that we don't specify execution order
|
2015-03-04 15:10:05 +00:00 |
|
Erik Johnston
|
17d319a20d
|
s/schema_deltas/applied_schema_deltas/
|
2015-03-04 15:06:22 +00:00 |
|
David Baker
|
92b3dc3219
|
Merge branch 'develop' into pushrules2
|
2015-03-04 14:56:41 +00:00 |
|
Erik Johnston
|
5681264faa
|
s/%r/%s/
|
2015-03-04 14:21:53 +00:00 |
|
Erik Johnston
|
f701197227
|
Add example directory structures in doc
|
2015-03-04 14:20:14 +00:00 |
|
David Baker
|
2a45f3d448
|
Use if not results rather than len, as per feedback.
|
2015-03-04 14:17:59 +00:00 |
|
Erik Johnston
|
16dd87d848
|
Don't assume db conn is a Context Manager.
Twisted adbapi wrapped connections aren't context managers.
|
2015-03-04 14:03:41 +00:00 |
|
Erik Johnston
|
5eefd1f618
|
Add unique constraint on schema_version.lock schema. Use conflict clause in sql.
|
2015-03-04 13:52:18 +00:00 |
|