Squidex 7.5: Failed to make the update. Another user has made a change. Please reload

I have…

I’m submitting a…

  • [ ] Regression (a behavior that stopped working in a new release)
  • [ x ] Bug report
  • [ ] Performance issue
  • [ ] Documentation issue or request

Current behavior

Upgraded 4.0.7 to 7.5 about 3 months ago, restored backups.
Adding to a certain schema fails.
Failed to make the update. Another user has made a change. Please reload.

Expected behavior

Add new field to schema

Minimal reproduction of the problem

N/A

Environment

App Name:

  • [ ] Self hosted with docker
  • [ x ] Self hosted with IIS
  • [ ] Self hosted with other version
  • [ ] Cloud version

Version: [7.5.0]

  • Squidex: 7.5

  • MongoDB: 4.0.10

  • .NET SDK:
    Version: 7.0.203

  • Runtime Environment:
    OS Name: ubuntu
    OS Version: 18.04
    OS Platform: Linux
    RID: ubuntu.18.04-x64
    Base Path: /usr/share/dotnet/sdk/7.0.203/

    Host:
    Version: 7.0.5
    Architecture: x64

Browser:

  • [ ] Chrome (desktop)
  • [ ] Chrome (Android)
  • [ ] Chrome (iOS)
  • [ ] Firefox
  • [ ] Safari (desktop)
  • [ ] Safari (iOS)
  • [ ] IE
  • [ ] Edge

Others:

I have tried:
Refreshing Browser, Log out & in,
Restarting MongoDB,
Restarting Squidex,

Chrome network Tab error:

{
    "message": "Entity (fca29555-df44-43d1-a77e-0beadca86237--e41cf7d0-6b70-46c7-bd14-1b2a5a208797) requested version 434, but found 444.",
    "errorCode": "OBJECT_VERSION_CONFLICT",
    "traceId": "00-e8f27479b3dbbc78ab970e9f53b88ac3-e79f9d0b62f9288d-01",
    "type": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.10",
    "statusCode": 412
}

appsettings.json

...

"clustering": {
  // Defines whether the current instance is a worker. You should have only one worker in your deployment.
 "worker": true
},

...

"rebuild": {
  // Set to true to rebuild apps.
  "apps": true,

  // Set to true to rebuild assets.
  "assets": true,

  // Set to true to create dummy asset files if they do not exist. Useful when a backup fail.
  "assetFiles": true,

  // Set to true to rebuild contents.
  "contents": true,

  // Set to true to rebuild rules.
  "rules": true,

  // Set to true to rebuild schemas.
  "schemas": true,
        
  // Indexes ?
  "indexes": true
},

Why have you set all rebuild options to true? This is more like a recovery option and I was actually hoping that it would solve your problem. Do you see the stack trace of this error in your container logs?

Hi Sebastian,
I was hoping the same thing hence why I changed these settings (to all true) and restarted the Squidex Service.
No I dont see the stack trace. I can see the POST request trying to be made but that is it.

I was wondering if setting the app mode to "isReadonly": true, restarting it, and setting it back to false if that would do the trick ?

Are you sure your environment variables are named properly?

Yes, based on version 7.5.0 appsettings.json

It would be more clever to show your env variables.

Hi Sebastian

