Browse Source

Chore: remove session storage references (#16445)

* Chore: remove session storage references

* Small refactoring of the settings module

* Update docs - remove references for the session storage

* Update config files (sample and default configs)

* Add tests for warning during the config load on defined storage cache

* Remove all references to session storage

* Remove macaron session dependency

* Remove leftovers

* Fix: address review comments

* Fix: remove old deps

* Fix: add skipStaticRootValidation = true to tests

* Fix: improve the docs and warning message

As per discussion in here - https://github.com/grafana/grafana/pull/16445/files#r273026255

* Chore: make linter happy

Fixes #16148
Ref #16114
Oleg Gaidarenko 6 years ago
parent
commit
db584b3d28

+ 937 - 0
Gopkg.lock

@@ -0,0 +1,937 @@
+# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
+
+
+[[projects]]
+  digest = "1:f8ad8a53fa865a70efbe215b0ca34735523f50ea39e0efde319ab6fc80089b44"
+  name = "cloud.google.com/go"
+  packages = ["compute/metadata"]
+  pruneopts = "NUT"
+  revision = "056a55f54a6cc77b440b31a56a5e7c3982d32811"
+  version = "v0.22.0"
+
+[[projects]]
+  digest = "1:167b6f65a6656de568092189ae791253939f076df60231fdd64588ac703892a1"
+  name = "github.com/BurntSushi/toml"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "b26d9c308763d68093482582cea63d69be07a0f0"
+  version = "v0.3.0"
+
+[[projects]]
+  branch = "master"
+  digest = "1:7d23e6e1889b8bb4bbb37a564708fdab4497ce232c3a99d66406c975b642a6ff"
+  name = "github.com/Unknwon/com"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "7677a1d7c1137cd3dd5ba7a076d0c898a1ef4520"
+
+[[projects]]
+  branch = "master"
+  digest = "1:1610787cd9726e29d8fecc2a80e43e4fced008a1f560fec6688fc4d946f17835"
+  name = "github.com/VividCortex/mysqlerr"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "6c6b55f8796f578c870b7e19bafb16103bc40095"
+
+[[projects]]
+  digest = "1:ebe102b61c1615d2954734e3cfe1b6b06a5088c25a41055b38661d41ad7b8f27"
+  name = "github.com/aws/aws-sdk-go"
+  packages = [
+    "aws",
+    "aws/awserr",
+    "aws/awsutil",
+    "aws/client",
+    "aws/client/metadata",
+    "aws/corehandlers",
+    "aws/credentials",
+    "aws/credentials/ec2rolecreds",
+    "aws/credentials/endpointcreds",
+    "aws/credentials/processcreds",
+    "aws/credentials/stscreds",
+    "aws/csm",
+    "aws/defaults",
+    "aws/ec2metadata",
+    "aws/endpoints",
+    "aws/request",
+    "aws/session",
+    "aws/signer/v4",
+    "internal/ini",
+    "internal/s3err",
+    "internal/sdkio",
+    "internal/sdkrand",
+    "internal/sdkuri",
+    "internal/shareddefaults",
+    "private/protocol",
+    "private/protocol/ec2query",
+    "private/protocol/eventstream",
+    "private/protocol/eventstream/eventstreamapi",
+    "private/protocol/json/jsonutil",
+    "private/protocol/jsonrpc",
+    "private/protocol/query",
+    "private/protocol/query/queryutil",
+    "private/protocol/rest",
+    "private/protocol/restxml",
+    "private/protocol/xml/xmlutil",
+    "service/cloudwatch",
+    "service/ec2",
+    "service/ec2/ec2iface",
+    "service/resourcegroupstaggingapi",
+    "service/resourcegroupstaggingapi/resourcegroupstaggingapiiface",
+    "service/s3",
+    "service/sts",
+  ]
+  pruneopts = "NUT"
+  revision = "62936e15518acb527a1a9cb4a39d96d94d0fd9a2"
+  version = "v1.16.15"
+
+[[projects]]
+  branch = "master"
+  digest = "1:79cad073c7be02632d3fa52f62486848b089f560db1e94536de83a408c0f4726"
+  name = "github.com/benbjohnson/clock"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "7dc76406b6d3c05b5f71a86293cbcf3c4ea03b19"
+
+[[projects]]
+  branch = "master"
+  digest = "1:707ebe952a8b3d00b343c01536c79c73771d100f63ec6babeaed5c79e2b8a8dd"
+  name = "github.com/beorn7/perks"
+  packages = ["quantile"]
+  pruneopts = "NUT"
+  revision = "3a771d992973f24aa725d07868b467d1ddfceafb"
+
+[[projects]]
+  branch = "master"
+  digest = "1:433a2ff0ef4e2f8634614aab3174783c5ff80120b487712db96cc3712f409583"
+  name = "github.com/bmizerany/assert"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "b7ed37b82869576c289d7d97fb2bbd8b64a0cb28"
+
+[[projects]]
+  branch = "master"
+  digest = "1:d8f9145c361920507a4f85ffb7f70b96beaedacba2ce8c00aa663adb08689d3e"
+  name = "github.com/bradfitz/gomemcache"
+  packages = ["memcache"]
+  pruneopts = "NUT"
+  revision = "1952afaa557dc08e8e0d89eafab110fb501c1a2b"
+
+[[projects]]
+  branch = "master"
+  digest = "1:8ecb89af7dfe3ac401bdb0c9390b134ef96a97e85f732d2b0604fb7b3977839f"
+  name = "github.com/codahale/hdrhistogram"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "3a0bb77429bd3a61596f5e8a3172445844342120"
+
+[[projects]]
+  digest = "1:5dba68a1600a235630e208cb7196b24e58fcbb77bb7a6bec08fcd23f081b0a58"
+  name = "github.com/codegangsta/cli"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "cfb38830724cc34fedffe9a2a29fb54fa9169cd1"
+  version = "v1.20.0"
+
+[[projects]]
+  digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39"
+  name = "github.com/davecgh/go-spew"
+  packages = ["spew"]
+  pruneopts = "NUT"
+  revision = "346938d642f2ec3594ed81d874461961cd0faa76"
+  version = "v1.1.0"
+
+[[projects]]
+  digest = "1:1b318d2dd6cea8a1a8d8ec70348852303bd3e491df74e8bca6e32eb5a4d06970"
+  name = "github.com/denisenkom/go-mssqldb"
+  packages = [
+    ".",
+    "internal/cp",
+  ]
+  pruneopts = "NUT"
+  revision = "270bc3860bb94dd3a3ffd047377d746c5e276726"
+
+[[projects]]
+  branch = "master"
+  digest = "1:2da5f11ad66ff01a27a5c3dba4620b7eee2327be75b32c9ee9f87c9a8001ecbf"
+  name = "github.com/facebookgo/inject"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "cc1aa653e50f6a9893bcaef89e673e5b24e1e97b"
+
+[[projects]]
+  branch = "master"
+  digest = "1:1108df7f658c90db041e0d6174d55be689aaeb0585913b9c3c7aab51a3a6b2b1"
+  name = "github.com/facebookgo/structtag"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "217e25fb96916cc60332e399c9aa63f5c422ceed"
+
+[[projects]]
+  digest = "1:ade392a843b2035effb4b4a2efa2c3bab3eb29b992e98bacf9c898b0ecb54e45"
+  name = "github.com/fatih/color"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "5b77d2a35fb0ede96d138fc9a99f5c9b6aef11b4"
+  version = "v1.7.0"
+
+[[projects]]
+  branch = "master"
+  digest = "1:682a0aca743a1a4a36697f3d7f86c0ed403c4e3a780db9935f633242855eac9c"
+  name = "github.com/go-macaron/binding"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "ac54ee249c27dca7e76fad851a4a04b73bd1b183"
+
+[[projects]]
+  branch = "master"
+  digest = "1:6326b27f8e0c8e135c8674ddbc619fae879664ac832e8e6fa6a23ce0d279ed4d"
+  name = "github.com/go-macaron/gzip"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "cad1c6580a07c56f5f6bc52d66002a05985c5854"
+
+[[projects]]
+  branch = "master"
+  digest = "1:fb8711b648d1ff03104fc1d9593a13cb1d5120be7ba2b01641c14ccae286a9e3"
+  name = "github.com/go-macaron/inject"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "d8a0b8677191f4380287cfebd08e462217bac7ad"
+
+[[projects]]
+  branch = "master"
+  digest = "1:f43e840e8efb7b5047c1f60057702550fcdefd2b29e3a73ccea25e27d2e83fda"
+  name = "github.com/go-macaron/session"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "068d408f9c54c7fa7fcc5e2bdd3241ab21280c9e"
+
+[[projects]]
+  digest = "1:fddd4bada6100d6fc49a9f32f18ba5718db45a58e4b00aa6377e1cfbf06af34f"
+  name = "github.com/go-sql-driver/mysql"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "2cc627ac8defc45d65066ae98f898166f580f9a4"
+
+[[projects]]
+  digest = "1:a1efdbc2762667c8a41cbf02b19a0549c846bf2c1d08cad4f445e3344089f1f0"
+  name = "github.com/go-stack/stack"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc"
+  version = "v1.7.0"
+
+[[projects]]
+  digest = "1:06d21295033f211588d0ad7ff391cc1b27e72b60cb6d4b7db0d70cffae4cf228"
+  name = "github.com/go-xorm/builder"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "1d658d7596c25394aab557ef5b50ef35bf706384"
+  version = "v0.3.4"
+
+[[projects]]
+  digest = "1:b26928aab0fff92592e8728c5bc9d6e404fa2017d6a8e841ae5e60a42237f6fc"
+  name = "github.com/go-xorm/core"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "ccc80c1adf1f6172bbc548877f50a1163041a40a"
+  version = "v0.6.2"
+
+[[projects]]
+  digest = "1:407316703b32d68ccf5d39bdae57d411b6954e253e07d0fff0988a3f39861f2f"
+  name = "github.com/go-xorm/xorm"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "1f39c590c64924f358c0d89016ac9b2bb84e9125"
+  version = "v0.7.1"
+
+[[projects]]
+  branch = "master"
+  digest = "1:ffbb19fb66f140b5ea059428d1f84246a055d1bc3d9456c1e5c3d143611f03d0"
+  name = "github.com/golang/protobuf"
+  packages = [
+    "proto",
+    "ptypes",
+    "ptypes/any",
+    "ptypes/duration",
+    "ptypes/timestamp",
+  ]
+  pruneopts = "NUT"
+  revision = "927b65914520a8b7d44f5c9057611cfec6b2e2d0"
+
+[[projects]]
+  branch = "master"
+  digest = "1:f14d1b50e0075fb00177f12a96dd7addf93d1e2883c25befd17285b779549795"
+  name = "github.com/gopherjs/gopherjs"
+  packages = ["js"]
+  pruneopts = "NUT"
+  revision = "8dffc02ea1cb8398bb73f30424697c60fcf8d4c5"
+
+[[projects]]
+  digest = "1:3b708ebf63bfa9ba3313bedb8526bc0bb284e51474e65e958481476a9d4a12aa"
+  name = "github.com/gorilla/websocket"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b"
+  version = "v1.2.0"
+
+[[projects]]
+  digest = "1:4e771d1c6e15ca4516ad971c34205c822b5cff2747179679d7b321e4e1bfe431"
+  name = "github.com/gosimple/slug"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "e9f42fa127660e552d0ad2b589868d403a9be7c6"
+  version = "v1.1.1"
+
+[[projects]]
+  branch = "master"
+  digest = "1:08e53c69cd267ef7d71eeae5d953153d0d2bc1b8e0b498731fe9acaead7001b6"
+  name = "github.com/grafana/grafana-plugin-model"
+  packages = [
+    "go/datasource",
+    "go/renderer",
+  ]
+  pruneopts = "NUT"
+  revision = "84176c64269d8060f99e750ee8aba6f062753336"
+
+[[projects]]
+  branch = "master"
+  digest = "1:58ba5285227b0f635652cd4aa82c4cfd00b590191eadd823462f0c9f64e3ae07"
+  name = "github.com/hashicorp/go-hclog"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "69ff559dc25f3b435631604f573a5fa1efdb6433"
+
+[[projects]]
+  digest = "1:532090ffc3b05a7e4c0229dd2698d79149f2e0683df993224a8b202f607fb605"
+  name = "github.com/hashicorp/go-plugin"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "e8d22c780116115ae5624720c9af0c97afe4f551"
+
+[[projects]]
+  branch = "master"
+  digest = "1:8925116d1edcd85fc0c014e1aa69ce12892489b48ee633a605c46d893b8c151f"
+  name = "github.com/hashicorp/go-version"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "23480c0665776210b5fbbac6eaaee40e3e6a96b7"
+
+[[projects]]
+  branch = "master"
+  digest = "1:8deb0c5545c824dfeb0ac77ab8eb67a3d541eab76df5c85ce93064ef02d44cd0"
+  name = "github.com/hashicorp/yamux"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "7221087c3d281fda5f794e28c2ea4c6e4d5c4558"
+
+[[projects]]
+  digest = "1:efbe016b6d198cf44f1db0ed2fbdf1b36ebf1f6956cc9b76d6affa96f022d368"
+  name = "github.com/inconshreveable/log15"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "0decfc6c20d9ca0ad143b0e89dcaa20f810b4fb3"
+  version = "v2.13"
+
+[[projects]]
+  digest = "1:1f2aebae7e7c856562355ec0198d8ca2fa222fb05e5b1b66632a1fce39631885"
+  name = "github.com/jmespath/go-jmespath"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "c2b33e84"
+
+[[projects]]
+  digest = "1:395b1480ae42c3fec6fff19823e66e173819f85826811387f9045c88515a7f0f"
+  name = "github.com/jtolds/gls"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "b4936e06046bbecbb94cae9c18127ebe510a2cb9"
+
+[[projects]]
+  digest = "1:1da1796a71eb70f1e3e085984d044f67840bb0326816ec8276231aa87b1b9fc3"
+  name = "github.com/klauspost/compress"
+  packages = [
+    "flate",
+    "gzip",
+  ]
+  pruneopts = "NUT"
+  revision = "6c8db69c4b49dd4df1fff66996cf556176d0b9bf"
+  version = "v1.2.1"
+
+[[projects]]
+  digest = "1:5e55a8699c9ff7aba1e4c8952aeda209685d88d4cb63a8766c338e333b8e65d6"
+  name = "github.com/klauspost/cpuid"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "ae7887de9fa5d2db4eaa8174a7eff2c1ac00f2da"
+  version = "v1.1"
+
+[[projects]]
+  digest = "1:b95da1293525625ef6f07be79d537b9bf2ecd7901efcf9a92193edafbd55b9ef"
+  name = "github.com/klauspost/crc32"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "cb6bfca970f6908083f26f39a79009d608efd5cd"
+  version = "v1.1"
+
+[[projects]]
+  digest = "1:7b21c7fc5551b46d1308b4ffa9e9e49b66c7a8b0ba88c0130474b0e7a20d859f"
+  name = "github.com/kr/pretty"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "73f6ac0b30a98e433b289500d779f50c1a6f0712"
+  version = "v0.1.0"
+
+[[projects]]
+  digest = "1:c3a7836b5904db0f8b609595b619916a6831cb35b8b714aec39f96d00c6155d8"
+  name = "github.com/kr/text"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "e2ffdb16a802fe2bb95e2e35ff34f0e53aeef34f"
+  version = "v0.1.0"
+
+[[projects]]
+  branch = "master"
+  digest = "1:7a1e592f0349d56fac8ce47f28469e4e7f4ce637cb26f40c88da9dff25db1c98"
+  name = "github.com/lib/pq"
+  packages = [
+    ".",
+    "oid",
+  ]
+  pruneopts = "NUT"
+  revision = "d34b9ff171c21ad295489235aec8b6626023cd04"
+
+[[projects]]
+  digest = "1:08c231ec84231a7e23d67e4b58f975e1423695a32467a362ee55a803f9de8061"
+  name = "github.com/mattn/go-colorable"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "167de6bfdfba052fa6b2d3664c8f5272e23c9072"
+  version = "v0.0.9"
+
+[[projects]]
+  digest = "1:bc4f7eec3b7be8c6cb1f0af6c1e3333d5bb71072951aaaae2f05067b0803f287"
+  name = "github.com/mattn/go-isatty"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "0360b2af4f38e8d38c7fce2a9f4e702702d73a39"
+  version = "v0.0.3"
+
+[[projects]]
+  digest = "1:536979f1c56397dbf91c2785159b37dec37e35d3bffa3cd1cfe66d25f51f8088"
+  name = "github.com/mattn/go-sqlite3"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "323a32be5a2421b8c7087225079c6c900ec397cd"
+  version = "v1.7.0"
+
+[[projects]]
+  digest = "1:5985ef4caf91ece5d54817c11ea25f182697534f8ae6521eadcd628c142ac4b6"
+  name = "github.com/matttproud/golang_protobuf_extensions"
+  packages = ["pbutil"]
+  pruneopts = "NUT"
+  revision = "3247c84500bff8d9fb6d579d800f20b3e091582c"
+  version = "v1.0.0"
+
+[[projects]]
+  branch = "master"
+  digest = "1:18b773b92ac82a451c1276bd2776c1e55ce057ee202691ab33c8d6690efcc048"
+  name = "github.com/mitchellh/go-testing-interface"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "a61a99592b77c9ba629d254a693acffaeb4b7e28"
+
+[[projects]]
+  digest = "1:3b517122f3aad1ecce45a630ea912b3092b4729f25532a911d0cb2935a1f9352"
+  name = "github.com/oklog/run"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "4dadeb3030eda0273a12382bb2348ffc7c9d1a39"
+  version = "v1.0.0"
+
+[[projects]]
+  digest = "1:7da29c22bcc5c2ffb308324377dc00b5084650348c2799e573ed226d8cc9faf0"
+  name = "github.com/opentracing/opentracing-go"
+  packages = [
+    ".",
+    "ext",
+    "log",
+  ]
+  pruneopts = "NUT"
+  revision = "1949ddbfd147afd4d964a9f00b24eb291e0e7c38"
+  version = "v1.0.2"
+
+[[projects]]
+  digest = "1:748946761cf99c8b73cef5a3c0ee3e040859dd713a20cece0d0e0dc04e6ceca7"
+  name = "github.com/patrickmn/go-cache"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "a3647f8e31d79543b2d0f0ae2fe5c379d72cedc0"
+  version = "v2.1.0"
+
+[[projects]]
+  digest = "1:5cf3f025cbee5951a4ee961de067c8a89fc95a5adabead774f82822efabab121"
+  name = "github.com/pkg/errors"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "645ef00459ed84a119197bfb8d8205042c6df63d"
+  version = "v0.8.0"
+
+[[projects]]
+  digest = "1:4759bed95e3a52febc18c071db28790a5c6e9e106ee201a37add6f6a056f8f9c"
+  name = "github.com/prometheus/client_golang"
+  packages = [
+    "api",
+    "api/prometheus/v1",
+    "prometheus",
+    "prometheus/promhttp",
+  ]
+  pruneopts = "NUT"
+  revision = "967789050ba94deca04a5e84cce8ad472ce313c1"
+  version = "v0.9.0-pre1"
+
+[[projects]]
+  branch = "master"
+  digest = "1:32d10bdfa8f09ecf13598324dba86ab891f11db3c538b6a34d1c3b5b99d7c36b"
+  name = "github.com/prometheus/client_model"
+  packages = ["go"]
+  pruneopts = "NUT"
+  revision = "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c"
+
+[[projects]]
+  branch = "master"
+  digest = "1:768b555b86742de2f28beb37f1dedce9a75f91f871d75b5717c96399c1a78c08"
+  name = "github.com/prometheus/common"
+  packages = [
+    "expfmt",
+    "internal/bitbucket.org/ww/goautoneg",
+    "model",
+  ]
+  pruneopts = "NUT"
+  revision = "d811d2e9bf898806ecfb6ef6296774b13ffc314c"
+
+[[projects]]
+  branch = "master"
+  digest = "1:c4a213a8d73fbb0b13f717ba7996116602ef18ecb42b91d77405877914cb0349"
+  name = "github.com/prometheus/procfs"
+  packages = [
+    ".",
+    "internal/util",
+    "nfs",
+    "xfs",
+  ]
+  pruneopts = "NUT"
+  revision = "8b1c2da0d56deffdbb9e48d4414b4e674bd8083e"
+
+[[projects]]
+  branch = "master"
+  digest = "1:16e2136a67ec44aa2d1d6b0fd65394b3c4a8b2a1b6730c77967f7b7b06b179b2"
+  name = "github.com/rainycape/unidecode"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "cb7f23ec59bec0d61b19c56cd88cee3d0cc1870c"
+
+[[projects]]
+  digest = "1:d917313f309bda80d27274d53985bc65651f81a5b66b820749ac7f8ef061fd04"
+  name = "github.com/sergi/go-diff"
+  packages = ["diffmatchpatch"]
+  pruneopts = "NUT"
+  revision = "1744e2970ca51c86172c8190fadad617561ed6e7"
+  version = "v1.0.0"
+
+[[projects]]
+  digest = "1:a0509115762ee481fd95b60521b4dcc5ad226c54b741a4924f4f28c0cc6aabc8"
+  name = "github.com/smartystreets/assertions"
+  packages = [
+    ".",
+    "internal/go-diff/diffmatchpatch",
+    "internal/go-render/render",
+    "internal/oglematchers",
+  ]
+  pruneopts = "NUT"
+  revision = "f487f9de1cd36ebab28235b9373028812fb47cbd"
+
+[[projects]]
+  digest = "1:4dccd132a83155851c5e9faaa134ee3a931965c666b6b3c076e238fe9b3577a4"
+  name = "github.com/smartystreets/goconvey"
+  packages = [
+    "convey",
+    "convey/gotest",
+    "convey/reporting",
+  ]
+  pruneopts = "NUT"
+  revision = "68dc04aab96ae4326137d6b77330c224063a927e"
+
+[[projects]]
+  branch = "master"
+  digest = "1:a66add8dd963bfc72649017c1b321198f596cb4958cb1a11ff91a1be8691020b"
+  name = "github.com/teris-io/shortid"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "771a37caa5cf0c81f585d7b6df4dfc77e0615b5c"
+
+[[projects]]
+  digest = "1:3d48c38e0eca8c66df62379c5ae7a83fb5cd839b94f241354c07ba077da7bc45"
+  name = "github.com/uber/jaeger-client-go"
+  packages = [
+    ".",
+    "config",
+    "internal/baggage",
+    "internal/baggage/remote",
+    "internal/spanlog",
+    "internal/throttler",
+    "internal/throttler/remote",
+    "log",
+    "rpcmetrics",
+    "thrift",
+    "thrift-gen/agent",
+    "thrift-gen/baggage",
+    "thrift-gen/jaeger",
+    "thrift-gen/sampling",
+    "thrift-gen/zipkincore",
+    "utils",
+  ]
+  pruneopts = "NUT"
+  revision = "b043381d944715b469fd6b37addfd30145ca1758"
+  version = "v2.14.0"
+
+[[projects]]
+  digest = "1:0f09db8429e19d57c8346ad76fbbc679341fa86073d3b8fb5ac919f0357d8f4c"
+  name = "github.com/uber/jaeger-lib"
+  packages = ["metrics"]
+  pruneopts = "NUT"
+  revision = "ed3a127ec5fef7ae9ea95b01b542c47fbd999ce5"
+  version = "v1.5.0"
+
+[[projects]]
+  digest = "1:4c7d12ad3ef47bb03892a52e2609dc9a9cff93136ca9c7d31c00b79fcbc23c7b"
+  name = "github.com/yudai/gojsondiff"
+  packages = [
+    ".",
+    "formatter",
+  ]
+  pruneopts = "NUT"
+  revision = "7b1b7adf999dab73a6eb02669c3d82dbb27a3dd6"
+  version = "1.0.0"
+
+[[projects]]
+  branch = "master"
+  digest = "1:e50cbf8eba568d59b71e08c22c2a77809ed4646ae06ef4abb32b3d3d3fdb1a77"
+  name = "github.com/yudai/golcs"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "ecda9a501e8220fae3b4b600c3db4b0ba22cfc68"
+
+[[projects]]
+  branch = "master"
+  digest = "1:758f363e0dff33cf00b234be2efb12f919d79b42d5ae3909ff9eb69ef2c3cca5"
+  name = "golang.org/x/crypto"
+  packages = [
+    "ed25519",
+    "ed25519/internal/edwards25519",
+    "md4",
+    "pbkdf2",
+  ]
+  pruneopts = "NUT"
+  revision = "1a580b3eff7814fc9b40602fd35256c63b50f491"
+
+[[projects]]
+  branch = "master"
+  digest = "1:0b3fee9c4472022a0982ee0d81e08b3cc3e595f50befd7a4b358b48540d9d8c5"
+  name = "golang.org/x/net"
+  packages = [
+    "context",
+    "context/ctxhttp",
+    "http/httpguts",
+    "http2",
+    "http2/hpack",
+    "idna",
+    "internal/timeseries",
+    "trace",
+  ]
+  pruneopts = "NUT"
+  revision = "2491c5de3490fced2f6cff376127c667efeed857"
+
+[[projects]]
+  branch = "master"
+  digest = "1:46bd4e66bfce5e77f08fc2e8dcacc3676e679241ce83d9c150ff0397d686dd44"
+  name = "golang.org/x/oauth2"
+  packages = [
+    ".",
+    "google",
+    "internal",
+    "jws",
+    "jwt",
+  ]
+  pruneopts = "NUT"
+  revision = "cdc340f7c179dbbfa4afd43b7614e8fcadde4269"
+
+[[projects]]
+  branch = "master"
+  digest = "1:39ebcc2b11457b703ae9ee2e8cca0f68df21969c6102cb3b705f76cca0ea0239"
+  name = "golang.org/x/sync"
+  packages = ["errgroup"]
+  pruneopts = "NUT"
+  revision = "1d60e4601c6fd243af51cc01ddf169918a5407ca"
+
+[[projects]]
+  branch = "master"
+  digest = "1:ec21c5bf0572488865b93e30ffd9132afbf85bec0b20c2d6cbcf349cf2031ed5"
+  name = "golang.org/x/sys"
+  packages = ["unix"]
+  pruneopts = "NUT"
+  revision = "7c87d13f8e835d2fb3a70a2912c811ed0c1d241b"
+
+[[projects]]
+  digest = "1:e7071ed636b5422cc51c0e3a6cebc229d6c9fffc528814b519a980641422d619"
+  name = "golang.org/x/text"
+  packages = [
+    "collate",
+    "collate/build",
+    "internal/colltab",
+    "internal/gen",
+    "internal/tag",
+    "internal/triegen",
+    "internal/ucd",
+    "language",
+    "secure/bidirule",
+    "transform",
+    "unicode/bidi",
+    "unicode/cldr",
+    "unicode/norm",
+    "unicode/rangetable",
+  ]
+  pruneopts = "NUT"
+  revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0"
+  version = "v0.3.0"
+
+[[projects]]
+  digest = "1:dbd5568923513ee74aa626d027e2a8a352cf8f35df41d19f4e34491d1858c38b"
+  name = "google.golang.org/appengine"
+  packages = [
+    ".",
+    "cloudsql",
+    "internal",
+    "internal/app_identity",
+    "internal/base",
+    "internal/datastore",
+    "internal/log",
+    "internal/modules",
+    "internal/remote_api",
+    "internal/urlfetch",
+    "urlfetch",
+  ]
+  pruneopts = "NUT"
+  revision = "150dc57a1b433e64154302bdc40b6bb8aefa313a"
+  version = "v1.0.0"
+
+[[projects]]
+  branch = "master"
+  digest = "1:3c24554c312721e98fa6b76403e7100cf974eb46b1255ea7fc6471db9a9ce498"
+  name = "google.golang.org/genproto"
+  packages = ["googleapis/rpc/status"]
+  pruneopts = "NUT"
+  revision = "7bb2a897381c9c5ab2aeb8614f758d7766af68ff"
+
+[[projects]]
+  digest = "1:840b77b6eb539b830bb760b6e30b688ed2ff484bd83466fce2395835ed9367fe"
+  name = "google.golang.org/grpc"
+  packages = [
+    ".",
+    "balancer",
+    "balancer/base",
+    "balancer/roundrobin",
+    "codes",
+    "connectivity",
+    "credentials",
+    "encoding",
+    "encoding/proto",
+    "grpclb/grpc_lb_v1/messages",
+    "grpclog",
+    "health",
+    "health/grpc_health_v1",
+    "internal",
+    "keepalive",
+    "metadata",
+    "naming",
+    "peer",
+    "resolver",
+    "resolver/dns",
+    "resolver/passthrough",
+    "stats",
+    "status",
+    "tap",
+    "transport",
+  ]
+  pruneopts = "NUT"
+  revision = "1e2570b1b19ade82d8dbb31bba4e65e9f9ef5b34"
+  version = "v1.11.1"
+
+[[projects]]
+  branch = "v3"
+  digest = "1:1244a9b3856f70d5ffb74bbfd780fc9d47f93f2049fa265c6fb602878f507bf8"
+  name = "gopkg.in/alexcesaro/quotedprintable.v3"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "2caba252f4dc53eaf6b553000885530023f54623"
+
+[[projects]]
+  digest = "1:aea6e9483c167cc6fdf1274c442558c5dda8fd3373372be04d98c79100868da1"
+  name = "gopkg.in/asn1-ber.v1"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "379148ca0225df7a432012b8df0355c2a2063ac0"
+  version = "v1.2"
+
+[[projects]]
+  digest = "1:24bfc2e8bf971485cb5ba0f0e5b08a1b806cca5828134df76b32d1ea50f2ab49"
+  name = "gopkg.in/bufio.v1"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "567b2bfa514e796916c4747494d6ff5132a1dfce"
+  version = "v1"
+
+[[projects]]
+  digest = "1:e05711632e1515319b014e8fe4cbe1d30ab024c473403f60cf0fdeb4c586a474"
+  name = "gopkg.in/ini.v1"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "6529cf7c58879c08d927016dde4477f18a0634cb"
+  version = "v1.36.0"
+
+[[projects]]
+  digest = "1:c847b7fea4c7e6db5281a37dffc4620cb78c1227403a79e5aa290db517657ac1"
+  name = "gopkg.in/ldap.v3"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "5c2c0f997205c29de14cb6c35996370c2c5dfab1"
+  version = "v3"
+
+[[projects]]
+  digest = "1:3b0cf3a465fd07f76e5fc1a9d0783c662dac0de9fc73d713ebe162768fd87b5f"
+  name = "gopkg.in/macaron.v1"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "c1be95e6d21e769e44e1ec33cec9da5837861c10"
+  version = "v1.3.1"
+
+[[projects]]
+  branch = "v2"
+  digest = "1:d52332f9e9f2c6343652e13aa3fd40cfd03353520c9a48d90f21215d3012d50f"
+  name = "gopkg.in/mail.v2"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "5bc5c8bb07bd8d2803831fbaf8cbd630fcde2c68"
+
+[[projects]]
+  digest = "1:00126f697efdcab42f07c89ac8bf0095fb2328aef6464e070055154088cea859"
+  name = "gopkg.in/redis.v2"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "e6179049628164864e6e84e973cfb56335748dea"
+  version = "v2.3.2"
+
+[[projects]]
+  digest = "1:a50fabe7a46692dc7c656310add3d517abe7914df02afd151ef84da884605dc8"
+  name = "gopkg.in/square/go-jose.v2"
+  packages = [
+    ".",
+    "cipher",
+    "json",
+  ]
+  pruneopts = "NUT"
+  revision = "ef984e69dd356202fd4e4910d4d9c24468bdf0b8"
+  version = "v2.1.9"
+
+[[projects]]
+  branch = "v2"
+  digest = "1:7c95b35057a0ff2e19f707173cc1a947fa43a6eb5c4d300d196ece0334046082"
+  name = "gopkg.in/yaml.v2"
+  packages = ["."]
+  pruneopts = "NUT"
+  revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183"
+
+[solve-meta]
+  analyzer-name = "dep"
+  analyzer-version = 1
+  input-imports = [
+    "github.com/BurntSushi/toml",
+    "github.com/Unknwon/com",
+    "github.com/VividCortex/mysqlerr",
+    "github.com/aws/aws-sdk-go/aws",
+    "github.com/aws/aws-sdk-go/aws/awserr",
+    "github.com/aws/aws-sdk-go/aws/awsutil",
+    "github.com/aws/aws-sdk-go/aws/credentials",
+    "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds",
+    "github.com/aws/aws-sdk-go/aws/credentials/endpointcreds",
+    "github.com/aws/aws-sdk-go/aws/defaults",
+    "github.com/aws/aws-sdk-go/aws/ec2metadata",
+    "github.com/aws/aws-sdk-go/aws/endpoints",
+    "github.com/aws/aws-sdk-go/aws/request",
+    "github.com/aws/aws-sdk-go/aws/session",
+    "github.com/aws/aws-sdk-go/service/cloudwatch",
+    "github.com/aws/aws-sdk-go/service/ec2",
+    "github.com/aws/aws-sdk-go/service/ec2/ec2iface",
+    "github.com/aws/aws-sdk-go/service/resourcegroupstaggingapi",
+    "github.com/aws/aws-sdk-go/service/resourcegroupstaggingapi/resourcegroupstaggingapiiface",
+    "github.com/aws/aws-sdk-go/service/s3",
+    "github.com/aws/aws-sdk-go/service/sts",
+    "github.com/benbjohnson/clock",
+    "github.com/bmizerany/assert",
+    "github.com/bradfitz/gomemcache/memcache",
+    "github.com/codegangsta/cli",
+    "github.com/davecgh/go-spew/spew",
+    "github.com/denisenkom/go-mssqldb",
+    "github.com/facebookgo/inject",
+    "github.com/fatih/color",
+    "github.com/go-macaron/binding",
+    "github.com/go-macaron/gzip",
+    "github.com/go-macaron/session",
+    "github.com/go-sql-driver/mysql",
+    "github.com/go-stack/stack",
+    "github.com/go-xorm/core",
+    "github.com/go-xorm/xorm",
+    "github.com/gorilla/websocket",
+    "github.com/gosimple/slug",
+    "github.com/grafana/grafana-plugin-model/go/datasource",
+    "github.com/grafana/grafana-plugin-model/go/renderer",
+    "github.com/hashicorp/go-hclog",
+    "github.com/hashicorp/go-plugin",
+    "github.com/hashicorp/go-version",
+    "github.com/inconshreveable/log15",
+    "github.com/jtolds/gls",
+    "github.com/lib/pq",
+    "github.com/mattn/go-isatty",
+    "github.com/mattn/go-sqlite3",
+    "github.com/opentracing/opentracing-go",
+    "github.com/opentracing/opentracing-go/ext",
+    "github.com/opentracing/opentracing-go/log",
+    "github.com/patrickmn/go-cache",
+    "github.com/prometheus/client_golang/api",
+    "github.com/prometheus/client_golang/api/prometheus/v1",
+    "github.com/prometheus/client_golang/prometheus",
+    "github.com/prometheus/client_golang/prometheus/promhttp",
+    "github.com/prometheus/client_model/go",
+    "github.com/prometheus/common/expfmt",
+    "github.com/prometheus/common/model",
+    "github.com/smartystreets/assertions",
+    "github.com/smartystreets/goconvey/convey",
+    "github.com/teris-io/shortid",
+    "github.com/uber/jaeger-client-go/config",
+    "github.com/yudai/gojsondiff",
+    "github.com/yudai/gojsondiff/formatter",
+    "golang.org/x/net/context/ctxhttp",
+    "golang.org/x/oauth2",
+    "golang.org/x/oauth2/google",
+    "golang.org/x/oauth2/jwt",
+    "golang.org/x/sync/errgroup",
+    "gopkg.in/ini.v1",
+    "gopkg.in/ldap.v3",
+    "gopkg.in/macaron.v1",
+    "gopkg.in/mail.v2",
+    "gopkg.in/redis.v2",
+    "gopkg.in/square/go-jose.v2",
+    "gopkg.in/yaml.v2",
+  ]
+  solver-name = "gps-cdcl"
+  solver-version = 1

+ 0 - 31
conf/defaults.ini

@@ -117,37 +117,6 @@ type = database
 # memcache: 127.0.0.1:11211
 # memcache: 127.0.0.1:11211
 connstr =
 connstr =
 
 
-#################################### Session #############################
-[session]
-# Either "memory", "file", "redis", "mysql", "postgres", "memcache", default is "file"
-provider = file
-
-# Provider config options
-# memory: not have any config yet
-# file: session dir path, is relative to grafana data_path
-# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
-# postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
-# mysql: go-sql-driver/mysql dsn config string, examples:
-#         `user:password@tcp(127.0.0.1:3306)/database_name`
-#         `user:password@unix(/var/run/mysqld/mysqld.sock)/database_name`
-# memcache: 127.0.0.1:11211
-
-
-provider_config = sessions
-
-# Session cookie name
-cookie_name = grafana_sess
-
-# If you use session in https only, default is false
-cookie_secure = false
-
-# Session life time, default is 86400 (means 86400 seconds or 24 hours)
-session_life_time = 86400
-gc_interval_time = 86400
-
-# Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours)
-conn_max_lifetime = 14400
-
 #################################### Data proxy ###########################
 #################################### Data proxy ###########################
 [dataproxy]
 [dataproxy]
 
 

+ 0 - 22
conf/sample.ini

@@ -113,28 +113,6 @@ log_queries =
 # memcache: 127.0.0.1:11211
 # memcache: 127.0.0.1:11211
 ;connstr =
 ;connstr =
 
 
-#################################### Session ####################################
-[session]
-# Either "memory", "file", "redis", "mysql", "postgres", default is "file"
-;provider = file
-
-# Provider config options
-# memory: not have any config yet
-# file: session dir path, is relative to grafana data_path
-# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=grafana`
-# mysql: go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
-# postgres: user=a password=b host=localhost port=5432 dbname=c sslmode=disable
-;provider_config = sessions
-
-# Session cookie name
-;cookie_name = grafana_sess
-
-# If you use session in https only, default is false
-;cookie_secure = false
-
-# Session life time, default is 86400 (means 86400 seconds or 24 hours)
-;session_life_time = 86400
-
 #################################### Data proxy ###########################
 #################################### Data proxy ###########################
 [dataproxy]
 [dataproxy]
 
 

+ 37 - 33
docs/sources/installation/configuration.md

@@ -383,39 +383,6 @@ below.
 - [LDAP Authentication]({{< relref "auth/ldap.md" >}}) (auth.ldap)
 - [LDAP Authentication]({{< relref "auth/ldap.md" >}}) (auth.ldap)
 - [Auth Proxy]({{< relref "auth/auth-proxy.md" >}}) (auth.proxy)
 - [Auth Proxy]({{< relref "auth/auth-proxy.md" >}}) (auth.proxy)
 
 
-## [session]
-
-### provider
-
-Valid values are `memory`, `file`, `mysql`, `postgres`, `memcache` or `redis`. Default is `file`.
-
-### provider_config
-
-This option should be configured differently depending on what type of
-session provider you have configured.
-
-- **file:** session file path, e.g. `data/sessions`
-- **mysql:** go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
-- **postgres:** ex:  `user=a password=b host=localhost port=5432 dbname=c sslmode=verify-full`
-- **memcache:** ex:  `127.0.0.1:11211`
-- **redis:** ex: `addr=127.0.0.1:6379,pool_size=100,prefix=grafana`. For unix socket, use for example: `network=unix,addr=/var/run/redis/redis.sock,pool_size=100,db=grafana`
-
-Postgres valid `sslmode` are `disable`, `require`, `verify-ca`, and `verify-full` (default).
-
-### cookie_name
-
-The name of the Grafana session cookie.
-
-### cookie_secure
-
-Set to true if you host Grafana behind HTTPS only. Defaults to `false`.
-
-### session_life_time
-
-How long sessions lasts in seconds. Defaults to `86400` (24 hours).
-
-<hr />
-
 ## [dataproxy]
 ## [dataproxy]
 
 
 ### logging
 ### logging
@@ -677,3 +644,40 @@ is false. This settings was introduced in Grafana v6.0.
 
 
 Set to true if you want to test alpha plugins that are not yet ready for general usage.
 Set to true if you want to test alpha plugins that are not yet ready for general usage.
 
 
+<hr />
+
+# Removed options
+Please note that these options have been removed.
+
+## [session]
+**Removed starting from Grafana v6.2. Please use [remote_cache](#remote-cache) option instead.**
+
+### provider
+
+Valid values are `memory`, `file`, `mysql`, `postgres`, `memcache` or `redis`. Default is `file`.
+
+### provider_config
+
+This option should be configured differently depending on what type of
+session provider you have configured.
+
+- **file:** session file path, e.g. `data/sessions`
+- **mysql:** go-sql-driver/mysql dsn config string, e.g. `user:password@tcp(127.0.0.1:3306)/database_name`
+- **postgres:** ex:  `user=a password=b host=localhost port=5432 dbname=c sslmode=verify-full`
+- **memcache:** ex:  `127.0.0.1:11211`
+- **redis:** ex: `addr=127.0.0.1:6379,pool_size=100,prefix=grafana`. For unix socket, use for example: `network=unix,addr=/var/run/redis/redis.sock,pool_size=100,db=grafana`
+
+Postgres valid `sslmode` are `disable`, `require`, `verify-ca`, and `verify-full` (default).
+
+### cookie_name
+
+The name of the Grafana session cookie.
+
+### cookie_secure
+
+Set to true if you host Grafana behind HTTPS only. Defaults to `false`.
+
+### session_life_time
+
+How long sessions lasts in seconds. Defaults to `86400` (24 hours).
+

+ 0 - 5
pkg/middleware/middleware_test.go

@@ -9,12 +9,10 @@ import (
 	"testing"
 	"testing"
 	"time"
 	"time"
 
 
-	msession "github.com/go-macaron/session"
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/infra/remotecache"
 	"github.com/grafana/grafana/pkg/infra/remotecache"
 	m "github.com/grafana/grafana/pkg/models"
 	m "github.com/grafana/grafana/pkg/models"
 	"github.com/grafana/grafana/pkg/services/auth"
 	"github.com/grafana/grafana/pkg/services/auth"
-	"github.com/grafana/grafana/pkg/services/session"
 	"github.com/grafana/grafana/pkg/setting"
 	"github.com/grafana/grafana/pkg/setting"
 	"github.com/grafana/grafana/pkg/util"
 	"github.com/grafana/grafana/pkg/util"
 	. "github.com/smartystreets/goconvey/convey"
 	. "github.com/smartystreets/goconvey/convey"
@@ -423,9 +421,6 @@ func middlewareScenario(t *testing.T, desc string, fn scenarioFunc) {
 		sc.remoteCacheService = remotecache.NewFakeStore(t)
 		sc.remoteCacheService = remotecache.NewFakeStore(t)
 
 
 		sc.m.Use(GetContextHandler(sc.userAuthTokenService, sc.remoteCacheService))
 		sc.m.Use(GetContextHandler(sc.userAuthTokenService, sc.remoteCacheService))
-		// mock out gc goroutine
-		session.StartSessionGC = func() {}
-		setting.SessionOptions = msession.Options{}
 
 
 		sc.m.Use(OrgRedirect())
 		sc.m.Use(OrgRedirect())
 		sc.m.Use(AddDefaultResponseHeaders())
 		sc.m.Use(AddDefaultResponseHeaders())

+ 0 - 4
pkg/models/context.go

@@ -4,7 +4,6 @@ import (
 	"strings"
 	"strings"
 
 
 	"github.com/grafana/grafana/pkg/log"
 	"github.com/grafana/grafana/pkg/log"
-	"github.com/grafana/grafana/pkg/services/session"
 	"github.com/grafana/grafana/pkg/setting"
 	"github.com/grafana/grafana/pkg/setting"
 	"github.com/prometheus/client_golang/prometheus"
 	"github.com/prometheus/client_golang/prometheus"
 	"gopkg.in/macaron.v1"
 	"gopkg.in/macaron.v1"
@@ -15,9 +14,6 @@ type ReqContext struct {
 	*SignedInUser
 	*SignedInUser
 	UserToken *UserToken
 	UserToken *UserToken
 
 
-	// This should only be used by the auth_proxy
-	Session session.SessionStore
-
 	IsSignedIn     bool
 	IsSignedIn     bool
 	IsRenderCall   bool
 	IsRenderCall   bool
 	AllowAnonymous bool
 	AllowAnonymous bool

+ 0 - 233
pkg/services/session/mysql.go

@@ -1,233 +0,0 @@
-// Copyright 2013 Beego Authors
-// Copyright 2014 The Macaron Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License"): you may
-// not use this file except in compliance with the License. You may obtain
-// a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-// License for the specific language governing permissions and limitations
-// under the License.
-
-package session
-
-import (
-	"database/sql"
-	"fmt"
-	"log"
-	"sync"
-	"time"
-
-	_ "github.com/go-sql-driver/mysql"
-
-	"github.com/go-macaron/session"
-)
-
-// MysqlStore represents a mysql session store implementation.
-type MysqlStore struct {
-	c      *sql.DB
-	sid    string
-	lock   sync.RWMutex
-	data   map[interface{}]interface{}
-	expiry int64
-	dirty  bool
-}
-
-// NewMysqlStore creates and returns a mysql session store.
-func NewMysqlStore(c *sql.DB, sid string, kv map[interface{}]interface{}, expiry int64) *MysqlStore {
-	return &MysqlStore{
-		c:      c,
-		sid:    sid,
-		data:   kv,
-		expiry: expiry,
-		dirty:  false,
-	}
-}
-
-// Set sets value to given key in session.
-func (s *MysqlStore) Set(key, val interface{}) error {
-	s.lock.Lock()
-	defer s.lock.Unlock()
-
-	s.data[key] = val
-	s.dirty = true
-	return nil
-}
-
-// Get gets value by given key in session.
-func (s *MysqlStore) Get(key interface{}) interface{} {
-	s.lock.RLock()
-	defer s.lock.RUnlock()
-
-	return s.data[key]
-}
-
-// Delete delete a key from session.
-func (s *MysqlStore) Delete(key interface{}) error {
-	s.lock.Lock()
-	defer s.lock.Unlock()
-
-	delete(s.data, key)
-	s.dirty = true
-	return nil
-}
-
-// ID returns current session ID.
-func (s *MysqlStore) ID() string {
-	return s.sid
-}
-
-// Release releases resource and save data to provider.
-func (s *MysqlStore) Release() error {
-	newExpiry := time.Now().Unix()
-	if !s.dirty && (s.expiry+60) >= newExpiry {
-		return nil
-	}
-
-	data, err := session.EncodeGob(s.data)
-	if err != nil {
-		return err
-	}
-
-	_, err = s.c.Exec("UPDATE session SET data=?, expiry=? WHERE `key`=?",
-		data, newExpiry, s.sid)
-	s.dirty = false
-	s.expiry = newExpiry
-	return err
-}
-
-// Flush deletes all session data.
-func (s *MysqlStore) Flush() error {
-	s.lock.Lock()
-	defer s.lock.Unlock()
-
-	s.data = make(map[interface{}]interface{})
-	s.dirty = true
-	return nil
-}
-
-// MysqlProvider represents a mysql session provider implementation.
-type MysqlProvider struct {
-	c      *sql.DB
-	expire int64
-}
-
-// Init initializes mysql session provider.
-// connStr: username:password@protocol(address)/dbname?param=value
-func (p *MysqlProvider) Init(expire int64, connStr string) (err error) {
-	p.expire = expire
-
-	p.c, err = sql.Open("mysql", connStr)
-	p.c.SetConnMaxLifetime(time.Second * time.Duration(sessionConnMaxLifetime))
-	if err != nil {
-		return err
-	}
-	return p.c.Ping()
-}
-
-// Read returns raw session store by session ID.
-func (p *MysqlProvider) Read(sid string) (session.RawStore, error) {
-	expiry := time.Now().Unix()
-	var data []byte
-	err := p.c.QueryRow("SELECT data,expiry FROM session WHERE `key`=?", sid).Scan(&data, &expiry)
-	if err == sql.ErrNoRows {
-		_, err = p.c.Exec("INSERT INTO session(`key`,data,expiry) VALUES(?,?,?)",
-			sid, "", expiry)
-	}
-	if err != nil {
-		return nil, err
-	}
-
-	var kv map[interface{}]interface{}
-	if len(data) == 0 {
-		kv = make(map[interface{}]interface{})
-	} else {
-		kv, err = session.DecodeGob(data)
-		if err != nil {
-			return nil, err
-		}
-	}
-
-	return NewMysqlStore(p.c, sid, kv, expiry), nil
-}
-
-// Exist returns true if session with given ID exists.
-func (p *MysqlProvider) Exist(sid string) bool {
-	exists, err := p.queryExists(sid)
-
-	if err != nil {
-		exists, err = p.queryExists(sid)
-	}
-
-	if err != nil {
-		log.Printf("session/mysql: error checking if session exists: %v", err)
-		return false
-	}
-
-	return exists
-}
-
-func (p *MysqlProvider) queryExists(sid string) (bool, error) {
-	var data []byte
-	err := p.c.QueryRow("SELECT data FROM session WHERE `key`=?", sid).Scan(&data)
-
-	if err != nil && err != sql.ErrNoRows {
-		return false, err
-	}
-
-	return err != sql.ErrNoRows, nil
-}
-
-// Destory deletes a session by session ID.
-func (p *MysqlProvider) Destory(sid string) error {
-	_, err := p.c.Exec("DELETE FROM session WHERE `key`=?", sid)
-	return err
-}
-
-// Regenerate regenerates a session store from old session ID to new one.
-func (p *MysqlProvider) Regenerate(oldsid, sid string) (_ session.RawStore, err error) {
-	if p.Exist(sid) {
-		return nil, fmt.Errorf("new sid '%s' already exists", sid)
-	}
-
-	if !p.Exist(oldsid) {
-		if _, err = p.c.Exec("INSERT INTO session(`key`,data,expiry) VALUES(?,?,?)",
-			oldsid, "", time.Now().Unix()); err != nil {
-			return nil, err
-		}
-	}
-
-	if _, err = p.c.Exec("UPDATE session SET `key`=? WHERE `key`=?", sid, oldsid); err != nil {
-		return nil, err
-	}
-
-	return p.Read(sid)
-}
-
-// Count counts and returns number of sessions.
-func (p *MysqlProvider) Count() (total int) {
-	if err := p.c.QueryRow("SELECT COUNT(*) AS NUM FROM session").Scan(&total); err != nil {
-		panic("session/mysql: error counting records: " + err.Error())
-	}
-	return total
-}
-
-// GC calls GC to clean expired sessions.
-func (p *MysqlProvider) GC() {
-	var err error
-	if _, err = p.c.Exec("DELETE FROM session WHERE  expiry + ? <= UNIX_TIMESTAMP(NOW())", p.expire); err != nil {
-		_, err = p.c.Exec("DELETE FROM session WHERE  expiry + ? <= UNIX_TIMESTAMP(NOW())", p.expire)
-	}
-
-	if err != nil {
-		log.Printf("session/mysql: error garbage collecting: %v", err)
-	}
-}
-
-func init() {
-	session.Register("mysql", &MysqlProvider{})
-}

+ 0 - 173
pkg/services/session/session.go

@@ -1,173 +0,0 @@
-package session
-
-import (
-	"math/rand"
-	"time"
-
-	ms "github.com/go-macaron/session"
-	_ "github.com/go-macaron/session/memcache"
-	_ "github.com/go-macaron/session/postgres"
-	_ "github.com/go-macaron/session/redis"
-	"github.com/grafana/grafana/pkg/log"
-	"gopkg.in/macaron.v1"
-)
-
-const (
-	SESS_KEY_USERID       = "uid"
-	SESS_KEY_LASTLDAPSYNC = "last_ldap_sync"
-)
-
-var sessionManager *ms.Manager
-var sessionOptions *ms.Options
-var StartSessionGC func() = func() {}
-var GetSessionCount func() int
-var sessionLogger = log.New("session")
-var sessionConnMaxLifetime int64
-
-func init() {
-	StartSessionGC = func() {
-		sessionManager.GC()
-		sessionLogger.Debug("Session GC")
-		time.AfterFunc(time.Duration(sessionOptions.Gclifetime)*time.Second, StartSessionGC)
-	}
-	GetSessionCount = func() int {
-		return sessionManager.Count()
-	}
-}
-
-func Init(options *ms.Options, connMaxLifetime int64) {
-	var err error
-	sessionOptions = prepareOptions(options)
-	sessionConnMaxLifetime = connMaxLifetime
-	sessionManager, err = ms.NewManager(options.Provider, *options)
-	if err != nil {
-		panic(err)
-	}
-
-	// start GC threads after some random seconds
-	rndSeconds := 10 + rand.Int63n(180)
-	time.AfterFunc(time.Duration(rndSeconds)*time.Second, StartSessionGC)
-}
-
-func prepareOptions(opt *ms.Options) *ms.Options {
-	if len(opt.Provider) == 0 {
-		opt.Provider = "memory"
-	}
-	if len(opt.ProviderConfig) == 0 {
-		opt.ProviderConfig = "data/sessions"
-	}
-	if len(opt.CookieName) == 0 {
-		opt.CookieName = "grafana_sess"
-	}
-	if len(opt.CookiePath) == 0 {
-		opt.CookiePath = "/"
-	}
-	if opt.Gclifetime == 0 {
-		opt.Gclifetime = 3600
-	}
-	if opt.Maxlifetime == 0 {
-		opt.Maxlifetime = opt.Gclifetime
-	}
-	if opt.IDLength == 0 {
-		opt.IDLength = 16
-	}
-
-	return opt
-}
-
-func GetSession() SessionStore {
-	return &SessionWrapper{manager: sessionManager}
-}
-
-type SessionStore interface {
-	// Set sets value to given key in session.
-	Set(interface{}, interface{}) error
-	// Get gets value by given key in session.
-	Get(interface{}) interface{}
-	// Delete deletes a key from session.
-	Delete(interface{}) interface{}
-	// ID returns current session ID.
-	ID() string
-	// Release releases session resource and save data to provider.
-	Release() error
-	// Destory deletes a session.
-	Destory(*macaron.Context) error
-	// init
-	Start(*macaron.Context) error
-	// RegenerateId regenerates the session id
-	RegenerateId(*macaron.Context) error
-}
-
-type SessionWrapper struct {
-	session ms.RawStore
-	manager *ms.Manager
-}
-
-func (s *SessionWrapper) Start(c *macaron.Context) error {
-	// See https://github.com/grafana/grafana/issues/11155 for details on why
-	// a recover and retry is needed
-	defer func() error {
-		if err := recover(); err != nil {
-			var retryErr error
-			s.session, retryErr = s.manager.Start(c)
-			return retryErr
-		}
-
-		return nil
-	}()
-
-	var err error
-	s.session, err = s.manager.Start(c)
-	return err
-}
-
-func (s *SessionWrapper) RegenerateId(c *macaron.Context) error {
-	var err error
-	s.session, err = s.manager.RegenerateId(c)
-	return err
-}
-
-func (s *SessionWrapper) Set(k interface{}, v interface{}) error {
-	if s.session != nil {
-		return s.session.Set(k, v)
-	}
-	return nil
-}
-
-func (s *SessionWrapper) Get(k interface{}) interface{} {
-	if s.session != nil {
-		return s.session.Get(k)
-	}
-	return nil
-}
-
-func (s *SessionWrapper) Delete(k interface{}) interface{} {
-	if s.session != nil {
-		return s.session.Delete(k)
-	}
-	return nil
-}
-
-func (s *SessionWrapper) ID() string {
-	if s.session != nil {
-		return s.session.ID()
-	}
-	return ""
-}
-
-func (s *SessionWrapper) Release() error {
-	if s.session != nil {
-		return s.session.Release()
-	}
-	return nil
-}
-
-func (s *SessionWrapper) Destory(c *macaron.Context) error {
-	if s.session != nil {
-		if err := s.manager.Destory(c); err != nil {
-			return err
-		}
-		s.session = nil
-	}
-	return nil
-}

+ 28 - 43
pkg/setting/setting.go

@@ -17,9 +17,10 @@ import (
 	"time"
 	"time"
 
 
 	"github.com/go-macaron/session"
 	"github.com/go-macaron/session"
+	ini "gopkg.in/ini.v1"
+
 	"github.com/grafana/grafana/pkg/log"
 	"github.com/grafana/grafana/pkg/log"
 	"github.com/grafana/grafana/pkg/util"
 	"github.com/grafana/grafana/pkg/util"
-	ini "gopkg.in/ini.v1"
 )
 )
 
 
 type Scheme string
 type Scheme string
@@ -183,9 +184,6 @@ var (
 	// Explore UI
 	// Explore UI
 	ExploreEnabled bool
 	ExploreEnabled bool
 
 
-	// logger
-	logger log.Logger
-
 	// Grafana.NET URL
 	// Grafana.NET URL
 	GrafanaComUrl string
 	GrafanaComUrl string
 
 
@@ -199,7 +197,8 @@ var (
 
 
 // TODO move all global vars to this struct
 // TODO move all global vars to this struct
 type Cfg struct {
 type Cfg struct {
-	Raw *ini.File
+	Raw    *ini.File
+	Logger log.Logger
 
 
 	// HTTP Server Settings
 	// HTTP Server Settings
 	AppUrl    string
 	AppUrl    string
@@ -258,7 +257,6 @@ type CommandLineArgs struct {
 
 
 func init() {
 func init() {
 	IsWindows = runtime.GOOS == "windows"
 	IsWindows = runtime.GOOS == "windows"
-	logger = log.New("settings")
 }
 }
 
 
 func parseAppUrlAndSubUrl(section *ini.Section) (string, string) {
 func parseAppUrlAndSubUrl(section *ini.Section) (string, string) {
@@ -535,24 +533,25 @@ func setHomePath(args *CommandLineArgs) {
 
 
 var skipStaticRootValidation = false
 var skipStaticRootValidation = false
 
 
-func validateStaticRootPath() error {
+func NewCfg() *Cfg {
+	return &Cfg{
+		Logger: log.New("settings"),
+		Raw:    ini.Empty(),
+	}
+}
+
+func (cfg *Cfg) validateStaticRootPath() error {
 	if skipStaticRootValidation {
 	if skipStaticRootValidation {
 		return nil
 		return nil
 	}
 	}
 
 
 	if _, err := os.Stat(path.Join(StaticRootPath, "build")); err != nil {
 	if _, err := os.Stat(path.Join(StaticRootPath, "build")); err != nil {
-		logger.Error("Failed to detect generated javascript files in public/build")
+		cfg.Logger.Error("Failed to detect generated javascript files in public/build")
 	}
 	}
 
 
 	return nil
 	return nil
 }
 }
 
 
-func NewCfg() *Cfg {
-	return &Cfg{
-		Raw: ini.Empty(),
-	}
-}
-
 func (cfg *Cfg) Load(args *CommandLineArgs) error {
 func (cfg *Cfg) Load(args *CommandLineArgs) error {
 	setHomePath(args)
 	setHomePath(args)
 
 
@@ -600,7 +599,7 @@ func (cfg *Cfg) Load(args *CommandLineArgs) error {
 	EnforceDomain = server.Key("enforce_domain").MustBool(false)
 	EnforceDomain = server.Key("enforce_domain").MustBool(false)
 	StaticRootPath = makeAbsolute(server.Key("static_root_path").String(), HomePath)
 	StaticRootPath = makeAbsolute(server.Key("static_root_path").String(), HomePath)
 
 
-	if err := validateStaticRootPath(); err != nil {
+	if err := cfg.validateStaticRootPath(); err != nil {
 		return err
 		return err
 	}
 	}
 
 
@@ -813,27 +812,13 @@ type RemoteCacheOptions struct {
 }
 }
 
 
 func (cfg *Cfg) readSessionConfig() {
 func (cfg *Cfg) readSessionConfig() {
-	sec := cfg.Raw.Section("session")
-	SessionOptions = session.Options{}
-	SessionOptions.Provider = sec.Key("provider").In("memory", []string{"memory", "file", "redis", "mysql", "postgres", "memcache"})
-	SessionOptions.ProviderConfig = strings.Trim(sec.Key("provider_config").String(), "\" ")
-	SessionOptions.CookieName = sec.Key("cookie_name").MustString("grafana_sess")
-	SessionOptions.CookiePath = AppSubUrl
-	SessionOptions.Secure = sec.Key("cookie_secure").MustBool()
-	SessionOptions.Gclifetime = cfg.Raw.Section("session").Key("gc_interval_time").MustInt64(86400)
-	SessionOptions.Maxlifetime = cfg.Raw.Section("session").Key("session_life_time").MustInt64(86400)
-	SessionOptions.IDLength = 16
-
-	if SessionOptions.Provider == "file" {
-		SessionOptions.ProviderConfig = makeAbsolute(SessionOptions.ProviderConfig, cfg.DataPath)
-		os.MkdirAll(path.Dir(SessionOptions.ProviderConfig), os.ModePerm)
-	}
+	sec, _ := cfg.Raw.GetSection("session")
 
 
-	if SessionOptions.CookiePath == "" {
-		SessionOptions.CookiePath = "/"
+	if sec != nil {
+		cfg.Logger.Warn(
+			"[Removed] Session setting was removed in v6.2, use remote_cache option instead",
+		)
 	}
 	}
-
-	SessionConnMaxLifetime = cfg.Raw.Section("session").Key("conn_max_lifetime").MustInt64(14400)
 }
 }
 
 
 func (cfg *Cfg) initLogging(file *ini.File) {
 func (cfg *Cfg) initLogging(file *ini.File) {
@@ -851,26 +836,26 @@ func (cfg *Cfg) LogConfigSources() {
 	var text bytes.Buffer
 	var text bytes.Buffer
 
 
 	for _, file := range configFiles {
 	for _, file := range configFiles {
-		logger.Info("Config loaded from", "file", file)
+		cfg.Logger.Info("Config loaded from", "file", file)
 	}
 	}
 
 
 	if len(appliedCommandLineProperties) > 0 {
 	if len(appliedCommandLineProperties) > 0 {
 		for _, prop := range appliedCommandLineProperties {
 		for _, prop := range appliedCommandLineProperties {
-			logger.Info("Config overridden from command line", "arg", prop)
+			cfg.Logger.Info("Config overridden from command line", "arg", prop)
 		}
 		}
 	}
 	}
 
 
 	if len(appliedEnvOverrides) > 0 {
 	if len(appliedEnvOverrides) > 0 {
 		text.WriteString("\tEnvironment variables used:\n")
 		text.WriteString("\tEnvironment variables used:\n")
 		for _, prop := range appliedEnvOverrides {
 		for _, prop := range appliedEnvOverrides {
-			logger.Info("Config overridden from Environment variable", "var", prop)
+			cfg.Logger.Info("Config overridden from Environment variable", "var", prop)
 		}
 		}
 	}
 	}
 
 
-	logger.Info("Path Home", "path", HomePath)
-	logger.Info("Path Data", "path", cfg.DataPath)
-	logger.Info("Path Logs", "path", cfg.LogsPath)
-	logger.Info("Path Plugins", "path", PluginsPath)
-	logger.Info("Path Provisioning", "path", cfg.ProvisioningPath)
-	logger.Info("App mode " + Env)
+	cfg.Logger.Info("Path Home", "path", HomePath)
+	cfg.Logger.Info("Path Data", "path", cfg.DataPath)
+	cfg.Logger.Info("Path Logs", "path", cfg.LogsPath)
+	cfg.Logger.Info("Path Plugins", "path", PluginsPath)
+	cfg.Logger.Info("Path Provisioning", "path", cfg.ProvisioningPath)
+	cfg.Logger.Info("App mode " + Env)
 }
 }

+ 43 - 0
pkg/setting/setting_session_test.go

@@ -0,0 +1,43 @@
+package setting
+
+import (
+	"path/filepath"
+	"testing"
+
+	"github.com/grafana/grafana/pkg/log"
+	. "github.com/smartystreets/goconvey/convey"
+)
+
+type testLogger struct {
+	log.Logger
+	warnCalled  bool
+	warnMessage string
+}
+
+func (stub *testLogger) Warn(testMessage string, ctx ...interface{}) {
+	stub.warnCalled = true
+	stub.warnMessage = testMessage
+}
+func TestSessionSettings(t *testing.T) {
+	Convey("session config", t, func() {
+		skipStaticRootValidation = true
+
+		Convey("Reading session should log error ", func() {
+			var (
+				cfg      = NewCfg()
+				homePath = "../../"
+			)
+
+			stub := &testLogger{}
+			cfg.Logger = stub
+
+			cfg.Load(&CommandLineArgs{
+				HomePath: homePath,
+				Config:   filepath.Join(homePath, "pkg/setting/testdata/session.ini"),
+			})
+
+			So(stub.warnCalled, ShouldEqual, true)
+			So(len(stub.warnMessage), ShouldBeGreaterThan, 0)
+		})
+	})
+}

+ 0 - 1
pkg/setting/setting_test.go

@@ -188,6 +188,5 @@ func TestLoadingSettings(t *testing.T) {
 
 
 			So(cfg.RendererCallbackUrl, ShouldEqual, "http://myserver/renderer/")
 			So(cfg.RendererCallbackUrl, ShouldEqual, "http://myserver/renderer/")
 		})
 		})
-
 	})
 	})
 }
 }

+ 2 - 0
pkg/setting/testdata/session.ini

@@ -0,0 +1,2 @@
+[session]
+provider = file