spindle: allowing configuring queue size and max job count #547

merged
opened by oppi.li targeting master from push-vtunvupqotuo
Changed files
+22 -1
nix
spindle
+16
nix/modules/spindle.nix
··· 55 description = "DID of owner (required)"; 56 }; 57 58 secrets = { 59 provider = mkOption { 60 type = types.str; ··· 108 "SPINDLE_SERVER_JETSTREAM=${cfg.server.jetstreamEndpoint}" 109 "SPINDLE_SERVER_DEV=${lib.boolToString cfg.server.dev}" 110 "SPINDLE_SERVER_OWNER=${cfg.server.owner}" 111 "SPINDLE_SERVER_SECRETS_PROVIDER=${cfg.server.secrets.provider}" 112 "SPINDLE_SERVER_SECRETS_OPENBAO_PROXY_ADDR=${cfg.server.secrets.openbao.proxyAddr}" 113 "SPINDLE_SERVER_SECRETS_OPENBAO_MOUNT=${cfg.server.secrets.openbao.mount}"
··· 55 description = "DID of owner (required)"; 56 }; 57 58 + maxJobCount = mkOption { 59 + type = types.int; 60 + default = 2; 61 + example = 5; 62 + description = "Maximum number of concurrent jobs to run"; 63 + }; 64 + 65 + queueSize = mkOption { 66 + type = types.int; 67 + default = 100; 68 + example = 100; 69 + description = "Maximum number of jobs queue up"; 70 + }; 71 + 72 secrets = { 73 provider = mkOption { 74 type = types.str; ··· 122 "SPINDLE_SERVER_JETSTREAM=${cfg.server.jetstreamEndpoint}" 123 "SPINDLE_SERVER_DEV=${lib.boolToString cfg.server.dev}" 124 "SPINDLE_SERVER_OWNER=${cfg.server.owner}" 125 + "SPINDLE_SERVER_MAX_JOB_COUNT=${toString cfg.server.maxJobCount}" 126 + "SPINDLE_SERVER_QUEUE_SIZE=${toString cfg.server.queueSize}" 127 "SPINDLE_SERVER_SECRETS_PROVIDER=${cfg.server.secrets.provider}" 128 "SPINDLE_SERVER_SECRETS_OPENBAO_PROXY_ADDR=${cfg.server.secrets.openbao.proxyAddr}" 129 "SPINDLE_SERVER_SECRETS_OPENBAO_MOUNT=${cfg.server.secrets.openbao.mount}"
+2
nix/vm.nix
··· 89 hostname = "localhost:6555"; 90 listenAddr = "0.0.0.0:6555"; 91 dev = true; 92 secrets = { 93 provider = "sqlite"; 94 };
··· 89 hostname = "localhost:6555"; 90 listenAddr = "0.0.0.0:6555"; 91 dev = true; 92 + queueSize = 100; 93 + maxJobCount = 2; 94 secrets = { 95 provider = "sqlite"; 96 };
+2
spindle/config/config.go
··· 17 Owner string `env:"OWNER, required"` 18 Secrets Secrets `env:",prefix=SECRETS_"` 19 LogDir string `env:"LOG_DIR, default=/var/log/spindle"` 20 } 21 22 func (s Server) Did() syntax.DID {
··· 17 Owner string `env:"OWNER, required"` 18 Secrets Secrets `env:",prefix=SECRETS_"` 19 LogDir string `env:"LOG_DIR, default=/var/log/spindle"` 20 + QueueSize int `env:"QUEUE_SIZE, default=100"` 21 + MaxJobCount int `env:"MAX_JOB_COUNT, default=2"` // max number of jobs that run at a time 22 } 23 24 func (s Server) Did() syntax.DID {
+2 -1
spindle/server.go
··· 100 return err 101 } 102 103 - jq := queue.NewQueue(100, 5) 104 105 collections := []string{ 106 tangled.SpindleMemberNSID,
··· 100 return err 101 } 102 103 + jq := queue.NewQueue(cfg.Server.QueueSize, cfg.Server.MaxJobCount) 104 + logger.Info("initialized queue", "queueSize", cfg.Server.QueueSize, "numWorkers", cfg.Server.MaxJobCount) 105 106 collections := []string{ 107 tangled.SpindleMemberNSID,