{
"mode": {
    // Use this flag to set Portal to readonly, e.g. when you deploy a second instance for migration.
    "isReadonly": false
},

"urls": {
    // Set the base url of your application, to generate correct urls in background process.
    "baseUrl": "https://<url>/",
    // "baseUrl": "http://localhost:5000/",

    // The base path when running Portal behind a reverse proxy like nginx under a subfolder / subpath.
    "basePath": "./",

    // Set it to true to redirect the user from http to https permanently.
    "enforceHttps": true,

    // Set it to true to return a 400 if the host does not match.
    "enforceHost": false,

    //  A list of known proxies to make forward headers safer.
    "knownProxies": [
        "http://localhost:5000/"
    ],

    // Set it to true to use the X-Forwarded- headers for host name and scheme.
    "enableForwardHeaders": true,

    // A list of trusted hosts for redirects.
    "trustedHosted": []
},

"fullText": {
    // Define the type of the full text store.
    //
    // SUPPORTED: elastic (ElasticSearch), azure (Azure Cognitive Search), default. Default: default
    "type": "default",

    "elastic": {
        // The configuration to your elastic search cluster.
        //
        // Read More: https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/client-configuration.html
        "configuration": "http://localhost:9200",

        // The name of the index.
        "indexName": "squidex",

        // True, to use the Open Search client.
        "openSearch": false
    },

    "azure": {
        // The URL to your azure search instance.
        //
        // Read More: https://docs.microsoft.com/en-us/azure/search/search-create-service-portal#get-a-key-and-url-endpoint
        "serviceEndpoint": "https://<name>.search.windows.net",

        // The api key. See link above.
        "apiKey": "",

        // The name of the index.
        "indexName": "squidex"
    }
},

// Define optional paths to plugins.
"plugins": [
    "Squidex.Extensions.dll"
],

"caching": {
    // Set to true, to use strong etags.
    "strongETag": false,

    // Restrict the surrogate keys to the number of characters.
    "maxSurrogateKeysSize": 0,

    "replicated": {
        // Set to true to enable a replicated cache for app, schemas and rules. Increases performance but reduces consistency.
        "enable": true
    },

    "domainObjects": {
        // The cache duration for domain objects.
        "cacheDuration": "00:10:00"
    }
},

"messaging": {
    "type": "MongoDb"
},

"scripting": {
    // The timeout for the whole script execution.
    "timeoutExecution": "00:00:04",

    // The timeout for the synchronous part of the script.
    "timeoutScript": "00:00:00.200"
},

"languages": {
    // Use custom languages where the key is the language code and the value is the english name.
    "custom": ""
},

"rules": {
    // The timeout to execute rule actions.
    "executionTimeoutInSeconds": 10,

    // The cache duration for rules.
    "rulesCacheDuration": "00:00:10"
},

"ui": {
    // Regex suggestions for the UI
    "regexSuggestions": {
        // Regex for emails.
        "Email": "^[a-zA-Z0-9.!#$%&’*+\\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)*$",
        // Regex for phone numbers.
        "Phone": "^\\(*\\+*[1-9]{0,3}\\)*-*[1-9]{0,3}[-. /]*\\(*[2-9]\\d{2}\\)*[-. /]*\\d{3}[-. /]*\\d{4} *e*x*t*\\.* *\\d{0,4}$",
        // Regex for slugs (e.g. hello-world).
        "Slug": "^[a-z0-9]+(\\-[a-z0-9]+)*$",
        // Regex for urls.
        "Url": "^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:\\/?#%[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$"
    },

    // True if only admins should be able to create apps.
    "onlyAdminsCanCreateApps": true,

    "map": {
        // Define the type of the geolocation service.
        //
        // SUPPORTED: GoogleMaps, OSM
        "type": "OSM",

        "googleMaps": {
            // The optional google maps API key. CREATE YOUR OWN PLEASE.
            "key": "<KEY>"
        }
    },

    // Redirect to login automatically.
    "redirectToLogin": false,

    // Hide the news dialog.
    "hideNews": true,

    // Hide all onboarding tooltips and dialogs.
    "hideOnboarding": true,

    // Hide the today and now button.
    "hideDateButtons": false,

    // Hide the Local/UTC button
    "hideDateTimeModeButton": false,

    // Show the exposed values as information on the apps overview page.
    "showInfo": false,

    // The number of content items for dropdown selector.
    "referencesDropdownItemCount": 100
},

"email": {
    "smtp": {
        // The host name to your email server.
        "server": "<smtp>",

        // The sender email address.
        "sender": "<sendername>",

        // The username to authenticate to your email server.
        "username": "<username>",

        // The password to authenticate to your email server.
        "password": "<passw>",

        // Always use SSL if possible.
        "enableSsl": true,

        // The port to your email server.
        "port": <port>
    },
    "notifications": {
        // The email subject when a new user is added as contributor to an app.
        "newUserSubject": "<newSubject>",

        // The email body when a new user is added as contributor to an app.
        "newUserBody": "<newBody>",

        // The email subject when an existing user is added as contributor to an app.
        "existingUserSubject": "<subject>",

        // The email body when an existing user is added as contributor to an app.
        "existingUserBody": "<body>",

        // The email subject when a new user is added as contributor to a team.
        "newUserTeamSubject": "<subject>",

        // The email body when a new user is added as contributor to a team.
        "newUserTeamBody": "<body>",

        // The email subject when an existing user is added as contributor to a team.
        "existingTeamUserSubject": "<subject>",

        // The email body when an existing user is added as contributor to a team.
        "existingTeamUserBody": "<body>",

        // The email subject when app usage reached
        "usageSubject": "<subject>",

        // The email body when app usage reached
        "usageBody": "<body>"
    }
},

// Configure notifo if you want to have support for custom notifications.
"notifo": {
    // The ID of the app in notifo.
    "appId": "",
    // The API key for your app in notifo.
    "apiKey": "",
    // The API URL.
    "apiUrl": "https://app.notifo.io"
},

"robots": {
    // The text for the robots.txt file
    "text": "User-agent: *\nAllow: /api/assets/*"
},

"apps": {
    // True to delete apps permanently.
    //
    // This process can take a while and is executed in the background.
    "deletePermanent": false
},

"contents": {
    // True to enable memory caching.
    //
    // This is only supported in GraphQL with the @cache(duration: 1000) directive.
    "canCache": true,

    // True to enable an optimization for self hosting.
    //
    // Creates one database per app and one collection per schema. Slows down inserts, but you can create custom indexes.
    "optimizeForSelfHosting": false,

    // False to not use transactions. Improves performance.
    //
    // Warning: Can cause consistency issues.
    "useTransactions": false,

    // The default page size if not specified by a query.
    //
    // Warning: Can slow down queries if increased.
    "defaultPageSize": 1000,

    // The maximum number of items to return for each query.
    // 
    // Warning: Use pagination and not large number of items.
    "maxResults": 1000,

    // The timeout when searching for single items in the database.
    "timeoutFind": "00:00:01",

    // The timeout when searching for multiple items in the database.
    "timeoutQuery": "00:00:05"
},

"assets": {
    // True to enable memory caching.
    //
    // This is only supported in GraphQL with the @cache(duration: 1000) directive.
    "canCache": true,

    // The default page size if not specified by a query.
    //
    // Warning: Can slow down queries if increased.
    "defaultPageSize": 500,

    // The maximum number of items to return for each query.
    // 
    // Warning: Use pagination and not large number of items.
    "maxResults": 500,

    // The maximum file size in bytes. Default: 5MB
    "maxSize": 5242880,

    // True to delete assets recursively.
    "deleteRecursive": true,

    // True to delete assets files permanently.
    "deletePermanent": false,

    // The timeout when searching for single items in the database.
    "timeoutFind": "00:00:01",

    // The timeout when searching for multiple items in the database.
    "timeoutQuery": "00:00:05",

    // Create one folder per app.
    //
    // WARNING: If you change this parameter, previous assets are not available anymore.
    "folderPerApp": false,

    // Points to another Squidex instance, which should be configured as resizer.
    "resizerUrl": ""
},

"logging": {
    // The log level of the implementation adapter.
    //
    // Trace, Debug, Information, Warning, Error, Fatal
    "level": "Information",

    // The log level of the default log adapter.
    "logLevel": {
        "default": "Error",

        // Only logs issued tokens and general request information.
        "OpenIddict": "Warning",
        "Microsoft.AspNetCore": "Warning",
        "Microsoft.Identity": "Warning",
        "Runtime": "Warning"
    },

    // Setting the flag to true, enables well formatteds json logs.
    "human": true,

    // Set to true, to use colors.
    "colors": true,

    // Set to false to disable logging of http requests.
    "logRequests": true,

    // False to disable the log store.
    "storeEnabled": true,

    // The number of days request log items will be stored.
    "storeRetentionInDays": 30,

    "stackdriver": {
      // True, to enable stackdriver integration.
      "enabled": false,

      // The ID of your Google Cloud project.
      "projectId": ""
    },

    "otlp": {
        // True, to enable OpenTelemetry Protocol integration.
        "enabled": false,

        // The endpoint to the agent.
        "endpoint": "",

        // The sample rate as double. 0.5 writes every second trace.
        "sampling": 1.0
    },

    "zipkin": {
        // True, to enable Zipkin integration.
        "enabled": false,

        "endpoint": "http://localhost:9411/api/v2/spans"
    },

    "applicationInsights": {
        // True, to enable application insights integraon.
        "enabled": false,

        "connectionString": "InstrumentationKey=[key];IngestionEndpoint=https://[datacenter].in.applicationinsights.azure.com/"
    }
},

"diagnostics": {
    // The path to the dotnet-dump tool binary.
    // 
    // REMARKS: Will be set automatically in the official Docker image.
    "dumpTool": "",

    // When more memory is allocated that the defined value (in MB) a dump will be created once automatically and written to the asset store.
    "dumpTriggerInMB": 0,

    // The path to the dotnet-gcdump tool binary.
    // 
    // REMARKS: Will be set automatically in the official Docker image.
    "gcdumpTool": "",

    // When more memory is allocated than the defined value (in MB) a gcdump will be created once automatically and written to the asset store.
    "gcumpTriggerInMB": 0,

    "gc": {
        // The maximum number of megabyte that the process can consume until it is marked as not healthy.
        "threshold": 8192
    }
},

"assetStore": {
    // Define the type of the read store. 
    // 
    // SUPPORTED: Folder (local folder), MongoDb (GridFS), GoogleCloud (hosted in Google Cloud only), AzureBlob, AmazonS3, FTP (not recommended).
    "type": "Folder",

    "folder": {
        // The relative or absolute path to the folder to store the assets.
        "path": "Assets"
    },
    "googleCloud": {
        // The name of the bucket in google cloud store.
        "bucket": "squidex-assets"
    },
    "azureBlob": {
        // The name of the container in the Azure Blob Storage
        "containerName": "squidex-assets",

        // The connection string to the azure storage service.
        "connectionString": "UseDevelopmentStorage=true"
    },
    "amazonS3": {
        // The url of the S3 API service. Leave it empty if using the one provided by Amazon
        "serviceUrl": "",

        // The name of your bucket.
        "bucket": "squidex-test",

        // The optional folder within the bucket.
        "bucketFolder": "squidex-assets",

        // The region name of your bucket.
        "regionName": "eu-central-1",

        // The access key for your user.
        //
        // Read More: https://supsystic.com/documentation/id-secret-access-key-amazon-s3/
        "accessKey": "<MY_KEY>",

        // The secret key for your user.
        //
        // Read More: https://supsystic.com/documentation/id-secret-access-key-amazon-s3/
        "secretKey": "<MY_SECRET>",

        // True, to disable the SigV4 payload signing.
        //
        // This might be needed for some S3-compatible storage solutions, for example Cloudflare R2.
        "disablePayloadSigning": false,

        // Force path style property for AmazonS3Config
        "forcePathStyle": false
    },
    "mongoDb": {
        // The connection string to your Mongo Server.
        // 
        // Read More: https://docs.mongodb.com/manual/reference/connection-string/
        // "configuration": "mongodb://localhost",
        "configuration": "mongodb://user:passw@localhost:27017",

        // The name of the event store database.
        "database": "SquidexAssets_7_5",

        // The name of the Mongo Grid FS bucket.
        "bucket": "fs"
    },
    "ftp": {
        //The host of the ftp service
        "serverHost": "",

        //The host of the ftp service
        "serverPort": "21",

        // Credentials.
        "username": "",
        "password": "",

        // The relative or absolute path to the folder to store the assets.
        "path": "Assets"
    },
    // Allow to expose the url in GraphQL URL.
    "exposeSourceUrl": false
},

"clustering": {
    // Defines whether the current instance is a worker. You should have only one worker in your deployment.
    "worker": true
},

"eventStore": {
    // Define the type of the event store. 
    // 
    // SUPPORTED: MongoDb
    "type": "MongoDb",

    "mongoDb": {
        // The connection string to your Mongo Server.
        // 
        // Read More: https://docs.mongodb.com/manual/reference/connection-string/
        // "configuration": "mongodb://localhost",
        "configuration": "mongodb://user:passw@localhost:27017",

        // The name of the event store database.
        "database": "Squidex_7_5"
    }
},

"store": {
    // Define the type of the read store. 
    // 
    // SUPPORTED: MongoDb
    "type": "MongoDb",

    "mongoDb": {
        // The connection string to your Mongo Server.
        // 
        // Read More: https://docs.mongodb.com/manual/reference/connection-string/
        // "configuration": "mongodb://localhost",
        "configuration": "mongodb://user:passw@localhost:27017",

        // The database for all your content collections (one collection per app).
        "contentDatabase": "SquidexContent_7_5",

        // The database for all your other read collections.
        "database": "Squidex_7_5",

        // Defines how key-value-store values are represented in MongoDB (e.g. app, rule, schema).
        //
        // SUPPORTED: Document, String, Binary (from slow to fast).
        "valueRepresentation": "Undefined",

        "atlas": {
            // The organization id.
            "groupId": "",

            // The name of the cluster.
            "clusterName": "",

            // Credentials to your account.
            "publicKey": "",
            "privateKey": "",

            // True, if you want to enable mongo atlas for full text search instead of MongoDB.
            "fullTextEnabled": false
        }
    }
},

"identity": {
    // Set to true to show PII (Personally Identifiable Information) in the logs.
    "showPII": true,

    // Enable password auth. Set this to false if you want to disable local login, leaving only 3rd party login options.
    "allowPasswordAuth": true,

    // Specifies whether to suppress the generation of X-Frame-Options header which is used to prevent ClickJacking.
    "suppressXFrameOptionsHeader": false,

    // Initial admin user.
    "adminEmail": "<email>",
    "adminPassword": "<passw>",

    // Recreate the admin if it does not exist or the password does not match.
    "adminRecreate": true,

    // Client with all admin permissions.
    "adminClientId": "",
    "adminClientSecret": "",

    // The apps which should be visible on the dashboard for the admin.
    "adminApps": [],

    // Settings for Google auth (keep empty to disable).
    "googleClient": "",
    "googleSecret": "",

    // Settings for Github auth (keep empty to disable).
    "githubClient": "",
    "githubSecret": "",

    // Settings for Microsoft auth (keep empty to disable).3
    //
    // NOTE: Tennant is optional for using a specific AzureAD tenant
    "microsoftClient": "",
    "microsoftSecret": "",
    "microsoftTenant": null,

    // Set this to true if you use multiple domains.
    "multipleDomains": false,

    // Settings for your custom oidc server.
    "oidcName": "OIDC",
    "oidcAuthority": "",
    "oidcClient": "",
    "oidcSecret": "",
    "oidcMetadataAddress": "",
    "oidcScopes": [
        "email"
    ],
    "oidcResponseType": "id_token", // or "code"
    "oidcGetClaimsFromUserInfoEndpoint": false,
    "oidcOverridePermissionsWithCustomClaimsOnLogin": false,
    "oidcOnSignoutRedirectUrl": "",

    // Lock new users automatically, the administrator must unlock them.
    "lockAutomatically": false,

    // The url to you privacy statements, if you host squidex by yourself.
    "privacyUrl": "https://<url>/privacy-policy"
},

"news": {
    // The app name where the news are stored.
    "appName": "news-website",

    // The credentials to the app (Readonly).
    "clientId": "<id>",
    "clientSecret": "<secret>"
},

"translations": {
    "deepl": {
        // The deepl api key if you want to support automated translations.
        "authKey": "",
        "mapping": {
            "zh-TW": "zh-TW",
            "zh-CN": "zh-CN"
        }
    },

    "googleCloud": {
        // The google cloud project id if you want to support automated translations.
        "projectId": ""
    }
},

"rebuild": {
    // Set to true to rebuild apps.
    "apps": false,

    // Set to true to rebuild assets.
    "assets": false,

    // Set to true to create dummy asset files if they do not exist. Useful when a backup fail.
    "assetFiles": false,

    // Set to true to rebuild contents.
    "contents": false,

    // Set to true to rebuild rules.
    "rules": false,

    // Set to true to rebuild schemas.
    "schemas": false,
    
    // Indexes ?
    "indexes": false
},

// A list of configuration values that should be exposed from the info endpoint and in the UI.
"exposedConfiguration": {
    "version": "squidex:version"
},

// Kafka Producer configuration
"kafka": {
    "bootstrapServers": ""
},

// The client information for twitter.
"twitter": {
    "clientId": "",
    "clientSecret": ""
},

// Tthe template repositories
"templates": {
    "repositories": [
        {
            // The url to download readme files.
            "contentUrl": "",

            // The url to the git repository.
            "gitUrl": ""
        }
    ]
}

}

This are just the default appSettings.json. No idea why you post that.

Hi Sebastian,

I are am not sure to what you are referring then ?
We have tried:

  1. Restarted the Squidex.dll
  2. Backup and restore using Squidex
  3. Setting to read only mode, backup & restore, this crashed our mongo, so I reverted the setting back.

We aren’t sure on what to attempt next as there are multiple schema’s effected.
We assume the issue was because of a backup and restore using a mongo dump and not the UI.

What I meant: Squidex prints out the actual config at start. It would have made more sense to print that.

I think the only option here is to send me a copy of your database and I can have a look, when Ihave time.

1 Like
"logLevel": "Information",
"message": "Application started",
"environment": {
    "applicationname": "Squidex",
    "apps:deletepermanent": "False",
    "aspnetcore_environment": "Production",
    "assets:cancache": "True",
    "assets:defaultpagesize": "500",
    "assets:deletepermanent": "False",
    "assets:deleterecursive": "True",
    "assets:folderperapp": "False",
    "assets:maxresults": "500",
    "assets:maxsize": "5242880",
    "assets:resizerurl": "",
    "assets:timeoutfind": "00:00:01",
    "assets:timeoutquery": "00:00:05",
    "assetstore:amazons3:accesskey": "\u003CMY_KEY\u003E",
    "assetstore:amazons3:bucket": "squidex-test",
    "assetstore:amazons3:bucketfolder": "squidex-assets",
    "assetstore:amazons3:disablepayloadsigning": "False",
    "assetstore:amazons3:forcepathstyle": "False",
    "assetstore:amazons3:regionname": "eu-central-1",
    "assetstore:amazons3:secretkey": "\u003CMY_SECRET\u003E",
    "assetstore:amazons3:serviceurl": "",
    "assetstore:azureblob:connectionstring": "UseDevelopmentStorage=true",
    "assetstore:azureblob:containername": "squidex-assets",
    "assetstore:exposesourceurl": "False",
    "assetstore:folder:path": "Assets",
    "assetstore:ftp:password": "",
    "assetstore:ftp:path": "Assets",
    "assetstore:ftp:serverhost": "",
    "assetstore:ftp:serverport": "21",
    "assetstore:ftp:username": "",
    "assetstore:googlecloud:bucket": "squidex-assets",
    "assetstore:mongodb:bucket": "fs",
    "assetstore:mongodb:configuration": "mongodb://<user>:<password>@localhost:27017",
    "assetstore:mongodb:database": "SquidexAssets_Test_23",
    "assetstore:type": "Folder",
    "caching:domainobjects:cacheduration": "00:10:00",
    "caching:maxsurrogatekeyssize": "0",
    "caching:replicated:enable": "True",
    "caching:strongetag": "False",
    "clustering:worker": "True",
    "contentroot": "/www/wwwroot/<dir>/publish_7.5_04-23",
    "contents:cancache": "True",
    "contents:defaultpagesize": "1000",
    "contents:maxresults": "1000",
    "contents:optimizeforselfhosting": "False",
    "contents:timeoutfind": "00:00:01",
    "contents:timeoutquery": "00:00:05",
    "contents:usetransactions": "False",
    "diagnostics:dumptool": "",
    "diagnostics:dumptriggerinmb": "0",
    "diagnostics:gc:threshold": "8192",
    "diagnostics:gcdumptool": "",
    "diagnostics:gcumptriggerinmb": "0",
    "email:notifications:existingteamuserbody": "",
    "email:notifications:existingteamusersubject": "",
    "email:notifications:existinguserbody": "",
    "email:notifications:existingusersubject": "",
    "email:notifications:newuserbody": "",
    "email:notifications:newusersubject": "",
    "email:notifications:newuserteambody": "",
    "email:notifications:newuserteamsubject": "",
    "email:notifications:usagebody": "",
    "email:notifications:usagesubject": "",
    "email:smtp:enablessl": "True",
    "email:smtp:password": "<password>",
    "email:smtp:port": "465",
    "email:smtp:sender": "<emailAddress>",
    "email:smtp:server": "smtp.gmail.com",
    "email:smtp:username": "<username>",
    "environment": "Production",
    "eventstore:mongodb:configuration": "mongodb://<user>:<password>@localhost:27017",
    "eventstore:mongodb:database": "Squidex_Test_23",
    "eventstore:type": "MongoDb",
    "exposedconfiguration:version": "squidex:version",
    "fulltext:azure:apikey": "",
    "fulltext:azure:indexname": "squidex",
    "fulltext:azure:serviceendpoint": "https://\u003Cname\u003E.search.windows.net",
    "fulltext:elastic:configuration": "http://localhost:9200",
    "fulltext:elastic:indexname": "squidex",
    "fulltext:elastic:opensearch": "False",
    "fulltext:type": "default",
    "home": "/home/www",
    "identity:adminclientid": "",
    "identity:adminclientsecret": "",
    "identity:adminemail": "<emailAddress>",
    "identity:adminpassword": "<adminPassword>",
    "identity:adminrecreate": "True",
    "identity:allowpasswordauth": "True",
    "identity:githubclient": "",
    "identity:githubsecret": "",
    "identity:googleclient": "",
    "identity:googlesecret": "",
    "identity:lockautomatically": "False",
    "identity:microsoftclient": "",
    "identity:microsoftsecret": "",
    "identity:microsofttenant": "",
    "identity:multipledomains": "False",
    "identity:oidcauthority": "",
    "identity:oidcclient": "",
    "identity:oidcgetclaimsfromuserinfoendpoint": "False",
    "identity:oidcmetadataaddress": "",
    "identity:oidcname": "OIDC",
    "identity:oidconsignoutredirecturl": "",
    "identity:oidcoverridepermissionswithcustomclaimsonlogin": "False",
    "identity:oidcresponsetype": "id_token",
    "identity:oidcscopes:0": "email",
    "identity:oidcsecret": "",
    "identity:privacyurl": "https://<url>/privacy-policy",
    "identity:showpii": "True",
    "identity:suppressxframeoptionsheader": "False",
    "kafka:bootstrapservers": "",
    "lang": "en_US.UTF-8",
    "languages:custom": "",
    "logging:applicationinsights:connectionstring": "InstrumentationKey=[key];IngestionEndpoint=https://[datacenter].in.applicationinsights.azure.com/",
    "logging:applicationinsights:enabled": "False",
    "logging:colors": "True",
    "logging:human": "True",
    "logging:level": "Information",
    "logging:loglevel:default": "Error",
    "logging:loglevel:microsoft.aspnetcore": "Warning",
    "logging:loglevel:microsoft.identity": "Warning",
    "logging:loglevel:openiddict": "Warning",
    "logging:loglevel:runtime": "Warning",
    "logging:logrequests": "True",
    "logging:otlp:enabled": "False",
    "logging:otlp:endpoint": "",
    "logging:otlp:sampling": "1.0",
    "logging:stackdriver:enabled": "False",
    "logging:stackdriver:projectid": "",
    "logging:storeenabled": "True",
    "logging:storeretentionindays": "30",
    "logging:zipkin:enabled": "False",
    "logging:zipkin:endpoint": "http://localhost:9411/api/v2/spans",
    "logname": "www",
    "messaging:type": "MongoDb",
    "mode:isreadonly": "False",
    "news:appname": "squidex-website",
    "news:clientid": "squidex-website:default",
    "news:clientsecret": "<clientSecret>",
    "notifo:apikey": "",
    "notifo:apiurl": "https://app.notifo.io",
    "notifo:appid": "",
    "path": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin",
    "plugins:0": "Squidex.Extensions.dll",
    "rebuild:apps": "True",
    "rebuild:assetfiles": "True",
    "rebuild:assets": "True",
    "rebuild:contents": "True",
    "rebuild:indexes": "True",
    "rebuild:rules": "True",
    "rebuild:schemas": "True",
    "robots:text": "User-agent: *\nAllow: /api/assets/*",
    "rules:executiontimeoutinseconds": "10",
    "rules:rulescacheduration": "00:00:10",
    "scripting:timeoutexecution": "00:00:04",
    "scripting:timeoutscript": "00:00:00.200",
    "shell": "/sbin/nologin",
    "store:mongodb:atlas:clustername": "",
    "store:mongodb:atlas:fulltextenabled": "False",
    "store:mongodb:atlas:groupid": "",
    "store:mongodb:atlas:privatekey": "",
    "store:mongodb:atlas:publickey": "",
    "store:mongodb:configuration": "mongodb://<user>:<password>@localhost:27017",
    "store:mongodb:contentdatabase": "SquidexContent_Test_23",
    "store:mongodb:database": "Squidex_Test_23",
    "store:mongodb:valuerepresentation": "Undefined",
    "store:type": "MongoDb",
    "templates:repositories:0:contenturl": "",
    "templates:repositories:0:giturl": "",
    "translations:deepl:authkey": "",
    "translations:deepl:mapping:zh-cn": "zh-CN",
    "translations:deepl:mapping:zh-tw": "zh-TW",
    "translations:googlecloud:projectid": "",
    "twitter:clientid": "",
    "twitter:clientsecret": "",
    "ui:hidedatebuttons": "False",
    "ui:hidedatetimemodebutton": "False",
    "ui:hidenews": "True",
    "ui:hideonboarding": "True",
    "ui:map:googlemaps:key": "<googleMapsKey>",
    "ui:map:type": "OSM",
    "ui:onlyadminscancreateapps": "True",
    "ui:redirecttologin": "False",
    "ui:referencesdropdownitemcount": "100",
    "ui:regexsuggestions:email": "",
    "ui:regexsuggestions:phone": "",
    "ui:regexsuggestions:slug": "",
    "ui:regexsuggestions:url": "",
    "ui:showinfo": "False",
    "urls:basepath": "./",
    "urls:baseurl": "<url>",
    "urls:enableforwardheaders": "True",
    "urls:enforcehost": "False",
    "urls:enforcehttps": "True",
    "urls:knownproxies:0": "http://localhost:5000/",
    "user": "www"
  },
