Commit 5bfb8867 authored by Łukasz Magiera's avatar Łukasz Magiera

Load static plugins in init

License: MIT
Signed-off-by: default avatarŁukasz Magiera <magik6k@gmail.com>
parent c154f7f0
...@@ -174,10 +174,11 @@ func makeExecutor(req *cmds.Request, env interface{}) (cmds.Executor, error) { ...@@ -174,10 +174,11 @@ func makeExecutor(req *cmds.Request, env interface{}) (cmds.Executor, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if ok { if !ok {
if _, err := loader.LoadPlugins(pluginpath); err != nil { pluginpath = ""
log.Error("error loading plugins: ", err) }
} if _, err := loader.LoadPlugins(pluginpath); err != nil {
log.Error("error loading plugins: ", err)
} }
exctr = cmds.NewExecutor(req.Root) exctr = cmds.NewExecutor(req.Root)
......
...@@ -22,20 +22,22 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) { ...@@ -22,20 +22,22 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) {
plMap[v.Name()] = v plMap[v.Name()] = v
} }
newPls, err := loadDynamicPlugins(pluginDir) if pluginDir != "" {
if err != nil { newPls, err := loadDynamicPlugins(pluginDir)
return nil, err if err != nil {
} return nil, err
}
for _, pl := range newPls { for _, pl := range newPls {
if ppl, ok := plMap[pl.Name()]; ok { if ppl, ok := plMap[pl.Name()]; ok {
// plugin is already preloaded // plugin is already preloaded
return nil, fmt.Errorf( return nil, fmt.Errorf(
"plugin: %s, is duplicated in version: %s, "+ "plugin: %s, is duplicated in version: %s, "+
"while trying to load dynamically: %s", "while trying to load dynamically: %s",
ppl.Name(), ppl.Version(), pl.Version()) ppl.Name(), ppl.Version(), pl.Version())
}
plMap[pl.Name()] = pl
} }
plMap[pl.Name()] = pl
} }
pls := make([]plugin.Plugin, 0, len(plMap)) pls := make([]plugin.Plugin, 0, len(plMap))
...@@ -43,7 +45,7 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) { ...@@ -43,7 +45,7 @@ func LoadPlugins(pluginDir string) ([]plugin.Plugin, error) {
pls = append(pls, v) pls = append(pls, v)
} }
err = initialize(pls) err := initialize(pls)
if err != nil { if err != nil {
return nil, err return nil, err
} }
......
package fsrepo package fsrepo_test
import ( import (
"encoding/json" "encoding/json"
...@@ -7,7 +7,10 @@ import ( ...@@ -7,7 +7,10 @@ import (
"reflect" "reflect"
"testing" "testing"
config "gx/ipfs/QmbK4EmM2Xx5fmbqK38TGP3PpY66r3tkXLZTcc7dF9mFwM/go-ipfs-config" "github.com/ipfs/go-ipfs/plugin/loader"
"github.com/ipfs/go-ipfs/repo/fsrepo"
"gx/ipfs/QmPEpj17FDRpc7K1aArKZp3RsHtzRMKykeK9GVgn4WQGPR/go-ipfs-config"
) )
// note: to test sorting of the mountpoints in the disk spec they are // note: to test sorting of the mountpoints in the disk spec they are
...@@ -72,6 +75,8 @@ var measureConfig = []byte(`{ ...@@ -72,6 +75,8 @@ var measureConfig = []byte(`{
}`) }`)
func TestDefaultDatastoreConfig(t *testing.T) { func TestDefaultDatastoreConfig(t *testing.T) {
loader.LoadPlugins("")
dir, err := ioutil.TempDir("", "ipfs-datastore-config-test") dir, err := ioutil.TempDir("", "ipfs-datastore-config-test")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
...@@ -84,7 +89,7 @@ func TestDefaultDatastoreConfig(t *testing.T) { ...@@ -84,7 +89,7 @@ func TestDefaultDatastoreConfig(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
dsc, err := AnyDatastoreConfig(config.Spec) dsc, err := fsrepo.AnyDatastoreConfig(config.Spec)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
...@@ -122,7 +127,7 @@ func TestLevelDbConfig(t *testing.T) { ...@@ -122,7 +127,7 @@ func TestLevelDbConfig(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
dsc, err := AnyDatastoreConfig(spec) dsc, err := fsrepo.AnyDatastoreConfig(spec)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
...@@ -160,7 +165,7 @@ func TestFlatfsConfig(t *testing.T) { ...@@ -160,7 +165,7 @@ func TestFlatfsConfig(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
dsc, err := AnyDatastoreConfig(spec) dsc, err := fsrepo.AnyDatastoreConfig(spec)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
...@@ -198,7 +203,7 @@ func TestMeasureConfig(t *testing.T) { ...@@ -198,7 +203,7 @@ func TestMeasureConfig(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
dsc, err := AnyDatastoreConfig(spec) dsc, err := fsrepo.AnyDatastoreConfig(spec)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment