From e40169079c8c5104bbeb23ea5db1f95477815adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gra=CC=88tzer?= Date: Wed, 26 Sep 2018 14:26:36 +0200 Subject: [PATCH 1/4] Copy installation files on startup --- service/arangod_config_builder.go | 1 + 1 file changed, 1 insertion(+) diff --git a/service/arangod_config_builder.go b/service/arangod_config_builder.go index 86010de6..7908dec4 100644 --- a/service/arangod_config_builder.go +++ b/service/arangod_config_builder.go @@ -162,6 +162,7 @@ func createArangodArgs(log zerolog.Logger, config Config, clusterConfig ClusterC optionPair{"--database.directory", slasher(filepath.Join(myContainerDir, "data"))}, optionPair{"--javascript.startup-directory", slasher(jsStartup)}, optionPair{"--javascript.app-path", slasher(filepath.Join(myContainerDir, "apps"))}, + optionPair{"--javascript.copy-installation", "true")}, optionPair{"--log.file", slasher(myContainerLogFile)}, optionPair{"--log.force-direct", "false"}, ) From 2694d76c98bc3d8fb4e093aabb170d3534763a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gra=CC=88tzer?= Date: Wed, 26 Sep 2018 14:37:09 +0200 Subject: [PATCH 2/4] remove extra ) --- service/arangod_config_builder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/arangod_config_builder.go b/service/arangod_config_builder.go index 7908dec4..1e8ebf42 100644 --- a/service/arangod_config_builder.go +++ b/service/arangod_config_builder.go @@ -162,7 +162,7 @@ func createArangodArgs(log zerolog.Logger, config Config, clusterConfig ClusterC optionPair{"--database.directory", slasher(filepath.Join(myContainerDir, "data"))}, optionPair{"--javascript.startup-directory", slasher(jsStartup)}, optionPair{"--javascript.app-path", slasher(filepath.Join(myContainerDir, "apps"))}, - optionPair{"--javascript.copy-installation", "true")}, + optionPair{"--javascript.copy-installation", "true"}, optionPair{"--log.file", slasher(myContainerLogFile)}, optionPair{"--log.force-direct", "false"}, ) From fc1a9a4660f3dedb67370aa53eba27737b587e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gra=CC=88tzer?= Date: Thu, 27 Sep 2018 17:01:51 +0200 Subject: [PATCH 3/4] properly detect version --- service/arangod_config_builder.go | 9 +++++++-- service/database_features.go | 16 ++++++++++++++-- service/runtime_server_manager.go | 3 ++- service/server_config_builder.go | 4 ++-- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/service/arangod_config_builder.go b/service/arangod_config_builder.go index 1e8ebf42..1dfd4302 100644 --- a/service/arangod_config_builder.go +++ b/service/arangod_config_builder.go @@ -143,7 +143,8 @@ func createArangodConf(log zerolog.Logger, bsCfg BootstrapConfig, myHostDir, myC // createArangodArgs returns the command line arguments needed to run an arangod server of given type. func createArangodArgs(log zerolog.Logger, config Config, clusterConfig ClusterConfig, myContainerDir, myContainerLogFile string, - myPeerID, myAddress, myPort string, serverType ServerType, arangodConfig configFile, agentRecoveryID string, databaseAutoUpgrade bool) []string { + myPeerID, myAddress, myPort string, serverType ServerType, arangodConfig configFile, agentRecoveryID string, databaseAutoUpgrade bool, + features DatabaseFeatures) []string { containerConfFileName := filepath.Join(myContainerDir, arangodConfFileName) args := make([]string, 0, 40) @@ -162,10 +163,14 @@ func createArangodArgs(log zerolog.Logger, config Config, clusterConfig ClusterC optionPair{"--database.directory", slasher(filepath.Join(myContainerDir, "data"))}, optionPair{"--javascript.startup-directory", slasher(jsStartup)}, optionPair{"--javascript.app-path", slasher(filepath.Join(myContainerDir, "apps"))}, - optionPair{"--javascript.copy-installation", "true"}, optionPair{"--log.file", slasher(myContainerLogFile)}, optionPair{"--log.force-direct", "false"}, ) + + if !config.RunningInDocker && features.CopyInstallationFiles() { + options = append(options, optionPair{"--javascript.copy-installation", "true"}) + } + if databaseAutoUpgrade { options = append(options, optionPair{"--database.auto-upgrade", "true"}) diff --git a/service/database_features.go b/service/database_features.go index 5fad5d68..721e34b8 100644 --- a/service/database_features.go +++ b/service/database_features.go @@ -29,8 +29,9 @@ import driver "github.com/arangodb/go-driver" type DatabaseFeatures driver.Version const ( - v32 driver.Version = "3.2.0" - v34 driver.Version = "3.4.0" + v32 driver.Version = "3.2.0" + v33_17 driver.Version = "3.3.17" + v34 driver.Version = "3.4.0" ) // NewDatabaseFeatures returns a new DatabaseFeatures based on @@ -52,3 +53,14 @@ func (v DatabaseFeatures) DefaultStorageEngine() string { } return "mmfiles" } + +// does this support copying installation files +func (v DatabaseFeatures) CopyInstallationFiles() bool { + if driver.Version(v).CompareTo(v34) >= 0 { + return true + } + if driver.Version(v).CompareTo(v33_17) >= 0 { + return true + } + return false +} diff --git a/service/runtime_server_manager.go b/service/runtime_server_manager.go index 51d1d297..b401fd81 100644 --- a/service/runtime_server_manager.go +++ b/service/runtime_server_manager.go @@ -167,7 +167,8 @@ func startServer(ctx context.Context, log zerolog.Logger, runtimeContext runtime clusterConfig, myPeer, _ := runtimeContext.ClusterConfig() upgradeManager := runtimeContext.UpgradeManager() databaseAutoUpgrade := upgradeManager.ServerDatabaseAutoUpgrade(serverType) - args, err := createServerArgs(log, config, clusterConfig, myContainerDir, myContainerLogFile, myPeer.ID, myHostAddress, strconv.Itoa(myPort), serverType, arangodConfig, containerSecretFileName, bsCfg.RecoveryAgentID, databaseAutoUpgrade) + args, err := createServerArgs(log, config, clusterConfig, myContainerDir, myContainerLogFile, myPeer.ID, myHostAddress, strconv.Itoa(myPort), serverType, arangodConfig, + containerSecretFileName, bsCfg.RecoveryAgentID, databaseAutoUpgrade, features) if err != nil { return nil, false, maskAny(err) } diff --git a/service/server_config_builder.go b/service/server_config_builder.go index 3e54488c..c5f33420 100644 --- a/service/server_config_builder.go +++ b/service/server_config_builder.go @@ -75,10 +75,10 @@ func collectServerConfigVolumes(serverType ServerType, config configFile) []Volu // createServerArgs returns the command line arguments needed to run an arangod/arangosync server of given type. func createServerArgs(log zerolog.Logger, config Config, clusterConfig ClusterConfig, myContainerDir, myContainerLogFile string, myPeerID, myAddress, myPort string, serverType ServerType, arangodConfig configFile, - clusterJWTSecretFile, agentRecoveryID string, databaseAutoUpgrade bool) ([]string, error) { + clusterJWTSecretFile, agentRecoveryID string, databaseAutoUpgrade bool, features DatabaseFeatures) ([]string, error) { switch serverType.ProcessType() { case ProcessTypeArangod: - return createArangodArgs(log, config, clusterConfig, myContainerDir, myContainerLogFile, myPeerID, myAddress, myPort, serverType, arangodConfig, agentRecoveryID, databaseAutoUpgrade), nil + return createArangodArgs(log, config, clusterConfig, myContainerDir, myContainerLogFile, myPeerID, myAddress, myPort, serverType, arangodConfig, agentRecoveryID, databaseAutoUpgrade, features), nil case ProcessTypeArangoSync: return createArangoSyncArgs(log, config, clusterConfig, myContainerDir, myContainerLogFile, myPeerID, myAddress, myPort, serverType, clusterJWTSecretFile) default: From 597c7f382fd8abac5388d3f9c48e9887c8cd9461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Gra=CC=88tzer?= Date: Fri, 12 Oct 2018 14:54:55 +0200 Subject: [PATCH 4/4] follow go naming conventions --- service/arangod_config_builder.go | 2 +- service/database_features.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/service/arangod_config_builder.go b/service/arangod_config_builder.go index 1dfd4302..db5a28c3 100644 --- a/service/arangod_config_builder.go +++ b/service/arangod_config_builder.go @@ -167,7 +167,7 @@ func createArangodArgs(log zerolog.Logger, config Config, clusterConfig ClusterC optionPair{"--log.force-direct", "false"}, ) - if !config.RunningInDocker && features.CopyInstallationFiles() { + if !config.RunningInDocker && features.HasCopyInstallationFiles() { options = append(options, optionPair{"--javascript.copy-installation", "true"}) } diff --git a/service/database_features.go b/service/database_features.go index 721e34b8..bda7000c 100644 --- a/service/database_features.go +++ b/service/database_features.go @@ -54,8 +54,8 @@ func (v DatabaseFeatures) DefaultStorageEngine() string { return "mmfiles" } -// does this support copying installation files -func (v DatabaseFeatures) CopyInstallationFiles() bool { +// HasCopyInstallationFiles does server support copying installation files +func (v DatabaseFeatures) HasCopyInstallationFiles() bool { if driver.Version(v).CompareTo(v34) >= 0 { return true }