"timestamp": "2023-08-14T07:01:51Z",
  "app": {
    "name": "Squidex",
    "version": "1.0.0.0",
    "sessionId": "1a0e8532-f506-4cb0-b8f2-90419b89b90c"
  }
}

Log then prints the following initialize arrays with a sessionIds:
Log then shows the following 2 objects with an array (initialize & start) that it initialises with a sessionId

{
  "logLevel": "Information",
  "initialize": [
    "Serializer (BSON)",
    "ValidationInitializer",
    "AppsIndex",
    "BackupWorker",
    "FolderAssetStore",
    "LanguagesInitializer",
    "MongoAppRepository",
    "MongoAssetFolderRepository",
    "MongoAssetKeyValueStore\u00601",
    "MongoAssetRepository",
    "MongoContentRepository",
    "MongoDistributedCache",
    "MongoEventStore",
    "MongoHistoryEventRepository",
    "MongoMigrationStatus",
    "MongoRequestLogRepository",
    "MongoRoleStore",
    "MongoRuleEventRepository",
    "MongoRuleRepository",
    "MongoSchemaRepository",
    "MongoSchemasHash",
    "MongoSubscriptionStore",
    "MongoTeamRepository",
    "MongoTextIndex",
    "MongoTextIndexerState",
    "MongoTransport",
    "MongoUsageRepository",
    "MongoUserStore",
    "TokenStoreInitializer",
    "UsageNotifierWorker",
    "CreateAdminInitializer",
    "Diagnoser",
    "SubscriptionService"
  ],
  "timestamp": "2023-08-14T07:01:51Z",
  "app": {
    "name": "Squidex",
    "version": "1.0.0.0",
    "sessionId": "1a0e8532-f506-4cb0-b8f2-90419b89b90c"
  }
}
...
{
  "logLevel": "Information",
  "start": [
    "AssetCleanupProcess",
    "ContentSchedulerProcess",
    "DefaultMessagingSubscriptions",
    "EventConsumerWorker",
    "RuleDequeuerWorker",
    "RuleRunnerWorker",
    "TokenStoreInitializer",
    "UsageTrackerWorker",
    "Messaging.Consumer(backup.restore)",
    "Messaging.Consumer(backup.start)",
    "Messaging.Consumer(caching)",
    "Messaging.Consumer(default)",
    "Messaging.Consumer(rules.run)",
    "Messaging.Consumer(subscriptions)"
  ],
  "timestamp": "2023-08-14T07:02:32Z",
  "app": {
    "name": "Squidex",
    "version": "1.0.0.0",
    "sessionId": "1a0e8532-f506-4cb0-b8f2-90419b89b90c"
  }
}

