Azure / Azure/azure-rest-api-specs

The defaultConsistencyLevel property should be set to the value defined in request payload while creating the restored CosmosDB Account

Open
#24,607 1 comment 0 reactions 0 assignees View on GitHub
Cosmos Service Attention
Dominant language
TypeSpec
Stars
3.1k
Forks
5.9k
Avg merge
2d 22h
Merged PRs (30d)
444

Description

Recently, we found that the defaultConsistencyLevel property isn't set to the value defined in request payload while creating the restored CosmosDB Account. This issue happens around 2023-05-19. Previously it works fine with same repro steps,which means the defaultConsistencyLevel property is able to be set to the value defined in request payload while creating the restored CosmosDB Account. So I assume it's a regression issue. Could you take a look/fix this issue asap? Thanks in advance.

Repro steps:
1. Create the source CosmosDB Account with below "Request Payload 1".
2. Create the restored CosmosDB Account based on above source CosmosDB Account with below "Request Payload 2".
3. Invoke CosmosDB.Account.GET API to get the resource. You will find the defaultConsistencyLevel property isn't set to the value defined in below "Request Payload 2".

Request Payload 1 - Create source CosmosDB Account:
```
PUT https://management.azure.com/subscriptions/xx-xx-xx-xx/resourceGroups/acctestRG-cosmos-230627141318137548/providers/Microsoft.DocumentDB/databaseAccounts/acctest-ca-230627141318137548

{
"identity": {
"type": "None"
},
"kind": "MongoDB",
"location": "westeurope",
"properties": {
"consistencyPolicy": {
"defaultConsistencyLevel": "Eventual",
"maxStalenessPrefix": 100,
"maxIntervalInSeconds": 5
},
"locations": [
{
"failoverPriority": 0,
"isZoneRedundant": false,
"locationName": "westeurope"
}
],
"databaseAccountOfferType": "Standard",
"ipRules": [],
"isVirtualNetworkFilterEnabled": false,
"enableAutomaticFailover": false,
"capabilities": [
{
"name": "EnableMongo"
}
],
"virtualNetworkRules": [],
"enableMultipleWriteLocations": false,
"disableKeyBasedMetadataWriteAccess": false,
"defaultIdentity": "FirstPartyIdentity",
"publicNetworkAccess": "Enabled",
"enableFreeTier": false,
"enableAnalyticalStorage": false,
"backupPolicy": {
"type": "Continuous"
},
"networkAclBypass": "None",
"networkAclBypassResourceIds": [],
"disableLocalAuth": false
},
"tags": {}
}
```

Request Payload 2 - Create the restored CosmosDB Account based on above source CosmosDB Account:
```
PUT https://management.azure.com/subscriptions/xx-xx-xx-xx/resourceGroups/acctestRG-cosmos-230627141318137548/providers/Microsoft.DocumentDB/databaseAccounts/acctest-ca2-230627141318137548

{
"identity": {
"type": "None"
},
"kind": "MongoDB",
"location": "westeurope",
"properties": {
"consistencyPolicy": {
"defaultConsistencyLevel": "Session",
"maxStalenessPrefix": 100,
"maxIntervalInSeconds": 5
},
"locations": [
{
"failoverPriority": 0,
"isZoneRedundant": false,
"locationName": "westeurope"
}
],
"databaseAccountOfferType": "Standard",
"ipRules": [],
"isVirtualNetworkFilterEnabled": false,
"enableAutomaticFailover": false,
"capabilities": [
{
"name": "EnableMongo"
}
],
"virtualNetworkRules": [],
"enableMultipleWriteLocations": false,
"disableKeyBasedMetadataWriteAccess": false,
"defaultIdentity": "FirstPartyIdentity",
"publicNetworkAccess": "Enabled",
"enableFreeTier": false,
"enableAnalyticalStorage": false,
"createMode": "Restore",
"backupPolicy": {
"type": "Continuous"
},
"networkAclBypass": "None",
"networkAclBypassResourceIds": [],
"disableLocalAuth": false,
"restoreParameters": {
"restoreMode": "PointInTime",
"restoreSource": "/subscriptions/xx-xx-xx-xx/providers/Microsoft.DocumentDB/locations/westeurope/restorableDatabaseAccounts/xx-xx-xx-xx",
"restoreTimestampInUtc": "2023-06-27T06:38:13Z",
"databasesToRestore": [
{
"databaseName": "acctest-mongodb-230627141318137548",
"collectionNames": [
"acctest-mongodb-coll-230627141318137548"
]
}
]
}
},
"tags": {}
}
```

