diff --git a/Makefile b/Makefile index 77ad51a1a87..d891fb3547c 100644 --- a/Makefile +++ b/Makefile @@ -42,6 +42,10 @@ ifeq ("$(WITH_RACE)", "1") BUILD_CGO_ENABLED := 1 endif +ifeq ($(PLUGIN), 1) + BUILD_TAGS += with_plugin +endif + LDFLAGS += -X "$(PD_PKG)/pkg/versioninfo.PDReleaseVersion=$(shell git describe --tags --dirty --always)" LDFLAGS += -X "$(PD_PKG)/pkg/versioninfo.PDBuildTS=$(shell date -u '+%Y-%m-%d %I:%M:%S')" LDFLAGS += -X "$(PD_PKG)/pkg/versioninfo.PDGitHash=$(shell git rev-parse HEAD)" @@ -82,6 +86,9 @@ pd-server-failpoint: FAILPOINT=1 $(MAKE) pd-server || { $(FAILPOINT_DISABLE); exit 1; } @$(FAILPOINT_DISABLE) +pd-server-plugin: + PLUGIN=1 $(MAKE) pd-server + pd-server-basic: SWAGGER=0 DASHBOARD=0 $(MAKE) pd-server @@ -286,4 +293,4 @@ clean-build: rm -rf $(BUILD_BIN_PATH) rm -rf $(GO_TOOLS_BIN_PATH) -.PHONY: clean clean-test clean-build \ No newline at end of file +.PHONY: clean clean-test clean-build diff --git a/pkg/mcs/scheduling/server/config/config.go b/pkg/mcs/scheduling/server/config/config.go index 29ada45512e..82c15632b3d 100644 --- a/pkg/mcs/scheduling/server/config/config.go +++ b/pkg/mcs/scheduling/server/config/config.go @@ -606,13 +606,6 @@ func (o *PersistConfig) SetHaltScheduling(halt bool, source string) { o.SetScheduleConfig(v) } -// SetEnableSchedulePlugin set EnableSchedulePlugin. -func (o *PersistConfig) SetEnableSchedulePlugin(enable bool) { - v := o.GetScheduleConfig().Clone() - v.EnableSchedulePlugin = enable - o.SetScheduleConfig(v) -} - // CheckRegionKeys return error if the smallest region's keys is less than mergeKeys func (o *PersistConfig) CheckRegionKeys(keys, mergeKeys uint64) error { return o.GetStoreConfig().CheckRegionKeys(keys, mergeKeys) diff --git a/pkg/schedule/config/config.go b/pkg/schedule/config/config.go index 3c2d60f4b93..c8fa62b8aff 100644 --- a/pkg/schedule/config/config.go +++ b/pkg/schedule/config/config.go @@ -57,7 +57,6 @@ const ( defaultEnablePlacementRules = true defaultEnableWitness = false defaultHaltScheduling = false - defaultEnableSchedulePlugin = false defaultRegionScoreFormulaVersion = "v2" defaultLeaderSchedulePolicy = "count" @@ -270,9 +269,6 @@ type ScheduleConfig struct { // HaltScheduling is the option to halt the scheduling. Once it's on, PD will halt the scheduling, // and any other scheduling configs will be ignored. HaltScheduling bool `toml:"halt-scheduling" json:"halt-scheduling,string,omitempty"` - - // EnableSchedulePlugin is the option to enable plugin. - EnableSchedulePlugin bool `toml:"enable-schedule-plugin" json:"enable-schedule-plugin,string"` } // Clone returns a cloned scheduling configuration. @@ -371,10 +367,6 @@ func (c *ScheduleConfig) Adjust(meta *configutil.ConfigMetaData, reloading bool) c.HaltScheduling = defaultHaltScheduling } - if !meta.IsDefined("enable-schedule-plugin") { - c.EnableSchedulePlugin = defaultEnableSchedulePlugin - } - adjustSchedulers(&c.Schedulers, DefaultSchedulers) for k, b := range c.migrateConfigurationMap() { diff --git a/pkg/schedule/config/config_provider.go b/pkg/schedule/config/config_provider.go index f402de86408..00f11a5950f 100644 --- a/pkg/schedule/config/config_provider.go +++ b/pkg/schedule/config/config_provider.go @@ -115,7 +115,6 @@ type SharedConfigProvider interface { IsWitnessAllowed() bool IsPlacementRulesCacheEnabled() bool SetHaltScheduling(bool, string) - SetEnableSchedulePlugin(bool) // for test purpose SetPlacementRulesCacheEnabled(bool) diff --git a/pkg/utils/configutil/configutil.go b/pkg/utils/configutil/configutil.go index 7a92ff1ebec..978edce7764 100644 --- a/pkg/utils/configutil/configutil.go +++ b/pkg/utils/configutil/configutil.go @@ -81,7 +81,6 @@ type SecurityConfig struct { // RedactInfoLog indicates that whether enabling redact log RedactInfoLog bool `toml:"redact-info-log" json:"redact-info-log"` Encryption encryption.Config `toml:"encryption" json:"encryption"` - GrantPlugin bool `toml:"grant-plugin" json:"grant-plugin"` } // PrintConfigCheckMsg prints the message about configuration checks. diff --git a/server/api/plugin.go b/server/api/plugin.go index 041cfd5c06e..922fde531f8 100644 --- a/server/api/plugin.go +++ b/server/api/plugin.go @@ -12,6 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. +//go:build with_plugin +// +build with_plugin + package api import ( @@ -48,10 +51,6 @@ func newPluginHandler(handler *server.Handler, rd *render.Render) *pluginHandler // @Failure 500 {string} string "PD server failed to proceed the request." // @Router /plugin [post] func (h *pluginHandler) LoadPlugin(w http.ResponseWriter, r *http.Request) { - if !h.GetScheduleConfig().EnableSchedulePlugin { - h.rd.JSON(w, http.StatusInternalServerError, errors.New("load plugin failed, please enable plugin first")) - return - } h.processPluginCommand(w, r, schedule.PluginLoad) } @@ -66,10 +65,6 @@ func (h *pluginHandler) LoadPlugin(w http.ResponseWriter, r *http.Request) { // @Failure 500 {string} string "PD server failed to proceed the request." // @Router /plugin [delete] func (h *pluginHandler) UnloadPlugin(w http.ResponseWriter, r *http.Request) { - if !h.GetScheduleConfig().EnableSchedulePlugin { - h.rd.JSON(w, http.StatusInternalServerError, errors.New("unload plugin failed, please enable plugin first")) - return - } h.processPluginCommand(w, r, schedule.PluginUnload) } diff --git a/server/api/plugin_disable.go b/server/api/plugin_disable.go new file mode 100644 index 00000000000..fb36b01485c --- /dev/null +++ b/server/api/plugin_disable.go @@ -0,0 +1,41 @@ +// Copyright 2023 TiKV Project 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. + +//go:build !with_plugin +// +build !with_plugin + +package api + +import ( + "net/http" + + "github.com/tikv/pd/server" + "github.com/unrolled/render" +) + +type pluginHandler struct{} + +func newPluginHandler(_ *server.Handler, _ *render.Render) *pluginHandler { + return &pluginHandler{} +} + +func (h *pluginHandler) LoadPlugin(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusNotImplemented) + w.Write([]byte("load plugin is disabled, please `make pd-server-plugin` first")) +} + +func (h *pluginHandler) UnloadPlugin(w http.ResponseWriter, r *http.Request) { + w.WriteHeader(http.StatusNotImplemented) + w.Write([]byte("unload plugin is disabled, please `make pd-server-plugin` first")) +} diff --git a/server/config/persist_options.go b/server/config/persist_options.go index 4c8b7ed2e9f..1ea0b79424f 100644 --- a/server/config/persist_options.go +++ b/server/config/persist_options.go @@ -982,13 +982,6 @@ func (o *PersistOptions) IsSchedulingHalted() bool { return o.GetScheduleConfig().HaltScheduling } -// SetEnableSchedulePlugin to set the option for witness. It's only used to test. -func (o *PersistOptions) SetEnableSchedulePlugin(enable bool) { - v := o.GetScheduleConfig().Clone() - v.EnableSchedulePlugin = enable - o.SetScheduleConfig(v) -} - // GetRegionMaxSize returns the max region size in MB func (o *PersistOptions) GetRegionMaxSize() uint64 { return o.GetStoreConfig().GetRegionMaxSize()