it continues with plugins

{
  "logLevel": "Information",
  "message": "Plugins loaded.",
  "action": "pluginsLoaded",
  "status": "Completed",
  "errors": [],
  "plugins": [
    "Squidex.Extensions.Validation.CompositeUniqueValidatorPlugin",
    "Squidex.Extensions.Text.ElasticSearch.ElasticSearchTextPlugin",
    "Squidex.Extensions.Text.Azure.AzureTextPlugin",
    "Squidex.Extensions.Samples.AssetStore.MemoryAssetStorePlugin",
    "Squidex.Extensions.Assets.Azure.AzureMetadataSourcePlugin",
    "Squidex.Extensions.APM.Zipkin.ZipkinPlugin",
    "Squidex.Extensions.APM.Stackdriver.StackdriverPlugin",
    "Squidex.Extensions.APM.Otlp.OtlpPlugin",
    "Squidex.Extensions.APM.ApplicationInsights.ApplicationInsightsPlugin",
    "Squidex.Extensions.Actions.Webhook.WebhookPlugin",
    "Squidex.Extensions.Actions.Typesense.TypesensePlugin",
    "Squidex.Extensions.Actions.Twitter.TwitterPlugin",
    "Squidex.Extensions.Actions.Slack.SlackPlugin",
    "Squidex.Extensions.Actions.SignalR.SignalRPlugin",
    "Squidex.Extensions.Actions.Script.ScriptPlugin",
    "Squidex.Extensions.Actions.Prerender.PrerenderPlugin",
    "Squidex.Extensions.Actions.OpenSearch.OpenSearchPlugin",
    "Squidex.Extensions.Actions.Notification.NotificationPlugin",
    "Squidex.Extensions.Actions.Medium.MediumPlugin",
    "Squidex.Extensions.Actions.Kafka.KafkaPlugin",
    "Squidex.Extensions.Actions.Fastly.FastlyPlugin",
    "Squidex.Extensions.Actions.Email.EmailPlugin",
    "Squidex.Extensions.Actions.ElasticSearch.ElasticSearchPlugin",
    "Squidex.Extensions.Actions.Discourse.DiscoursePlugin",
    "Squidex.Extensions.Actions.CreateContent.CreateContentPlugin",
    "Squidex.Extensions.Actions.Comment.CommentPlugin",
    "Squidex.Extensions.Actions.AzureQueue.AzureQueuePlugin",
    "Squidex.Extensions.Actions.Algolia.AlgoliaPlugin"
  ],
  "timestamp": "2023-08-14T07:02:33Z",
  "app": {
    "name": "Squidex",
    "version": "1.0.0.0",
    "sessionId": "1a0e8532-f506-4cb0-b8f2-90419b89b90c"
  }
}

GET Requests continues.

I’ll DM you the DB

Looks normal to me. I can have a look soon.

2 Likes