API Response for the restored CosmosDB Account:
```
GET https://management.azure.com/subscriptions/xx-xx-xx-xx/resourceGroups/acctestRG-cosmos-230627141318137548/providers/Microsoft.DocumentDB/databaseAccounts/acctest-ca2-230627141318137548?api-version=2023-04-15

{
"id": "/subscriptions/xx-xx-xx-xx/resourceGroups/acctestRG-cosmos-230627141318137548/providers/Microsoft.DocumentDB/databaseAccounts/acctest-ca2-230627141318137548",
"name": "acctest-ca2-230627141318137548",
"location": "West Europe",
"type": "Microsoft.DocumentDB/databaseAccounts",
"kind": "MongoDB",
"tags": {},
"systemData": {
"createdAt": "2023-06-27T06:53:04.4144866Z"
},
"properties": {
"provisioningState": "Succeeded",
"documentEndpoint": "https://acctest-ca2-230627141318137548.documents.azure.com:443/",
"sqlEndpoint": "https://acctest-ca2-230627141318137548.documents.azure.com:443/",
"mongoEndpoint": "https://acctest-ca2-230627141318137548.mongo.cosmos.azure.com:443/",
"publicNetworkAccess": "Enabled",
"enableAutomaticFailover": false,
"enableMultipleWriteLocations": false,
"enablePartitionKeyMonitor": false,
"isVirtualNetworkFilterEnabled": false,
"virtualNetworkRules": [],
"EnabledApiTypes": "MongoDB",
"disableKeyBasedMetadataWriteAccess": false,
"enableFreeTier": false,
"enableAnalyticalStorage": false,
"analyticalStorageConfiguration": {},
"instanceId": "xx-xx-xx-xx",
"createMode": "Restore",
"databaseAccountOfferType": "Standard",
"defaultIdentity": "FirstPartyIdentity",
"networkAclBypass": "None",
"disableLocalAuth": false,
"enablePartitionMerge": false,
"minimalTlsVersion": "Tls",
"consistencyPolicy": {
"defaultConsistencyLevel": "Eventual",
"maxIntervalInSeconds": 5,
"maxStalenessPrefix": 100
},
"apiProperties": {
"serverVersion": "3.6"
},
"configurationOverrides": {
"EnableBsonSchema": "True"
},
"writeLocations": [
{
"id": "acctest-ca2-230627141318137548-westeurope",
"locationName": "West Europe",
"documentEndpoint": "https://acctest-ca2-230627141318137548-westeurope.documents.azure.com:443/",
"provisioningState": "Succeeded",
"failoverPriority": 0,
"isZoneRedundant": false
}
],
"readLocations": [
{
"id": "acctest-ca2-230627141318137548-westeurope",
"locationName": "West Europe",
"documentEndpoint": "https://acctest-ca2-230627141318137548-westeurope.documents.azure.com:443/",
"provisioningState": "Succeeded",
"failoverPriority": 0,
"isZoneRedundant": false
}
],
"locations": [
{
"id": "acctest-ca2-230627141318137548-westeurope",
"locationName": "West Europe",
"documentEndpoint": "https://acctest-ca2-230627141318137548-westeurope.documents.azure.com:443/",
"provisioningState": "Succeeded",
"failoverPriority": 0,
"isZoneRedundant": false
}
],
"failoverPolicies": [
{
"id": "acctest-ca2-230627141318137548-westeurope",
"locationName": "West Europe",
"failoverPriority": 0
}
],
"cors": [],
"capabilities": [
{
"name": "EnableMongo"
}
],
"ipRules": [],
"backupPolicy": {
"type": "Continuous",
"continuousModeProperties": {
"tier": "Continuous30Days"
}
},
"restoreParameters": {
"restoreMode": "PointInTime",
"restoreSource": "/subscriptions/xx-xx-xx-xx/providers/Microsoft.DocumentDB/locations/westeurope/restorableDatabaseAccounts/xx-xx-xx-xx",
"restoreTimestampInUtc": "2023-06-27T06:38:13Z",
"sourceBackupLocation": "West Europe",
"databasesToRestore": [
{
"databaseName": "acctest-mongodb-230627141318137548",
"collectionNames": [
"acctest-mongodb-coll-230627141318137548"
]
}
]
},
"networkAclBypassResourceIds": [],
"capacity": {
"totalThroughputLimit": -1
},
"keysMetadata": {
"primaryMasterKey": {
"generationTime": "xxxx"
},
"secondaryMasterKey": {
"generationTime": "xxxx"
},
"primaryReadonlyMasterKey": {
"generationTime": "xxxx"
},
"secondaryReadonlyMasterKey": {
"generationTime": "xxxx"
}
}
},
"identity": {
"type": "None"
}
}
```

Contributor guide

Open the contributing guide

Research direction

Start with the CosmosDB Account PUT restore request and the corresponding GET response shown in the issue, focusing on consistencyPolicy.defaultConsistencyLevel and the restore createMode. Reproduce the source account with Eventual and restored account with Session, then verify that the restored account GET response preserves Session instead of returning Eventual.

Written by the indexing model from the issue text.

Assessment

Tech stack
azure
Domain
api, databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
40/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.