### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current Behavior

As part of our test suite, we setup DynamoDB tables starting from initial table creation to a set of updates we've made over time. The tables are created and updates are applied successfully, so we begin to run our tests but when our tests run quickly, we end up getting an `Index not found` error returned when searching against a global secondary index that was created as part of an update table operation.

### Expected Behavior

The expected behavior should be that we should be able to query against the updated secondary index that has been created in a table.

### How are you starting LocalStack?

With a `docker run` command

### Steps To Reproduce

#### How are you starting localstack (e.g., `bin/localstack` command, arguments, or `docker-compose.yml`)

    docker run localstack/localstack

#### Client commands (e.g., AWS SDK code snippet, or sequence of "awslocal" commands)

We have an internal set of migrations we run against DynamoDB that get the tables to the state that we expect. The main issue pops up when we do a replication update as part of a table update operation and then do the global secondary key creation. When doing the replication update, the schema gets cached internally and a bad version of the schema stays valid until the initial TTL expires (20s default).

### Environment

```markdown
- OS: Mac OS Ventura (Docker 4.23.0)
- LocalStack: latest (also tried 2.2.0, and some older versions)
```


### Anything else?

_No response_
target_region = details.get("RegionName")
                        
                        if target_region not in get_valid_regions_for_service("dynamodb"):
                            raise ValidationException(f"Region {target_region} is not supported")
                        match key:
                            case "Create":
                                if target_region in replicas.keys():
                                    raise ValidationException(
                                        f"Failed to create a the new replica of table with name: '{table_name}' because one or more replicas already existed as tables."
                                    )
                                replicas[target_region] = ReplicaDescription(
                                    RegionName=target_region,
                                    KMSMasterKeyId=details.get("KMSMasterKeyId"),
                                    ProvisionedThroughputOverride=details.get(
                                        "ProvisionedThroughputOverride"
                                    ),
                                    GlobalSecondaryIndexes=details.get("GlobalSecondaryIndexes"),
                                    ReplicaStatus=ReplicaStatus.ACTIVE,
                                )
                            case "Delete":
                                try:
                                    replicas.pop(target_region)
                                except KeyError:
                                    raise ValidationException(
                                        "Update global table operation failed because one or more replicas were not part of the global table."
                                    )
                store.REPLICAS[table_name] = replicas
            
            schema = SchemaExtractor.get_table_schema(
                table_name, context.account_id, global_table_region