{"record":{"id":"0b69857801f002f0","repo":"hashicorp/terraform","slug":"error-describing-table-store-s-v","errorCode":null,"errorMessage":"error describing table store %s: %#v","messagePattern":"error describing table store (.+?): %#v","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/backend/remote-state/oss/backend_state.go","lineNumber":49,"sourceCode":"\t\treturn nil, errors.New(\"missing state name\")\n\t}\n\n\tclient := &RemoteClient{\n\t\tossClient:            b.ossClient,\n\t\tbucketName:           b.bucketName,\n\t\tstateFile:            b.stateFile(name),\n\t\tlockFile:             b.lockFile(name),\n\t\tserverSideEncryption: b.serverSideEncryption,\n\t\tacl:                  b.acl,\n\t\totsTable:             b.otsTable,\n\t\totsClient:            b.otsClient,\n\t}\n\tif b.otsEndpoint != \"\" && b.otsTable != \"\" {\n\t\t_, err := b.otsClient.DescribeTable(&tablestore.DescribeTableRequest{\n\t\t\tTableName: b.otsTable,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn client, fmt.Errorf(\"error describing table store %s: %#v\", b.otsTable, err)\n\t\t}\n\t}\n\n\treturn client, nil\n}\n\nfunc (b *Backend) Workspaces() ([]string, tfdiags.Diagnostics) {\n\tvar diags tfdiags.Diagnostics\n\n\tbucket, err := b.ossClient.Bucket(b.bucketName)\n\tif err != nil {\n\t\treturn []string{\"\"}, diags.Append(fmt.Errorf(\"error getting bucket: %#v\", err))\n\t}\n\n\tvar options []oss.Option\n\toptions = append(options, oss.Prefix(b.statePrefix+\"/\"), oss.MaxKeys(1000))\n\tresp, err := bucket.ListObjects(options...)\n\tif err != nil {","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/hashicorp/terraform/blob/d32a084675427f5ac3f7d2868578ef8b2c1dc525/internal/backend/remote-state/oss/backend_state.go#L31-L67","documentation":"Thrown by remoteClient() when both ots_endpoint and ots_table are configured: the Tablestore (OTS) DescribeTable call failed. The backend pre-flight checks that the configured locking table exists and is reachable before using it for state locking.","triggerScenarios":"Calling OTS DescribeTable for the configured table name and getting any error: table not found, authentication failure, endpoint unreachable, or permission denied on the tablestore:DescribeTable action.","commonSituations":"Mis-typed ots_table name, table not yet created, ots_endpoint pointing at the wrong region, RAM user/role lacking Tablestore permissions, or network/firewall blocking the OTS endpoint.","solutions":["Confirm ots_table matches an existing Tablestore table in the Alibaba Cloud console.","Verify ots_endpoint is the correct regional endpoint for that table.","Grant the credentials the Tablestore access (ots:DescribeTable, ots:GetRow, ots:PutRow, ots:DeleteRow) on the table.","Check network egress from the runner to the OTS endpoint (security groups, NAT, proxies)."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Before terraform runs, verify the OTS table exists and is describable.\ndesc, err := otsClient.DescribeTable(&tablestore.DescribeTableRequest{TableName: table})\nif err != nil { return fmt.Errorf(\"pre-flight DescribeTable failed: %w\", err) }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Create the Tablestore lock table once during environment provisioning.","Grant ots:DescribeTable, ots:GetRow, ots:PutRow, ots:DeleteRow to the deployer principal.","Use the same region endpoint for OTS and OSS to reduce latency/permission mismatch."],"tags":["alibaba-cloud","tablestore","ots","terraform-backend","remote-state","iam"],"backgroundTag":null,"analyzedSha":"d32a084675427f5ac3f7d2868578ef8b2c1dc525","analyzedAt":"2026-08-11T18:43:52.779Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}