When attempting to create a new table in Azurite, it returns 409 Conflict that the table already exists when it doesn't.
Which service(blob, file, queue, table) does this issue concern?
This is an issue with table service.
Which version of the Azurite was used?
3.17.1
Where do you get Azurite? (npm, DockerHub, NuGet, Visual Studio Code Extension)
Automatically installed with Visual Studio 2022 Community Edition.
What's the Node.js version?
v12.13.0
What problem was encountered?
I recently switched over to using Azurite from the legacy storage emulator for running our functional tests. As part of their startup routine, they create a new Azurite running instance with a new workspace folder for storing the database files. There is also logic that creates all the tables needed for the tests to run. When attempting to create one of the tables, Azurite was returning that the table already exists when it doesn't (I've inspected the existing tables with Azure Storage Explorer and the table is not there). I believe this is a naming conflict due to another table having a similar name.
Steps to reproduce the issue?
- Open
cmdand start Azurite by typingC:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\Microsoft\Azure Storage Emulator\azurite.exe - Open Microsoft Azure Storage Explorer and navigate to the
Local & Attached->(Emulator - Default Ports) (Key)->Tablesnode. - Right click on the Tables node and select
Create Table. - Name the table
UserBestSeasonScoreRecords. - Notice that a new table appears named
UserBestSeasonScoreRecordsin the storage explorer view and the Activites window in storage explorer showsSuccessfully created table 'UserBestSeasonScoreRecords'. - Right click on the Tables node again and select
Create Table. - Name the table
Seasons. - Notice that the new table fails to create and the Activities window shows
Failed to create table 'Seasons'.
Click view errors on the "Failed to create table 'Seasons'" row and you'll see the following error from the emulator:
{
"name": "RestError",
"message": "{\"odata.error\":{\"code\":\"TableAlreadyExists\",\"message\":{\"lang\":\"en-US\",\"value\":\"The table specified already exists.\\nRequestId:d3a2f01f-0b6d-470d-9a67-98006b7c510a\\nTime:2022-07-31T14:43:51.912Z\"}}}",
"stack": "RestError: {\"odata.error\":{\"code\":\"TableAlreadyExists\",\"message\":{\"lang\":\"en-US\",\"value\":\"The table specified already exists.\\nRequestId:d3a2f01f-0b6d-470d-9a67-98006b7c510a\\nTime:2022-07-31T14:43:51.912Z\"}}}\n at Object.onResponse (C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\node_modules\\se-table-extension\\dist\\src\\Clients\\TableServiceClient.js:48:31)\n at handleTableAlreadyExists (C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\node_modules\\@azure\\data-tables\\dist\\index.js:3356:21)\n at C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\node_modules\\@azure\\data-tables\\dist\\index.js:3559:17\n at processTicksAndRejections (node:internal/process/task_queues:96:5)\n at async Object.withSpan (C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\node_modules\\@azure\\data-tables\\node_modules\\@azure\\core-tracing\\dist\\index.js:145:28)\n at async TableServiceClient.runOperation (C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\node_modules\\@storage-explorer\\azure-sdk-helpers\\dist\\src\\CoreRest\\CoreRestClient.js:107:24)\n at async Object.createTable (C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\node_modules\\se-table-extension\\dist\\src\\Actions\\TableServiceActions.js:93:9)\n at async Object.StorageExplorer.Table.NodeAction.createTable (C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\node_modules\\se-table-extension\\dist\\src\\index.js:100:16)\n at async Provider.executeOperation (C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\out\\app\\providers\\Provider.js:28:16)\n at async NodeProcessHostProxy._handleExecuteRequest (C:\\Program Files (x86)\\Microsoft Azure Storage Explorer\\resources\\app\\out\\app\\node\\NodeProcessHostProxy.js:226:31)",
"code": "TableAlreadyExists",
"statusCode": 409,
"request": {
"url": "http://127.0.0.1:10002/devstoreaccount1/Tables",
"body": "{\"TableName\":\"Seasons\"}",
"headers": {
"content-type": "application/json;odata=nometadata",
"accept": "application/json;odata=minimalmetadata",
"x-ms-version": "2019-02-02",
"dataserviceversion": "3.0",
"accept-encoding": "gzip,deflate",
"user-agent": "Microsoft Azure Storage Explorer/1.24.3 (win32) azsdk-js-data-tables/13.1.1 core-rest-pipeline/1.8.0 Node/v16.13.2 OS/(ia32-Windows_NT-10.0.19044)",
"x-ms-client-request-id": "42b7af37-54c3-4704-891b-578c1d874a64",
"x-ms-date": "Sun, 31 Jul 2022 14:43:51 GMT",
"content-length": "23",
"authorization": "SharedKeyLite devstoreaccount1:X1v3BS2nufDZVGk4T9V7DucSKb0mnXf9MAfeeziUNuY="
},
"method": "POST",
"timeout": 0,
"disableKeepAlive": false,
"streamResponseStatusCodes": {},
"withCredentials": false,
"tracingOptions": {
"tracingContext": {
"_contextMap": {}
}
},
"requestId": "42b7af37-54c3-4704-891b-578c1d874a64",
"allowInsecureConnection": true,
"enableBrowserStreams": false
},
"response": {
"status": 409,
"headers": {
"server": "Azurite-Table/3.17.1",
"x-ms-error-code": "TableAlreadyExists",
"x-ms-request-id": "d3a2f01f-0b6d-470d-9a67-98006b7c510a",
"x-ms-version": "2021-06-08",
"content-type": "application/json;odata=minimalmetadata;streaming=true;charset=utf-8",
"date": "Sun, 31 Jul 2022 14:43:51 GMT",
"connection": "keep-alive",
"keep-alive": "timeout=5",
"transfer-encoding": "chunked"
},
"request": {
"url": "http://127.0.0.1:10002/devstoreaccount1/Tables",
"body": "{\"TableName\":\"Seasons\"}",
"headers": {
"content-type": "application/json;odata=nometadata",
"accept": "application/json;odata=minimalmetadata",
"x-ms-version": "2019-02-02",
"dataserviceversion": "3.0",
"accept-encoding": "gzip,deflate",
"user-agent": "Microsoft Azure Storage Explorer/1.24.3 (win32) azsdk-js-data-tables/13.1.1 core-rest-pipeline/1.8.0 Node/v16.13.2 OS/(ia32-Windows_NT-10.0.19044)",
"x-ms-client-request-id": "42b7af37-54c3-4704-891b-578c1d874a64",
"x-ms-date": "Sun, 31 Jul 2022 14:43:51 GMT",
"content-length": "23",
"authorization": "SharedKeyLite devstoreaccount1:X1v3BS2nufDZVGk4T9V7DucSKb0mnXf9MAfeeziUNuY="
},
"method": "POST",
"timeout": 0,
"disableKeepAlive": false,
"streamResponseStatusCodes": {},
"withCredentials": false,
"tracingOptions": {
"tracingContext": {
"_contextMap": {}
}
},
"requestId": "42b7af37-54c3-4704-891b-578c1d874a64",
"allowInsecureConnection": true,
"enableBrowserStreams": false
},
"bodyAsText": "{\"odata.error\":{\"code\":\"TableAlreadyExists\",\"message\":{\"lang\":\"en-US\",\"value\":\"The table specified already exists.\\nRequestId:d3a2f01f-0b6d-470d-9a67-98006b7c510a\\nTime:2022-07-31T14:43:51.912Z\"}}}",
"parsedBody": {
"odataError": {
"code": "TableAlreadyExists",
"message": {
"lang": "en-US",
"value": "The table specified already exists.\nRequestId:d3a2f01f-0b6d-470d-9a67-98006b7c510a\nTime:2022-07-31T14:43:51.912Z"
}
}
},
"parsedHeaders": {
"errorCode": "TableAlreadyExists",
"server": "Azurite-Table/3.17.1",
"x-ms-request-id": "d3a2f01f-0b6d-470d-9a67-98006b7c510a",
"x-ms-version": "2021-06-08",
"content-type": "application/json;odata=minimalmetadata;streaming=true;charset=utf-8",
"date": "Sun, 31 Jul 2022 14:43:51 GMT",
"connection": "keep-alive",
"keep-alive": "timeout=5",
"transfer-encoding": "chunked"
}
}
}
Note that I'm using version 1.24.3 of the Microsoft Azure Storage Explorer tool.
If possible, please provide the debug log using the -d parameter, replacing <pathtodebuglog> with an appropriate path for your OS, or review the instructions for docker containers:
2022-07-31T15:02:21.923Z info: Azurite Blob service is starting on 127.0.0.1:10000
2022-07-31T15:02:21.924Z info: AccountDataStore:init() Refresh accounts from environment variable AZURITE_ACCOUNTS with value undefined
2022-07-31T15:02:21.924Z info: AccountDataStore:init() Fallback to default emulator account devstoreaccount1.
2022-07-31T15:02:21.942Z info: BlobGCManager:start() Starting BlobGCManager. Set status to Initializing.
2022-07-31T15:02:21.942Z info: BlobGCManager:start() Trigger mark and sweep loop. Set status to Running.
2022-07-31T15:02:21.942Z info: BlobGCManager:markSweepLoop() Start next mark and sweep.
2022-07-31T15:02:21.942Z info: BlobGCManager:markSweep() Get all extents.
2022-07-31T15:02:21.943Z info: BlobGCManager:start() BlobGCManager successfully started.
2022-07-31T15:02:21.952Z info: BlobGCManager:markSweep() Got 0 extents.
2022-07-31T15:02:21.952Z info: BlobGCManager:markSweep() Get referred extents.
2022-07-31T15:02:21.952Z info: BlobGCManager:markSweep() Got referred extents, unreferenced extents count is 0.
2022-07-31T15:02:21.952Z info: BlobGCManager:markSweepLoop() Mark and sweep finished, taken 10ms.
2022-07-31T15:02:21.952Z info: BlobGCManager:markSweepLoop() Sleep for 600000ms.
2022-07-31T15:02:21.955Z info: Azurite Blob service successfully listens on http://127.0.0.1:10000
2022-07-31T15:02:21.957Z info: Azurite Queue service is starting on 127.0.0.1:10001
2022-07-31T15:02:21.958Z info: AccountDataStore:init() Refresh accounts from environment variable AZURITE_ACCOUNTS with value undefined
2022-07-31T15:02:21.958Z info: AccountDataStore:init() Fallback to default emulator account devstoreaccount1.
2022-07-31T15:02:21.970Z info: QueueGCManager:start() Starting QueueGCManager, set status to Initializing
2022-07-31T15:02:21.970Z info: QueueGCManager:start() Trigger mark and sweep loop, set status to Running.
2022-07-31T15:02:21.970Z info: QueueGCManager:markSweepLoop() Start new mark and sweep.
2022-07-31T15:02:21.970Z info: QueueGCManger:markSweep() Get all extents.
2022-07-31T15:02:21.970Z info: QueueGCManager:start() QueueGCManager successfully started.
2022-07-31T15:02:21.970Z info: QueueGCManager:marksweep() Get 0 extents.
2022-07-31T15:02:21.970Z info: QueueGCManager:markSweep() Get referred extents, then remove from allExtents.
2022-07-31T15:02:21.971Z info: QueueGCManager:markSweep() Got referred extents, unreferenced extents count is 0.
2022-07-31T15:02:21.971Z info: QueueGCManager:markSweepLoop() Mark and sweep finished, take 1ms.
2022-07-31T15:02:21.971Z info: QueueGCManager:markSweepLoop() Sleep for 60000
2022-07-31T15:02:21.972Z info: Azurite Queue service successfully listens on http://127.0.0.1:10001
2022-07-31T15:02:21.974Z info: Azurite Table service is starting on 127.0.0.1:10002
2022-07-31T15:02:21.974Z info: AccountDataStore:init() Refresh accounts from environment variable AZURITE_ACCOUNTS with value undefined
2022-07-31T15:02:21.974Z info: AccountDataStore:init() Fallback to default emulator account devstoreaccount1.
2022-07-31T15:02:21.980Z info: Azurite Table service successfully listens on http://127.0.0.1:10002
2022-07-31T15:02:34.704Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: TableStorageContextMiddleware: RequestMethod=POST RequestURL=http://127.0.0.1/devstoreaccount1/Tables RequestHeaders:{"content-type":"application/json;odata=nometadata","accept":"application/json;odata=minimalmetadata","x-ms-version":"2019-02-02","dataserviceversion":"3.0","accept-encoding":"gzip,deflate","user-agent":"Microsoft Azure Storage Explorer/1.24.3 (win32) azsdk-js-data-tables/13.1.1 core-rest-pipeline/1.8.0 Node/v16.13.2 OS/(ia32-Windows_NT-10.0.19044)","x-ms-client-request-id":"08619bf2-42a8-4a46-9ae3-79a13f97bd64","x-ms-date":"Sun, 31 Jul 2022 15:02:34 GMT","content-length":"42","authorization":"SharedKeyLite devstoreaccount1:jymCR9Xe53f3qvh0PLdlPvl5g2Y6aPxImTuhmUgRE0k=","host":"127.0.0.1:10002","connection":"keep-alive"} ClientIP=127.0.0.1 Protocol=http HTTPVersion=1.1
2022-07-31T15:02:34.704Z d6a0a9a9-ceff-4912-a798-1033d125db35 debug: tableStorageContextMiddleware: Dispatch pattern string: /Tables
2022-07-31T15:02:34.704Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: tableStorageContextMiddleware: Account=devstoreaccount1 tableName=undefined
2022-07-31T15:02:34.704Z d6a0a9a9-ceff-4912-a798-1033d125db35 verbose: DispatchMiddleware: Dispatching request...
2022-07-31T15:02:34.704Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: DispatchMiddleware: Operation=Table_Create
2022-07-31T15:02:34.704Z d6a0a9a9-ceff-4912-a798-1033d125db35 verbose: AuthenticationMiddlewareFactory:createAuthenticationMiddleware() Validating authentications.
2022-07-31T15:02:34.704Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: TableSharedKeyLiteAuthenticator:validate() Start validation against account shared key authentication.
2022-07-31T15:02:34.705Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: TableSharedKeyLiteAuthenticator:validate() [STRING TO SIGN]:"Sun, 31 Jul 2022 15:02:34 GMT\n/devstoreaccount1/devstoreaccount1/Tables"
2022-07-31T15:02:34.705Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: TableSharedKeyLiteAuthenticator:validate() Calculated authentication header based on key1: SharedKeyLite devstoreaccount1:jymCR9Xe53f3qvh0PLdlPvl5g2Y6aPxImTuhmUgRE0k=
2022-07-31T15:02:34.706Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: TableSharedKeyLiteAuthenticator:validate() Signature 1 matched.
2022-07-31T15:02:34.706Z d6a0a9a9-ceff-4912-a798-1033d125db35 verbose: DeserializerMiddleware: Start deserializing...
2022-07-31T15:02:34.709Z d6a0a9a9-ceff-4912-a798-1033d125db35 debug: deserialize(): Raw request body string is (removed all empty characters) {"TableName":"UserBestSeasonScoreRecords"}
2022-07-31T15:02:34.709Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: HandlerMiddleware: DeserializedParameters={"options":{"queryOptions":{},"requestId":"08619bf2-42a8-4a46-9ae3-79a13f97bd64","dataServiceVersion":"3.0"},"version":"2019-02-02","tableProperties":{"tableName":"UserBestSeasonScoreRecords"},"body":"ReadableStream"}
2022-07-31T15:02:34.710Z d6a0a9a9-ceff-4912-a798-1033d125db35 verbose: SerializerMiddleware: Start serializing...
2022-07-31T15:02:34.711Z d6a0a9a9-ceff-4912-a798-1033d125db35 debug: Serializer: Raw response body string is {"odata.metadata":"http://127.0.0.1:10002/devstoreaccount1/$metadata#Tables/@Element","TableName":"UserBestSeasonScoreRecords"}
2022-07-31T15:02:34.711Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: Serializer: Start returning stream body.
2022-07-31T15:02:34.712Z d6a0a9a9-ceff-4912-a798-1033d125db35 info: EndMiddleware: End response. TotalTimeInMS=9 StatusCode=201 StatusMessage=Created Headers={"server":"Azurite-Table/3.17.1","content-type":"application/json;odata=minimalmetadata","x-ms-client-request-id":"08619bf2-42a8-4a46-9ae3-79a13f97bd64","x-ms-request-id":"d6a0a9a9-ceff-4912-a798-1033d125db35","x-ms-version":"2021-06-08","date":"Sun, 31 Jul 2022 15:02:34 GMT","preference-applied":"return-content"}
2022-07-31T15:02:35.035Z c1b147e1-45de-484a-a961-6d45f64f2914 info: TableStorageContextMiddleware: RequestMethod=GET RequestURL=http://127.0.0.1/devstoreaccount1/UserBestSeasonScoreRecords()?$top=1000 RequestHeaders:{"accept":"application/json;odata=minimalmetadata","x-ms-version":"2019-02-02","dataserviceversion":"3.0","accept-encoding":"gzip,deflate","user-agent":"Microsoft Azure Storage Explorer/1.24.3 (win32) azsdk-js-data-tables/13.1.1 core-rest-pipeline/1.8.0 Node/v16.13.2 OS/(ia32-Windows_NT-10.0.19044)","x-ms-client-request-id":"a608baba-1d9e-498a-93c9-fdc24880ce6a","x-ms-date":"Sun, 31 Jul 2022 15:02:35 GMT","authorization":"SharedKeyLite devstoreaccount1:UR7qI5E/1u6gON3GYFNVJyiQ1jLKaa9FjuuyRaE2cKA=","host":"127.0.0.1:10002","connection":"keep-alive"} ClientIP=127.0.0.1 Protocol=http HTTPVersion=1.1
2022-07-31T15:02:35.036Z c1b147e1-45de-484a-a961-6d45f64f2914 debug: tableStorageContextMiddleware: Dispatch pattern string: /UserBestSeasonScoreRecords()
2022-07-31T15:02:35.036Z c1b147e1-45de-484a-a961-6d45f64f2914 info: tableStorageContextMiddleware: Account=devstoreaccount1 tableName=UserBestSeasonScoreRecords
2022-07-31T15:02:35.036Z c1b147e1-45de-484a-a961-6d45f64f2914 verbose: DispatchMiddleware: Dispatching request...
2022-07-31T15:02:35.036Z c1b147e1-45de-484a-a961-6d45f64f2914 info: DispatchMiddleware: Operation=Table_QueryEntities
2022-07-31T15:02:35.037Z c1b147e1-45de-484a-a961-6d45f64f2914 verbose: AuthenticationMiddlewareFactory:createAuthenticationMiddleware() Validating authentications.
2022-07-31T15:02:35.037Z c1b147e1-45de-484a-a961-6d45f64f2914 info: TableSharedKeyLiteAuthenticator:validate() Start validation against account shared key authentication.
2022-07-31T15:02:35.037Z c1b147e1-45de-484a-a961-6d45f64f2914 info: TableSharedKeyLiteAuthenticator:validate() [STRING TO SIGN]:"Sun, 31 Jul 2022 15:02:35 GMT\n/devstoreaccount1/devstoreaccount1/UserBestSeasonScoreRecords()"
2022-07-31T15:02:35.037Z c1b147e1-45de-484a-a961-6d45f64f2914 info: TableSharedKeyLiteAuthenticator:validate() Calculated authentication header based on key1: SharedKeyLite devstoreaccount1:UR7qI5E/1u6gON3GYFNVJyiQ1jLKaa9FjuuyRaE2cKA=
2022-07-31T15:02:35.037Z c1b147e1-45de-484a-a961-6d45f64f2914 info: TableSharedKeyLiteAuthenticator:validate() Signature 1 matched.
2022-07-31T15:02:35.037Z c1b147e1-45de-484a-a961-6d45f64f2914 verbose: DeserializerMiddleware: Start deserializing...
2022-07-31T15:02:35.038Z c1b147e1-45de-484a-a961-6d45f64f2914 info: HandlerMiddleware: DeserializedParameters={"options":{"queryOptions":{"top":1000},"requestId":"a608baba-1d9e-498a-93c9-fdc24880ce6a","dataServiceVersion":"3.0"},"version":"2019-02-02"}
2022-07-31T15:02:35.038Z c1b147e1-45de-484a-a961-6d45f64f2914 debug: TableHandler:queryEntities() Raw response string is "{\"odata.metadata\":\"http://127.0.0.1:10002/devstoreaccount1/$metadata#Tables/@Element\",\"value\":[]}"
2022-07-31T15:02:35.038Z c1b147e1-45de-484a-a961-6d45f64f2914 verbose: SerializerMiddleware: Start serializing...
2022-07-31T15:02:35.039Z c1b147e1-45de-484a-a961-6d45f64f2914 info: Serializer: Start returning stream body.
2022-07-31T15:02:35.044Z c1b147e1-45de-484a-a961-6d45f64f2914 info: EndMiddleware: End response. TotalTimeInMS=9 StatusCode=200 StatusMessage=OK Headers={"server":"Azurite-Table/3.17.1","content-type":"application/json;odata=minimalmetadata","x-ms-client-request-id":"a608baba-1d9e-498a-93c9-fdc24880ce6a","x-ms-request-id":"c1b147e1-45de-484a-a961-6d45f64f2914","x-ms-version":"2021-06-08","date":"Sun, 31 Jul 2022 15:02:35 GMT"}
2022-07-31T15:02:44.699Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: TableStorageContextMiddleware: RequestMethod=POST RequestURL=http://127.0.0.1/devstoreaccount1/Tables RequestHeaders:{"content-type":"application/json;odata=nometadata","accept":"application/json;odata=minimalmetadata","x-ms-version":"2019-02-02","dataserviceversion":"3.0","accept-encoding":"gzip,deflate","user-agent":"Microsoft Azure Storage Explorer/1.24.3 (win32) azsdk-js-data-tables/13.1.1 core-rest-pipeline/1.8.0 Node/v16.13.2 OS/(ia32-Windows_NT-10.0.19044)","x-ms-client-request-id":"6169df15-1101-4b92-b9f7-292bc8079c92","x-ms-date":"Sun, 31 Jul 2022 15:02:44 GMT","content-length":"23","authorization":"SharedKeyLite devstoreaccount1:ZMdHb8Rqt2GymJkexrTZLpl/AvShO8QtgDg81PVSSdQ=","host":"127.0.0.1:10002","connection":"keep-alive"} ClientIP=127.0.0.1 Protocol=http HTTPVersion=1.1
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 debug: tableStorageContextMiddleware: Dispatch pattern string: /Tables
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: tableStorageContextMiddleware: Account=devstoreaccount1 tableName=undefined
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 verbose: DispatchMiddleware: Dispatching request...
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: DispatchMiddleware: Operation=Table_Create
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 verbose: AuthenticationMiddlewareFactory:createAuthenticationMiddleware() Validating authentications.
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: TableSharedKeyLiteAuthenticator:validate() Start validation against account shared key authentication.
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: TableSharedKeyLiteAuthenticator:validate() [STRING TO SIGN]:"Sun, 31 Jul 2022 15:02:44 GMT\n/devstoreaccount1/devstoreaccount1/Tables"
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: TableSharedKeyLiteAuthenticator:validate() Calculated authentication header based on key1: SharedKeyLite devstoreaccount1:ZMdHb8Rqt2GymJkexrTZLpl/AvShO8QtgDg81PVSSdQ=
2022-07-31T15:02:44.700Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: TableSharedKeyLiteAuthenticator:validate() Signature 1 matched.
2022-07-31T15:02:44.701Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 verbose: DeserializerMiddleware: Start deserializing...
2022-07-31T15:02:44.701Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 debug: deserialize(): Raw request body string is (removed all empty characters) {"TableName":"Seasons"}
2022-07-31T15:02:44.702Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: HandlerMiddleware: DeserializedParameters={"options":{"queryOptions":{},"requestId":"6169df15-1101-4b92-b9f7-292bc8079c92","dataServiceVersion":"3.0"},"version":"2019-02-02","tableProperties":{"tableName":"Seasons"},"body":"ReadableStream"}
2022-07-31T15:02:44.703Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 error: ErrorMiddleware: Received a MiddlewareError, fill error information to HTTP response
2022-07-31T15:02:44.703Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 error: ErrorMiddleware: ErrorName=StorageError ErrorMessage="The table specified already exists." ErrorHTTPStatusCode=409 ErrorHTTPStatusMessage=undefined ErrorHTTPHeaders={"x-ms-error-code":"TableAlreadyExists","x-ms-request-id":"7d56be49-c47d-4ddc-aa29-3b4dfd681e62","x-ms-version":"2021-06-08"} ErrorHTTPBody="{\"odata.error\":{\"code\":\"TableAlreadyExists\",\"message\":{\"lang\":\"en-US\",\"value\":\"The table specified already exists.\\nRequestId:7d56be49-c47d-4ddc-aa29-3b4dfd681e62\\nTime:2022-07-31T15:02:44.703Z\"}}}" ErrorStack="\"StorageError: The table specified already exists.\\n at Function.getTableAlreadyExists (C:\\\\snapshot\\\\_azure_azurite\\\\dist\\\\src\\\\table\\\\errors\\\\StorageErrorFactory.js:20:16)\\n at LokiTableMetadataStore.createTable (C:\\\\snapshot\\\\_azure_azurite\\\\dist\\\\src\\\\table\\\\persistence\\\\LokiTableMetadataStore.js:115:49)\\n at TableHandler.create (C:\\\\snapshot\\\\_azure_azurite\\\\dist\\\\src\\\\table\\\\handlers\\\\TableHandler.js:38:34)\\n at C:\\\\snapshot\\\\_azure_azurite\\\\dist\\\\src\\\\table\\\\generated\\\\middleware\\\\HandlerMiddlewareFactory.js:58:18\\n at C:\\\\snapshot\\\\_azure_azurite\\\\dist\\\\src\\\\table\\\\generated\\\\ExpressMiddlewareFactory.js:77:63\\n at Layer.handle [as handle_request] (C:\\\\snapshot\\\\_azure_azurite\\\\node_modules\\\\express\\\\lib\\\\router\\\\layer.js:95:5)\\n at trim_prefix (C:\\\\snapshot\\\\_azure_azurite\\\\node_modules\\\\express\\\\lib\\\\router\\\\index.js:328:13)\\n at C:\\\\snapshot\\\\_azure_azurite\\\\node_modules\\\\express\\\\lib\\\\router\\\\index.js:289:7\\n at Function.process_params (C:\\\\snapshot\\\\_azure_azurite\\\\node_modules\\\\express\\\\lib\\\\router\\\\index.js:348:12)\\n at next (C:\\\\snapshot\\\\_azure_azurite\\\\node_modules\\\\express\\\\lib\\\\router\\\\index.js:280:10)\""
2022-07-31T15:02:44.704Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 error: ErrorMiddleware: Set HTTP code: 409
2022-07-31T15:02:44.704Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 error: ErrorMiddleware: Set HTTP Header: x-ms-error-code=TableAlreadyExists
2022-07-31T15:02:44.704Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 error: ErrorMiddleware: Set HTTP Header: x-ms-request-id=7d56be49-c47d-4ddc-aa29-3b4dfd681e62
2022-07-31T15:02:44.704Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 error: ErrorMiddleware: Set HTTP Header: x-ms-version=2021-06-08
2022-07-31T15:02:44.704Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 error: ErrorMiddleware: Set content type: application/json;odata=minimalmetadata;streaming=true;charset=utf-8
2022-07-31T15:02:44.704Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 error: ErrorMiddleware: Set HTTP body: "{\"odata.error\":{\"code\":\"TableAlreadyExists\",\"message\":{\"lang\":\"en-US\",\"value\":\"The table specified already exists.\\nRequestId:7d56be49-c47d-4ddc-aa29-3b4dfd681e62\\nTime:2022-07-31T15:02:44.703Z\"}}}"
2022-07-31T15:02:44.704Z 7d56be49-c47d-4ddc-aa29-3b4dfd681e62 info: EndMiddleware: End response. TotalTimeInMS=5 StatusCode=409 StatusMessage=Conflict Headers={"server":"Azurite-Table/3.17.1","x-ms-error-code":"TableAlreadyExists","x-ms-request-id":"7d56be49-c47d-4ddc-aa29-3b4dfd681e62","x-ms-version":"2021-06-08","content-type":"application/json;odata=minimalmetadata;streaming=true;charset=utf-8"}
2022-07-31T15:02:48.930Z info: Azurite Blob service is closing...
2022-07-31T15:02:48.931Z info: Azurite Queue service is closing...
2022-07-31T15:02:48.931Z info: Azurite Table service is closing...
2022-07-31T15:02:48.933Z info: BlobGCManager:close() Start closing BlobGCManager. Set status to Closing.
2022-07-31T15:02:48.933Z info: QueueGCManager:close() Start closing QueueGCManager, set status to Closing.
2022-07-31T15:02:48.933Z info: BlobGCManager:start() Mark and sweep loop is closed.
2022-07-31T15:02:48.933Z info: BlobGCManager:close() BlobGCManager successfully closed. Set status to Closed.
2022-07-31T15:02:48.933Z info: QueueGCManager:start() Mark and sweep loop is closed.
2022-07-31T15:02:48.933Z info: QueueGCManager:close() QueueGCManager successfully closed, set status to Closed.
2022-07-31T15:02:48.934Z info: Azurite Blob service successfully closed
2022-07-31T15:02:48.934Z info: Azurite Queue service successfully closed
2022-07-31T15:02:49.705Z info: Azurite Table service successfully closed
Have you found a mitigation/solution?
Not yet - since I need these functional tests to be fully automated and the table names should match production, I need the table creation to work in this scenario. As a short-term workaround, I could try a different name that doesn't "collide" for the "Seasons" table, but this is not a tenable long term solution.
Hi, this looks like a duplicate of #1584 which was fixed in #1598 . It should be available in the next release.
Confirmed this is fixed in version 3.18.0.