Issue with uploading scans to orthanc

Greeting everyone,

We are running 3 Orthanc instances through Kubernetes and the docker image used is orthancteam/orthanc:25.2.0. All 3 orthanc share the same Postgres database and the same scan storage path. We use one orthanc for uploading all the scans. Attaching the config only for that orthanc

{
“Name”: “Orthanc inside Docker”,
“PostgreSQL” : {
“EnableIndex” : true,
“EnableStorage” : false,
“Host” : “192.168.1.90”,
“Port” : 5432,
“Database” : “orthanc_quickrad”,
“Username” : “xyz”,
“Password” : “xyz”,
“IndexConnectionsCount” : 5,
“MaximumConnectionRetries” : 10,
“ConnectionRetryInterval” : 2,
“TransactionMode”: “Serializable”,
“Lock”: false,
“EnableSsl” : false // New in version 3.0
},
“StorageDirectory”: “/etc/orthanc/OrthancStorage”,
“StorageCompression”: false,
“MaximumStorageSize”: 0,
“MaximumPatientCount”: 0,
“LuaScripts”: ,
“Plugins”: [“/usr/share/orthanc/plugins”, “/usr/local/share/orthanc/plugins”],
“ConcurrentJobs”: 2,
“HttpServerEnabled”: true,
“HttpPort”: 8043,
“HttpDescribeErrors”: true,
“HttpCompressionEnabled”: true,
“DicomServerEnabled”: true,
“DicomAet”: “ORTHANC”,
“DicomCheckCalledAet”: false,
“DicomPort”: 4243,
“DefaultEncoding”: “Latin1”,
“DeflatedTransferSyntaxAccepted”: true,
“JpegTransferSyntaxAccepted”: true,
“Jpeg2000TransferSyntaxAccepted”: true,
“JpegLosslessTransferSyntaxAccepted”: true,
“JpipTransferSyntaxAccepted”: true,
“Mpeg2TransferSyntaxAccepted”: true,
“RleTransferSyntaxAccepted”: true,
“UnknownSopClassAccepted”: false,
“DicomScpTimeout”: 30,

“RemoteAccessAllowed”: true,
“SslEnabled”: false,
“SslCertificate”: “certificate.pem”,
“AuthenticationEnabled”: false,
“RegisteredUsers”: {
“test”: “test”
},
“DicomModalities”: {
},
“DicomModalitiesInDatabase”: true,
“DicomAlwaysAllowEcho”: true,
“DicomAlwaysAllowStore”: true,
“DicomCheckModalityHost”: false,
“DicomScuTimeout”: 10,
“OrthancPeers”: {},
“OrthancPeersInDatabase”: false,
“HttpProxy”: “”,

“HttpVerbose”: true,

“HttpTimeout”: 60,
“HttpsVerifyPeers”: true,
“HttpsCACertificates”: “”,
“UserMetadata”: {},
“UserContentType”: {},
“StableAge”: 60,
“StrictAetComparison”: false,
“StoreMD5ForAttachments”: true,
“LimitFindResults”: 0,
“LimitFindInstances”: 0,
“LimitJobs”: 5,
“LogExportedResources”: false,
“KeepAlive”: true,
“TcpNoDelay”: true,
“HttpThreadsCount”: 100,
“StoreDicom”: true,
“DicomAssociationCloseDelay”: 5,
“QueryRetrieveSize”: 10,
“CaseSensitivePN”: false,
“LoadPrivateDictionary”: true,
“Dictionary”: {},
“SynchronousCMove”: true,
“JobsHistorySize”: 10,
“SaveJobs”: true,
“OverwriteInstances”: true,
“MediaArchiveSize”: 1,
“StorageAccessOnFind”: “Always”,
“MetricsEnabled”: true,
“IngestTranscoding”: “1.2.840.10008.1.2.4.90”,

“DicomWeb”: {
“Enable”: true,
“Root”: “/dicom-web/”,
“EnableWado”: true,
“WadoRoot”: “/wado”,
“Host”: “url”,
“Ssl”: false,
“StowMaxInstances”: 10,
“StowMaxSize”: 10,
“QidoCaseSensitive”: false,
“StudiesMetadata” : “MainDicomTags”,
“SeriesMetadata” : “Full”
}
}

Getting the following error

b’{\n\t"HttpError" : “Service Unavailable”,\n\t"HttpStatus" : 503,\n\t"Message" : “Database could not serialize access due to concurrent update, the transaction should be retried”,\n\t"Method" : “POST”,\n\t"OrthancError" : “Database could not serialize access due to concurrent update, the transaction should be retried”,\n\t"OrthancStatus" : 42,\n\t"Uri" : “/instances”\n}\n’

when uploading scans using the api

http://{host}:{port}/instances

Few of the scans are getting uploaded but few are failing

Hi,

You should set “TransactionMode” to “ReadCommitted” (or just remove it from your configuration file to use the default value). (documentation)

HTH,

Alain

Thank you @alainmazy . Will check it out