LSP Server fails to initialize if an inlayHints request is sent before the client responds to workspace/configuration

I am working on Dart4E a Dart plugin for Eclipse.
Until Dart 3.3.4 using the Dart LSP is working as expected. When upgrading Dart to 3.4.0-3.4.4, the Dart LSP stops working for no apparent reason. E.g. I do not see code outline anymore, goto declaration and type hovering is not working.
I traced the communication between the LSP client and the server when opening a file in a simple hello world dart project:
This is the result in Dart 3.3.4:
CLIENT >> {"jsonrpc":"2.0","id":"1","method":"initialize","params":{"processId":137760,"rootPath":"/D:/workspaces/runtime-haxe4e/dart_test/","rootUri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","initializationOptions":{"flutterOutline":false,"suggestFromUnimportedLibraries":true},"capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","delete","rename"],"failureHandling":"undo","changeAnnotationSupport":{"groupsOnLabel":true}},"symbol":{"dynamicRegistration":true},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true,"codeLens":{"refreshSupport":true}},"textDocument":{"synchronization":{"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"completionItem":{"snippetSupport":true,"documentationFormat":["markdown","plaintext"],"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"insertTextModeSupport":{"valueSet":[1,2]}},"contextSupport":true,"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]}},"hover":{"contentFormat":["markdown","plaintext"]},"signatureHelp":{},"references":{},"documentHighlight":{},"documentSymbol":{"symbolKind":{"valueSet":[18,17,5,14,9,10,22,24,8,1,12,11,20,6,2,3,21,16,19,25,4,7,15,23,26,13]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{},"definition":{"linkSupport":true},"typeDefinition":{"linkSupport":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"resolveSupport":{"properties":["edit"]},"dynamicRegistration":true},"codeLens":{},"documentLink":{},"colorProvider":{},"rename":{"prepareSupport":true},"publishDiagnostics":{},"foldingRange":{},"selectionRange":{},"inlayHint":{}},"window":{"workDoneProgress":true,"showMessage":{},"showDocument":{"support":true}}},"clientInfo":{"name":"Eclipse IDE","version":"0.18.12.qualifier"},"trace":"off","workspaceFolders":[{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","name":"dart_test"}]}}
CLIENT >> {"jsonrpc":"2.0","method":"initialized","params":{}}
CLIENT >> {"jsonrpc":"2.0","method":"workspace/didChangeWorkspaceFolders","params":{"event":{"added":[{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","name":"dart_test"}],"removed":[]}}}
CLIENT >> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart","languageId":"dart","version":1,"text":"int calculate() {\n  return 6 * 7;\n}\n"}}}
CLIENT >> {"jsonrpc":"2.0","id":"2","method":"textDocument/documentColor","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
SERVER >> {"id":"1","jsonrpc":"2.0","result":{"capabilities":{"callHierarchyProvider":true,"colorProvider":{"documentSelector":[{"language":"dart","scheme":"file"}]},"completionProvider":{"completionItem":{"labelDetailsSupport":true},"resolveProvider":true,"triggerCharacters":[".","=","(","$","\"","'","{","/",":"]},"definitionProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"}","moreTriggerCharacter":[";"]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["edit.sortMembers","edit.organizeImports","edit.fixAll","edit.sendWorkspaceEdit","refactor.perform","refactor.validate","dart.logAction","dart.refactor.convert_all_formal_parameters_to_named","dart.refactor.convert_selected_formal_parameters_to_named","dart.refactor.move_selected_formal_parameters_left","dart.refactor.move_top_level_to_file"],"workDoneProgress":true},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inlayHintProvider":{"resolveProvider":false},"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":false},"legend":{"tokenModifiers":["documentation","constructor","declaration","importPrefix","instance","static","escape","annotation","control","label","interpolation","void"],"tokenTypes":["annotation","keyword","class","comment","method","variable","parameter","enum","enumMember","type","source","property","namespace","boolean","number","string","function","typeParameter"]},"range":true},"signatureHelpProvider":{"retriggerCharacters":[","],"triggerCharacters":["("]},"textDocumentSync":{"change":2,"openClose":true,"willSave":false,"willSaveWaitUntil":false},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspace":{"fileOperations":{"willRename":{"filters":[{"pattern":{"glob":"**/*.dart","matches":"file"},"scheme":"file"},{"pattern":{"glob":"**/","matches":"folder"},"scheme":"file"}]}},"workspaceFolders":{"changeNotifications":true,"supported":true}},"workspaceSymbolProvider":true},"serverInfo":{"name":"Dart SDK LSP Analysis Server","version":"3.3.4"}}}
CLIENT >> {"jsonrpc":"2.0","id":"3","method":"textDocument/inlayHint","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"},"range":{"start":{"line":0,"character":0},"end":{"line":3,"character":0}}}}
SERVER >> {"id":1,"jsonrpc":"2.0","method":"workspace/configuration","params":{"items":[{"scopeUri":"file:///D:/workspaces/runtime-haxe4e/dart_test","section":"dart"},{"section":"dart"}]}}
SERVER >> {"id":2,"jsonrpc":"2.0","method":"workspace/configuration","params":{"items":[{"scopeUri":"file:///D:/workspaces/runtime-haxe4e/dart_test","section":"dart"},{"section":"dart"}]}}
CLIENT >> {"jsonrpc":"2.0","id":1,"result":[{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true},{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true}]}
CLIENT >> {"jsonrpc":"2.0","id":2,"result":[{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true},{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true}]}
CLIENT >> {"jsonrpc":"2.0","id":"4","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
CLIENT >> {"jsonrpc":"2.0","id":3,"result":null}
SERVER >> {"id":3,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"ANALYZING"}}
CLIENT >> {"jsonrpc":"2.0","id":"5","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
SERVER >> {"id":4,"jsonrpc":"2.0","method":"client/registerCapability","params":{"registrations":[{"id":"0","method":"textDocument/codeAction","registerOptions":{"codeActionKinds":["source","source.organizeImports","source.fixAll","source.sortMembers","quickfix","refactor"],"documentSelector":[{"language":"dart","scheme":"file"}]}},{"id":"1","method":"textDocument/formatting","registerOptions":{"documentSelector":[{"language":"dart","scheme":"file"}]}}]}}
SERVER >> {"id":"2","jsonrpc":"2.0","result":[]}
SERVER >> {"id":"3","jsonrpc":"2.0","result":[]}
SERVER >> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"ANALYZING","value":{"kind":"begin","title":"Analyzing…"}}}
SERVER >> {"id":"4","jsonrpc":"2.0","result":[{"deprecated":false,"detail":"()","kind":12,"name":"calculate","range":{"end":{"character":1,"line":2},"start":{"character":0,"line":0}},"selectionRange":{"end":{"character":13,"line":0},"start":{"character":4,"line":0}}}]}
CLIENT >> {"jsonrpc":"2.0","id":4,"result":null}
CLIENT >> {"jsonrpc":"2.0","id":"6","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
CLIENT >> {"jsonrpc":"2.0","id":"7","method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
CLIENT >> {"jsonrpc":"2.0","id":"8","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
SERVER >> {"id":"5","jsonrpc":"2.0","result":{"data":[0,0,3,2,0,0,4,9,16,36,1,2,6,1,256,0,7,1,14,0,0,4,1,14,0]}}
SERVER >> {"id":"6","jsonrpc":"2.0","result":[]}
SERVER >> {"id":"7","jsonrpc":"2.0","result":[{"endCharacter":1,"endLine":2,"startCharacter":13,"startLine":0}]}
SERVER >> {"id":"8","jsonrpc":"2.0","result":[{"deprecated":false,"detail":"()","kind":12,"name":"calculate","range":{"end":{"character":1,"line":2},"start":{"character":0,"line":0}},"selectionRange":{"end":{"character":13,"line":0},"start":{"character":4,"line":0}}}]}
CLIENT >> {"jsonrpc":"2.0","id":"9","method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"},"position":{"line":0,"character":0}}}
SERVER >> {"id":"9","jsonrpc":"2.0","result":[{"range":{"end":{"character":3,"line":0},"start":{"character":0,"line":0}}}]}
SERVER >> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"ANALYZING","value":{"kind":"end"}}}
CLIENT >> {"jsonrpc":"2.0","id":"10","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
SERVER >> {"id":"10","jsonrpc":"2.0","result":[{"deprecated":false,"detail":"()","kind":12,"name":"calculate","range":{"end":{"character":1,"line":2},"start":{"character":0,"line":0}},"selectionRange":{"end":{"character":13,"line":0},"start":{"character":4,"line":0}}}]}

and this is the result for Dart 3.4.4:
CLIENT >> {"jsonrpc":"2.0","id":"1","method":"initialize","params":{"processId":137760,"rootPath":"/D:/workspaces/runtime-haxe4e/dart_test/","rootUri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","initializationOptions":{"flutterOutline":false,"suggestFromUnimportedLibraries":true},"capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","delete","rename"],"failureHandling":"undo","changeAnnotationSupport":{"groupsOnLabel":true}},"symbol":{"dynamicRegistration":true},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true,"codeLens":{"refreshSupport":true}},"textDocument":{"synchronization":{"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"completionItem":{"snippetSupport":true,"documentationFormat":["markdown","plaintext"],"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"insertTextModeSupport":{"valueSet":[1,2]}},"contextSupport":true,"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]}},"hover":{"contentFormat":["markdown","plaintext"]},"signatureHelp":{},"references":{},"documentHighlight":{},"documentSymbol":{"symbolKind":{"valueSet":[18,17,5,14,9,10,22,24,8,1,12,11,20,6,2,3,21,16,19,25,4,7,15,23,26,13]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{},"definition":{"linkSupport":true},"typeDefinition":{"linkSupport":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"resolveSupport":{"properties":["edit"]},"dynamicRegistration":true},"codeLens":{},"documentLink":{},"colorProvider":{},"rename":{"prepareSupport":true},"publishDiagnostics":{},"foldingRange":{},"selectionRange":{},"inlayHint":{}},"window":{"workDoneProgress":true,"showMessage":{},"showDocument":{"support":true}}},"clientInfo":{"name":"Eclipse IDE","version":"0.18.12.qualifier"},"trace":"off","workspaceFolders":[{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","name":"dart_test"}]}}
CLIENT >> {"jsonrpc":"2.0","method":"initialized","params":{}}
CLIENT >> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart","languageId":"dart","version":1,"text":"int calculate() {\n  return 6 * 7;\n}\n"}}}
CLIENT >> {"jsonrpc":"2.0","method":"workspace/didChangeWorkspaceFolders","params":{"event":{"added":[{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","name":"dart_test"}],"removed":[]}}}
CLIENT >> {"jsonrpc":"2.0","id":"2","method":"textDocument/codeLens","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
CLIENT >> {"jsonrpc":"2.0","id":"3","method":"textDocument/documentColor","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
SERVER >> {"id":"1","jsonrpc":"2.0","result":{"capabilities":{"callHierarchyProvider":true,"codeLensProvider":{},"colorProvider":{"documentSelector":[{"language":"dart","scheme":"file"}]},"completionProvider":{"completionItem":{"labelDetailsSupport":true},"resolveProvider":true,"triggerCharacters":[".","=","(","$","\"","'","{","/",":"]},"definitionProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"}","moreTriggerCharacter":[";"]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["dart.edit.sortMembers","dart.edit.organizeImports","dart.edit.fixAll","dart.edit.fixAllInWorkspace.preview","dart.edit.fixAllInWorkspace","dart.edit.sendWorkspaceEdit","refactor.perform","refactor.validate","dart.logAction","dart.refactor.convert_all_formal_parameters_to_named","dart.refactor.convert_selected_formal_parameters_to_named","dart.refactor.move_selected_formal_parameters_left","dart.refactor.move_top_level_to_file"],"workDoneProgress":true},"experimental":{"textDocument":{"super":{},"augmented":{},"augmentation":{}}},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inlayHintProvider":{"resolveProvider":false},"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":false},"legend":{"tokenModifiers":["documentation","constructor","declaration","importPrefix","instance","static","escape","annotation","control","label","interpolation","void"],"tokenTypes":["annotation","keyword","class","comment","method","variable","parameter","enum","enumMember","type","source","property","namespace","boolean","number","string","function","typeParameter"]},"range":true},"signatureHelpProvider":{"retriggerCharacters":[","],"triggerCharacters":["("]},"textDocumentSync":{"change":2,"openClose":true,"willSave":false,"willSaveWaitUntil":false},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspace":{"fileOperations":{"willRename":{"filters":[{"pattern":{"glob":"**/*.dart","matches":"file"},"scheme":"file"},{"pattern":{"glob":"**/","matches":"folder"},"scheme":"file"}]}},"workspaceFolders":{"changeNotifications":true,"supported":true}},"workspaceSymbolProvider":true},"serverInfo":{"name":"Dart SDK LSP Analysis Server","version":"3.4.4"}}}
CLIENT >> {"jsonrpc":"2.0","id":"4","method":"textDocument/inlayHint","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"},"range":{"start":{"line":0,"character":0},"end":{"line":3,"character":0}}}}
SERVER >> {"id":1,"jsonrpc":"2.0","method":"workspace/configuration","params":{"items":[{"scopeUri":"file:///D:/workspaces/runtime-haxe4e/dart_test","section":"dart"},{"section":"dart"}]}}
CLIENT >> {"jsonrpc":"2.0","id":1,"result":[{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true},{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true}]}
SERVER >> {"id":2,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"ANALYZING"}}
CLIENT >> {"jsonrpc":"2.0","id":2,"result":null}
SERVER >> {"id":3,"jsonrpc":"2.0","method":"workspace/configuration","params":{"items":[{"scopeUri":"file:///D:/workspaces/runtime-haxe4e/dart_test","section":"dart"},{"section":"dart"}]}}
CLIENT >> {"jsonrpc":"2.0","id":3,"result":[{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true},{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true}]}
CLIENT >> {"jsonrpc":"2.0","id":"5","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
CLIENT >> {"jsonrpc":"2.0","id":"6","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}

It looks like after a few client request the LSP simply stops responding.
How can I get to the bottom of this?

This is the output of the Dart 3.4.4 LSP when run with --protocol-traffic-log:
1721846313493:Ver:1712602523410441118498:unknown.client.lsp:unknown:1.37.0:3.4.0
1721846313513:Req:{"jsonrpc"::"2.0","id"::"1","method"::"initialize","params"::{"processId"::137760,"rootPath"::"/D::/workspaces/runtime-haxe4e/dart_test/","rootUri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/","initializationOptions"::{"flutterOutline"::false,"suggestFromUnimportedLibraries"::true},"capabilities"::{"workspace"::{"applyEdit"::true,"workspaceEdit"::{"documentChanges"::true,"resourceOperations"::["create","delete","rename"],"failureHandling"::"undo","changeAnnotationSupport"::{"groupsOnLabel"::true}},"symbol"::{"dynamicRegistration"::true},"executeCommand"::{"dynamicRegistration"::true},"workspaceFolders"::true,"configuration"::true,"codeLens"::{"refreshSupport"::true}},"textDocument"::{"synchronization"::{"willSave"::true,"willSaveWaitUntil"::true,"didSave"::true},"completion"::{"completionItem"::{"snippetSupport"::true,"documentationFormat"::["markdown","plaintext"],"resolveSupport"::{"properties"::["documentation","detail","additionalTextEdits"]},"insertTextModeSupport"::{"valueSet"::[1,2]}},"contextSupport"::true,"completionList"::{"itemDefaults"::["commitCharacters","editRange","insertTextFormat","insertTextMode"]}},"hover"::{"contentFormat"::["markdown","plaintext"]},"signatureHelp"::{},"references"::{},"documentHighlight"::{},"documentSymbol"::{"symbolKind"::{"valueSet"::[18,17,5,14,9,10,22,24,8,1,12,11,20,6,2,3,21,16,19,25,4,7,15,23,26,13]},"hierarchicalDocumentSymbolSupport"::true},"formatting"::{"dynamicRegistration"::true},"rangeFormatting"::{},"definition"::{"linkSupport"::true},"typeDefinition"::{"linkSupport"::true},"codeAction"::{"codeActionLiteralSupport"::{"codeActionKind"::{"valueSet"::["quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport"::true,"resolveSupport"::{"properties"::["edit"]},"dynamicRegistration"::true},"codeLens"::{},"documentLink"::{},"colorProvider"::{},"rename"::{"prepareSupport"::true},"publishDiagnostics"::{},"foldingRange"::{},"selectionRange"::{},"inlayHint"::{}},"window"::{"workDoneProgress"::true,"showMessage"::{},"showDocument"::{"support"::true}}},"clientInfo"::{"name"::"Eclipse IDE","version"::"0.18.12.qualifier"},"trace"::"off","workspaceFolders"::[{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/","name"::"dart_test"}]}}
1721846313570:Res:{"id"::"1","jsonrpc"::"2.0","result"::{"capabilities"::{"callHierarchyProvider"::true,"codeLensProvider"::{},"colorProvider"::{"documentSelector"::[{"language"::"dart","scheme"::"file"}]},"completionProvider"::{"completionItem"::{"labelDetailsSupport"::true},"resolveProvider"::true,"triggerCharacters"::[".","=","(","$","\"","'","{","/","::"]},"definitionProvider"::true,"documentHighlightProvider"::true,"documentLinkProvider"::{"resolveProvider"::false},"documentOnTypeFormattingProvider"::{"firstTriggerCharacter"::"}","moreTriggerCharacter"::[";"]},"documentRangeFormattingProvider"::true,"documentSymbolProvider"::true,"executeCommandProvider"::{"commands"::["dart.edit.sortMembers","dart.edit.organizeImports","dart.edit.fixAll","dart.edit.fixAllInWorkspace.preview","dart.edit.fixAllInWorkspace","dart.edit.sendWorkspaceEdit","refactor.perform","refactor.validate","dart.logAction","dart.refactor.convert_all_formal_parameters_to_named","dart.refactor.convert_selected_formal_parameters_to_named","dart.refactor.move_selected_formal_parameters_left","dart.refactor.move_top_level_to_file"],"workDoneProgress"::true},"experimental"::{"textDocument"::{"super"::{},"augmented"::{},"augmentation"::{}}},"foldingRangeProvider"::true,"hoverProvider"::true,"implementationProvider"::true,"inlayHintProvider"::{"resolveProvider"::false},"referencesProvider"::true,"renameProvider"::{"prepareProvider"::true},"selectionRangeProvider"::true,"semanticTokensProvider"::{"full"::{"delta"::false},"legend"::{"tokenModifiers"::["documentation","constructor","declaration","importPrefix","instance","static","escape","annotation","control","label","interpolation","void"],"tokenTypes"::["annotation","keyword","class","comment","method","variable","parameter","enum","enumMember","type","source","property","namespace","boolean","number","string","function","typeParameter"]},"range"::true},"signatureHelpProvider"::{"retriggerCharacters"::[","],"triggerCharacters"::["("]},"textDocumentSync"::{"change"::2,"openClose"::true,"willSave"::false,"willSaveWaitUntil"::false},"typeDefinitionProvider"::true,"typeHierarchyProvider"::true,"workspace"::{"fileOperations"::{"willRename"::{"filters"::[{"pattern"::{"glob"::"**/*.dart","matches"::"file"},"scheme"::"file"},{"pattern"::{"glob"::"**/","matches"::"folder"},"scheme"::"file"}]}},"workspaceFolders"::{"changeNotifications"::true,"supported"::true}},"workspaceSymbolProvider"::true},"serverInfo"::{"name"::"Dart SDK LSP Analysis Server","version"::"3.4.4"}}}
1721846313574:Req:{"jsonrpc"::"2.0","method"::"initialized","params"::{}}
1721846313592:Res:{"id"::1,"jsonrpc"::"2.0","method"::"workspace/configuration","params"::{"items"::[{"scopeUri"::"file::///D::/workspaces/runtime-haxe4e/dart_test","section"::"dart"},{"section"::"dart"}]}}
1721846313592:Req:{"jsonrpc"::"2.0","method"::"textDocument/didOpen","params"::{"textDocument"::{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart","languageId"::"dart","version"::1,"text"::"int calculate() {\n  return 6 * 7;\n}\n"}}}
1721846313600:Res:{"id"::2,"jsonrpc"::"2.0","method"::"window/workDoneProgress/create","params"::{"token"::"ANALYZING"}}
1721846313601:Req:{"jsonrpc"::"2.0","method"::"workspace/didChangeWorkspaceFolders","params"::{"event"::{"added"::[{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/","name"::"dart_test"}],"removed"::[]}}}
1721846313603:Res:{"id"::3,"jsonrpc"::"2.0","method"::"workspace/configuration","params"::{"items"::[{"scopeUri"::"file::///D::/workspaces/runtime-haxe4e/dart_test","section"::"dart"},{"section"::"dart"}]}}
1721846313603:Req:{"jsonrpc"::"2.0","id"::"2","method"::"textDocument/codeLens","params"::{"textDocument"::{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
1721846313605:Req:{"jsonrpc"::"2.0","id"::"3","method"::"textDocument/documentColor","params"::{"textDocument"::{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
1721846313607:Req:{"jsonrpc"::"2.0","id"::"4","method"::"textDocument/inlayHint","params"::{"textDocument"::{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"},"range"::{"start"::{"line"::0,"character"::0},"end"::{"line"::3,"character"::0}}}}
1721846313609:Res:{"id"::"2","jsonrpc"::"2.0","result"::[]}

This is the content of the dart_test.dart file:
int calculate() {
  return 6 * 7;
}

The LSP is launched using:
dart bin/snapshots/analysis_server.dart.snapshot --protocol=lsp

@sebthom I'm not sure what's wrong and will have to do some debugging, but there are some differences between the logs you posted (one I presume collected by the client and one by the analysis server) - were they captured on the same run?
Some things that stand out (although I don't know that any are related to the issue):

In the client log, it shows sending many requests before the server has responded to initialize. The LSP spec says "Until the server has responded to the initialize request with an InitializeResult, the client must not send any additional requests or notifications to the server."
Some of the requests include invalid paths ("rootPath":"/D:/workspaces/runtime-haxe4e/dart_test/"). We should only use rootPath if the URIs aren't provided, but if we did try to use this, we would likely return an error.
A workspace/didChangeWorkspaceFolders event is being sent early on to add a folder to the workspace that is already in it.

I suspect the main issue here is that the servers log doesn't show ever getting a response to the workspace/configuration request, and it will wait for that before finishing initialization (we need to know some of the config). Your client logs do show them being sent (assuming these logs are from the same run), so it seems like they're getting lost somewhere. I'll have to see if I can reproduce this.

@DanTup thanks a lot for your quick response.

@sebthom I'm not sure what's wrong and will have to do some debugging, but there are some differences between the logs you posted (one I presume collected by the client and one by the analysis server) - were they captured on the same run?

yes both logs are from the same run. I am capturing stdin/stdout on the client side and the server side log is the output from --protocol-traffic-log.

Some things that stand out (although I don't know that any are related to the issue):

In the client log, it shows sending many requests before the server has responded to initialize. The LSP spec says "Until the server has responded to the initialize request with an InitializeResult, the client must not send any additional requests or notifications to the server."

it might be that this is just being logged in the wrong order as the entries are coming from two streams.

Some of the requests include invalid paths ("rootPath":"/D:/workspaces/runtime-haxe4e/dart_test/"). We should only use rootPath if the URIs aren't provided, but if we did try to use this, we would likely return an error.

rootPath and rootUri are set by the underlying LSP framework LSP4E. I have no control over this in my plugin. looking at the spec setting them is deprecated but not illegal.

A workspace/didChangeWorkspaceFolders event is being sent early on to add a folder to the workspace that is already in it.

this is also done automatically by the underlying LSP framework LSP4E.

I suspect the main issue here is that the servers log doesn't show ever getting a response to the workspace/configuration request, and it will wait for that before finishing initialization (we need to know some of the config). Your client logs do show them being sent (assuming these logs are from the same run), so it seems like they're getting lost somewhere. I'll have to see if I can reproduce this.

Can I enable some kind of debug/trace mode in the analysis server to get a better understanding why/where it gets stuck?

rootPath and rootUri are set by the underlying LSP framework LSP4E. I have no control over this in my plugin. looking at the spec setting them is deprecated but not illegal.

Right, but rootPath should be a native path (like D:\foo\bar) but the value being sent looks like it's the path stripped from a Uri (which is fine for non-Windows, but incorrect for Windows). I don't think it's related to the issue here, but it seems like a bug in LSP4E.

Can I enable some kind of debug/trace mode in the analysis server to get a better understanding why/where it gets stuck?

The log you're enabling is what we usually use to trace the protocol traffic. However the logging is done after some parsing of LSP headers, so it's not a true raw log. It appears that your log is similarly not a raw log (since it also doesn't include LSP headers) so perhaps a good first step would be to capture the raw stdout/stdin going between the processes, with a proxy script something like:
import 'dart:async';
import 'dart:convert';
import 'dart:io';

final logFile = File('log.txt');

Future<void> main(List<String> arguments) async {
  final log = logFile.openWrite(mode: FileMode.writeOnly);
  final command = arguments.first;
  final commandArgs = arguments.skip(1).toList();

  log.writeln('Starting $command ${commandArgs.map((a) => '"a"').join(' ')}');

  final proc = await Process.start(command, commandArgs);
  final completer = Completer<void>();
  void done() {
    if (!completer.isCompleted) {
      completer.complete();
    }
  }

  proc.stdout.listen(
    (data) {
      log.writeln('<< """${utf8.decode(data)}"""');
      stdout.add(data);
    },
    onDone: done,
  );
  stdin.listen(
    (data) {
      log.writeln('>> """${utf8.decode(data)}"""');
      proc.stdin.add(data);
    },
    onDone: done,
  );

  await completer.future;
  await log.close();
}

If you run this script in place of the LSP server, and pass the command/args to it:
dart proxy_script.dart dart bin/snapshots/analysis_server.dart.snapshot --protocol=lsp

Then this will log all traffic in both directions to log.txt.

dart bin/snapshots/analysis_server.dart.snapshot --protocol=lsp

FWIW, you can also just use dart language_server instead of running the snapshot directly. I don't think it should make much difference (at least not for this issue), although it may be worth testing.

Right, but rootPath should be a native path (like D:\foo\bar) but the value being sent looks like it's the path stripped from a Uri (which is fine for non-Windows, but incorrect for Windows). I don't think it's related to the issue here, but it seems like a bug in LSP4E.

I fixed the rootPath value but it made no difference.

FWIW, you can also just use dart language_server instead of running the snapshot directly. I don't think it should make much difference (at least not for this issue), although it may be worth testing.

I tried this but it also made no difference.

If you run this script in place of the LSP server, and pass the command/args to it:
dart proxy_script.dart dart bin/snapshots/analysis_server.dart.snapshot --protocol=lsp

here is the result (I modified the dart script and prefixed each line with a timestamp):
Starting D:\dart-sdk-3.4.4\bin\dart.exe language-server --protocol=lsp
11:32:11.024 >> """Content-Length: 2217

{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"processId":87316,"rootPath":"D:\\workspaces\\runtime-haxe4e\\dart_test","rootUri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","initializationOptions":{"onlyAnalyzeProjectsWithOpenFiles":true,"suggestFromUnimportedLibraries":true},"capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","delete","rename"],"failureHandling":"undo","changeAnnotationSupport":{"groupsOnLabel":true}},"symbol":{"dynamicRegistration":true},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true,"codeLens":{"refreshSupport":true}},"textDocument":{"synchronization":{"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"completionItem":{"snippetSupport":true,"documentationFormat":["markdown","plaintext"],"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"insertTextModeSupport":{"valueSet":[1,2]}},"contextSupport":true,"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]}},"hover":{"contentFormat":["markdown","plaintext"]},"signatureHelp":{},"references":{},"documentHighlight":{},"documentSymbol":{"symbolKind":{"valueSet":[18,17,5,14,9,10,22,24,8,1,12,11,20,6,2,3,21,16,19,25,4,7,15,23,26,13]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{},"definition":{"linkSupport":true},"typeDefinition":{"linkSupport":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"resolveSupport":{"properties":["edit"]},"dynamicRegistration":true},"codeLens":{},"documentLink":{},"colorProvider":{},"rename":{"prepareSupport":true},"publishDiagnostics":{},"foldingRange":{},"selectionRange":{},"inlayHint":{}},"window":{"workDoneProgress":true,"showMessage":{},"showDocument":{"support":true}}},"clientInfo":{"name":"Eclipse IDE","version":"0.18.12.qualifier"},"trace":"off","workspaceFolders":[{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","name":"dart_test"}]}}"""
11:32:11.271 << """Content-Length: 2422
Content-Type: application/vscode-jsonrpc; charset=utf-8

"""
11:32:11.273 << """{"id":"1","jsonrpc":"2.0","result":{"capabilities":{"callHierarchyProvider":true,"codeLensProvider":{},"colorProvider":{"documentSelector":[{"language":"dart","scheme":"file"}]},"completionProvider":{"completionItem":{"labelDetailsSupport":true},"resolveProvider":true,"triggerCharacters":[".","=","(","$","\"","'","{","/",":"]},"definitionProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"}","moreTriggerCharacter":[";"]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["dart.edit.sortMembers","dart.edit.organizeImports","dart.edit.fixAll","dart.edit.fixAllInWorkspace.preview","dart.edit.fixAllInWorkspace","dart.edit.sendWorkspaceEdit","refactor.perform","refactor.validate","dart.logAction","dart.refactor.convert_all_formal_parameters_to_named","dart.refactor.convert_selected_formal_parameters_to_named","dart.refactor.move_selected_formal_parameters_left","dart.refactor.move_top_level_to_file"],"workDoneProgress":true},"experimental":{"textDocument":{"super":{},"augmented":{},"augmentation":{}}},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inlayHintProvider":{"resolveProvider":false},"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":false},"legend":{"tokenModifiers":["documentation","constructor","declaration","importPrefix","instance","static","escape","annotation","control","label","interpolation","void"],"tokenTypes":["annotation","keyword","class","comment","method","variable","parameter","enum","enumMember","type","source","property","namespace","boolean","number","string","function","typeParameter"]},"range":true},"signatureHelpProvider":{"retriggerCharacters":[","],"triggerCharacters":["("]},"textDocumentSync":{"change":2,"openClose":true,"willSave":false,"willSaveWaitUntil":false},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspace":{"fileOperations":{"willRename":{"filters":[{"pattern":{"glob":"**/*.dart","matches":"file"},"scheme":"file"},{"pattern":{"glob":"**/","matches":"folder"},"scheme":"file"}]}},"workspaceFolders":{"changeNotifications":true,"supported":true}},"workspaceSymbolProvider":true},"serverInfo":{"name":"Dart SDK LSP Analysis Server","version":"3.4.4"}}}"""
11:32:11.275 >> """Content-Length: 52

{"jsonrpc":"2.0","method":"initialized","params":{}}"""
11:32:11.276 >> """Content-Length: 232

{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart","languageId":"dart","version":1,"text":"int calculate() {\n  return 6 * 7;\n}\n"}}}"""
11:32:11.276 >> """Content-Length: 161

{"jsonrpc":"2.0","id":"2","method":"textDocument/codeLens","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
11:32:11.277 >> """Content-Length: 172

{"jsonrpc":"2.0","id":"3","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
11:32:11.277 >> """Content-Length: 185

{"jsonrpc":"2.0","method":"workspace/didChangeWorkspaceFolders","params":{"event":{"added":[{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","name":"dart_test"}],"removed":[]}}}Content-Length: 236

{"jsonrpc":"2.0","id":"4","method":"textDocument/inlayHint","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"},"range":{"start":{"line":0,"character":0},"end":{"line":3,"character":0}}}}Content-Length: 166

{"jsonrpc":"2.0","id":"5","method":"textDocument/documentColor","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
11:32:11.292 << """Content-Length: 99
Content-Type: application/vscode-jsonrpc; charset=utf-8

"""
11:32:11.306 << """{"id":1,"jsonrpc":"2.0","method":"workspace/configuration","params":{"items":[{"section":"dart"}]}}"""
11:32:11.307 >> """Content-Length: 194

{"jsonrpc":"2.0","id":1,"result":[{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true}]}"""
11:32:11.320 << """Content-Length: 97
Content-Type: application/vscode-jsonrpc; charset=utf-8

"""
11:32:11.320 << """{"id":2,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"ANALYZING"}}"""
11:32:11.320 << """Content-Length: 38
Content-Type: application/vscode-jsonrpc; charset=utf-8

"""
11:32:11.321 >> """Content-Length: 38

{"jsonrpc":"2.0","id":2,"result":null}"""
11:32:11.378 << """{"id":"2","jsonrpc":"2.0","result":[]}Content-Length: 47
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":"3","jsonrpc":"2.0","result":{"data":[]}}"""
11:32:11.380 >> """Content-Length: 165

{"jsonrpc":"2.0","id":"6","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
11:32:11.380 >> """Content-Length: 165

{"jsonrpc":"2.0","id":"7","method":"textDocument/foldingRange","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
11:32:11.397 >> """Content-Length: 167

{"jsonrpc":"2.0","id":"8","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
11:32:11.416 >> """Content-Length: 206

{"jsonrpc":"2.0","id":"9","method":"textDocument/documentHighlight","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"},"position":{"line":0,"character":0}}}"""
11:32:11.898 >> """Content-Length: 64

{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":"8"}}"""
11:32:11.898 >> """Content-Length: 168

{"jsonrpc":"2.0","id":"10","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""

I have git-with-open-ssh and openssl-mingw packages installed via scoop and on PATH.
Did anything in Dart change that msys2 on PATH would crash the LSP only as of Dart 3.4.x?

I reran the test with --instrumentation-log-file enabled.
Instrumentation log:
1721902233769:Ver:1712602523410441118498:unknown.client.lsp:unknown:1.37.0:3.4.0
1721902233799:Req:{"jsonrpc"::"2.0","id"::"1","method"::"initialize","params"::{"processId"::87316,"rootPath"::"D::\\workspaces\\runtime-haxe4e\\dart_test","rootUri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/","initializationOptions"::{"onlyAnalyzeProjectsWithOpenFiles"::true,"suggestFromUnimportedLibraries"::true},"capabilities"::{"workspace"::{"applyEdit"::true,"workspaceEdit"::{"documentChanges"::true,"resourceOperations"::["create","delete","rename"],"failureHandling"::"undo","changeAnnotationSupport"::{"groupsOnLabel"::true}},"symbol"::{"dynamicRegistration"::true},"executeCommand"::{"dynamicRegistration"::true},"workspaceFolders"::true,"configuration"::true,"codeLens"::{"refreshSupport"::true}},"textDocument"::{"synchronization"::{"willSave"::true,"willSaveWaitUntil"::true,"didSave"::true},"completion"::{"completionItem"::{"snippetSupport"::true,"documentationFormat"::["markdown","plaintext"],"resolveSupport"::{"properties"::["documentation","detail","additionalTextEdits"]},"insertTextModeSupport"::{"valueSet"::[1,2]}},"contextSupport"::true,"completionList"::{"itemDefaults"::["commitCharacters","editRange","insertTextFormat","insertTextMode"]}},"hover"::{"contentFormat"::["markdown","plaintext"]},"signatureHelp"::{},"references"::{},"documentHighlight"::{},"documentSymbol"::{"symbolKind"::{"valueSet"::[18,17,5,14,9,10,22,24,8,1,12,11,20,6,2,3,21,16,19,25,4,7,15,23,26,13]},"hierarchicalDocumentSymbolSupport"::true},"formatting"::{"dynamicRegistration"::true},"rangeFormatting"::{},"definition"::{"linkSupport"::true},"typeDefinition"::{"linkSupport"::true},"codeAction"::{"codeActionLiteralSupport"::{"codeActionKind"::{"valueSet"::["quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport"::true,"resolveSupport"::{"properties"::["edit"]},"dynamicRegistration"::true},"codeLens"::{},"documentLink"::{},"colorProvider"::{},"rename"::{"prepareSupport"::true},"publishDiagnostics"::{},"foldingRange"::{},"selectionRange"::{},"inlayHint"::{}},"window"::{"workDoneProgress"::true,"showMessage"::{},"showDocument"::{"support"::true}}},"clientInfo"::{"name"::"Eclipse IDE","version"::"0.18.12.qualifier"},"trace"::"off","workspaceFolders"::[{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/","name"::"dart_test"}]}}
1721902233857:Res:{"id"::"1","jsonrpc"::"2.0","result"::{"capabilities"::{"callHierarchyProvider"::true,"codeLensProvider"::{},"colorProvider"::{"documentSelector"::[{"language"::"dart","scheme"::"file"}]},"completionProvider"::{"completionItem"::{"labelDetailsSupport"::true},"resolveProvider"::true,"triggerCharacters"::[".","=","(","$","\"","'","{","/","::"]},"definitionProvider"::true,"documentHighlightProvider"::true,"documentLinkProvider"::{"resolveProvider"::false},"documentOnTypeFormattingProvider"::{"firstTriggerCharacter"::"}","moreTriggerCharacter"::[";"]},"documentRangeFormattingProvider"::true,"documentSymbolProvider"::true,"executeCommandProvider"::{"commands"::["dart.edit.sortMembers","dart.edit.organizeImports","dart.edit.fixAll","dart.edit.fixAllInWorkspace.preview","dart.edit.fixAllInWorkspace","dart.edit.sendWorkspaceEdit","refactor.perform","refactor.validate","dart.logAction","dart.refactor.convert_all_formal_parameters_to_named","dart.refactor.convert_selected_formal_parameters_to_named","dart.refactor.move_selected_formal_parameters_left","dart.refactor.move_top_level_to_file"],"workDoneProgress"::true},"experimental"::{"textDocument"::{"super"::{},"augmented"::{},"augmentation"::{}}},"foldingRangeProvider"::true,"hoverProvider"::true,"implementationProvider"::true,"inlayHintProvider"::{"resolveProvider"::false},"referencesProvider"::true,"renameProvider"::{"prepareProvider"::true},"selectionRangeProvider"::true,"semanticTokensProvider"::{"full"::{"delta"::false},"legend"::{"tokenModifiers"::["documentation","constructor","declaration","importPrefix","instance","static","escape","annotation","control","label","interpolation","void"],"tokenTypes"::["annotation","keyword","class","comment","method","variable","parameter","enum","enumMember","type","source","property","namespace","boolean","number","string","function","typeParameter"]},"range"::true},"signatureHelpProvider"::{"retriggerCharacters"::[","],"triggerCharacters"::["("]},"textDocumentSync"::{"change"::2,"openClose"::true,"willSave"::false,"willSaveWaitUntil"::false},"typeDefinitionProvider"::true,"typeHierarchyProvider"::true,"workspace"::{"fileOperations"::{"willRename"::{"filters"::[{"pattern"::{"glob"::"**/*.dart","matches"::"file"},"scheme"::"file"},{"pattern"::{"glob"::"**/","matches"::"folder"},"scheme"::"file"}]}},"workspaceFolders"::{"changeNotifications"::true,"supported"::true}},"workspaceSymbolProvider"::true},"serverInfo"::{"name"::"Dart SDK LSP Analysis Server","version"::"3.4.4"}}}
1721902233863:Req:{"jsonrpc"::"2.0","method"::"initialized","params"::{}}
1721902233881:Res:{"id"::1,"jsonrpc"::"2.0","method"::"workspace/configuration","params"::{"items"::[{"section"::"dart"}]}}
1721902233882:Req:{"jsonrpc"::"2.0","method"::"textDocument/didOpen","params"::{"textDocument"::{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart","languageId"::"dart","version"::1,"text"::"int calculate() {\n  return 6 * 7;\n}\n"}}}
1721902233899:Res:{"id"::2,"jsonrpc"::"2.0","method"::"window/workDoneProgress/create","params"::{"token"::"ANALYZING"}}
1721902233903:Req:{"jsonrpc"::"2.0","id"::"2","method"::"textDocument/codeLens","params"::{"textDocument"::{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}
1721902233906:Req:{"jsonrpc"::"2.0","id"::"3","method"::"textDocument/inlayHint","params"::{"textDocument"::{"uri"::"file::///D::/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"},"range"::{"start"::{"line"::0,"character"::0},"end"::{"line"::3,"character"::0}}}}
1721902233911:Res:{"id"::"2","jsonrpc"::"2.0","result"::[]}

Proxy log:
Starting D:\dart-sdk-3.4.4\bin\dart.exe language-server --protocol=lsp --instrumentation-log-file=d:\instr.log
12:10:33.598 >> """Content-Length: 2217

{"jsonrpc":"2.0","id":"1","method":"initialize","params":{"processId":87316,"rootPath":"D:\\workspaces\\runtime-haxe4e\\dart_test","rootUri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","initializationOptions":{"onlyAnalyzeProjectsWithOpenFiles":true,"suggestFromUnimportedLibraries":true},"capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","delete","rename"],"failureHandling":"undo","changeAnnotationSupport":{"groupsOnLabel":true}},"symbol":{"dynamicRegistration":true},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true,"codeLens":{"refreshSupport":true}},"textDocument":{"synchronization":{"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"completionItem":{"snippetSupport":true,"documentationFormat":["markdown","plaintext"],"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"insertTextModeSupport":{"valueSet":[1,2]}},"contextSupport":true,"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]}},"hover":{"contentFormat":["markdown","plaintext"]},"signatureHelp":{},"references":{},"documentHighlight":{},"documentSymbol":{"symbolKind":{"valueSet":[18,17,5,14,9,10,22,24,8,1,12,11,20,6,2,3,21,16,19,25,4,7,15,23,26,13]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{},"definition":{"linkSupport":true},"typeDefinition":{"linkSupport":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"resolveSupport":{"properties":["edit"]},"dynamicRegistration":true},"codeLens":{},"documentLink":{},"colorProvider":{},"rename":{"prepareSupport":true},"publishDiagnostics":{},"foldingRange":{},"selectionRange":{},"inlayHint":{}},"window":{"workDoneProgress":true,"showMessage":{},"showDocument":{"support":true}}},"clientInfo":{"name":"Eclipse IDE","version":"0.18.12.qualifier"},"trace":"off","workspaceFolders":[{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","name":"dart_test"}]}}"""
12:10:33.858 << """Content-Length: 2422
Content-Type: application/vscode-jsonrpc; charset=utf-8

"""
12:10:33.859 << """{"id":"1","jsonrpc":"2.0","result":{"capabilities":{"callHierarchyProvider":true,"codeLensProvider":{},"colorProvider":{"documentSelector":[{"language":"dart","scheme":"file"}]},"completionProvider":{"completionItem":{"labelDetailsSupport":true},"resolveProvider":true,"triggerCharacters":[".","=","(","$","\"","'","{","/",":"]},"definitionProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"}","moreTriggerCharacter":[";"]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["dart.edit.sortMembers","dart.edit.organizeImports","dart.edit.fixAll","dart.edit.fixAllInWorkspace.preview","dart.edit.fixAllInWorkspace","dart.edit.sendWorkspaceEdit","refactor.perform","refactor.validate","dart.logAction","dart.refactor.convert_all_formal_parameters_to_named","dart.refactor.convert_selected_formal_parameters_to_named","dart.refactor.move_selected_formal_parameters_left","dart.refactor.move_top_level_to_file"],"workDoneProgress":true},"experimental":{"textDocument":{"super":{},"augmented":{},"augmentation":{}}},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inlayHintProvider":{"resolveProvider":false},"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":false},"legend":{"tokenModifiers":["documentation","constructor","declaration","importPrefix","instance","static","escape","annotation","control","label","interpolation","void"],"tokenTypes":["annotation","keyword","class","comment","method","variable","parameter","enum","enumMember","type","source","property","namespace","boolean","number","string","function","typeParameter"]},"range":true},"signatureHelpProvider":{"retriggerCharacters":[","],"triggerCharacters":["("]},"textDocumentSync":{"change":2,"openClose":true,"willSave":false,"willSaveWaitUntil":false},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspace":{"fileOperations":{"willRename":{"filters":[{"pattern":{"glob":"**/*.dart","matches":"file"},"scheme":"file"},{"pattern":{"glob":"**/","matches":"folder"},"scheme":"file"}]}},"workspaceFolders":{"changeNotifications":true,"supported":true}},"workspaceSymbolProvider":true},"serverInfo":{"name":"Dart SDK LSP Analysis Server","version":"3.4.4"}}}"""
12:10:33.861 >> """Content-Length: 52

{"jsonrpc":"2.0","method":"initialized","params":{}}"""
12:10:33.862 >> """Content-Length: 232

{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart","languageId":"dart","version":1,"text":"int calculate() {\n  return 6 * 7;\n}\n"}}}"""
12:10:33.863 >> """Content-Length: 161

{"jsonrpc":"2.0","id":"2","method":"textDocument/codeLens","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
12:10:33.863 >> """Content-Length: 236

{"jsonrpc":"2.0","id":"3","method":"textDocument/inlayHint","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"},"range":{"start":{"line":0,"character":0},"end":{"line":3,"character":0}}}}"""
12:10:33.863 >> """Content-Length: 166

{"jsonrpc":"2.0","id":"4","method":"textDocument/documentColor","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}Content-Length: 172

{"jsonrpc":"2.0","id":"5","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}Content-Length: 185

{"jsonrpc":"2.0","method":"workspace/didChangeWorkspaceFolders","params":{"event":{"added":[{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/","name":"dart_test"}],"removed":[]}}}"""
12:10:33.881 << """Content-Length: 99
Content-Type: application/vscode-jsonrpc; charset=utf-8

"""
12:10:33.899 << """{"id":1,"jsonrpc":"2.0","method":"workspace/configuration","params":{"items":[{"section":"dart"}]}}"""
12:10:33.900 >> """Content-Length: 194

{"jsonrpc":"2.0","id":1,"result":[{"completeFunctionCalls":true,"enableSdkFormatter":true,"enableSnippets":true,"lineLength":140,"renameFilesWithClasses":"prompt","updateImportsOnRename":true}]}"""
12:10:33.911 << """Content-Length: 97
Content-Type: application/vscode-jsonrpc; charset=utf-8

"""
12:10:33.911 << """{"id":2,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"ANALYZING"}}"""
12:10:33.911 << """Content-Length: 38
Content-Type: application/vscode-jsonrpc; charset=utf-8

{"id":"2","jsonrpc":"2.0","result":[]}"""
12:10:33.911 >> """Content-Length: 38

{"jsonrpc":"2.0","id":2,"result":null}"""
12:10:33.951 >> """Content-Length: 167

{"jsonrpc":"2.0","id":"6","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
12:10:34.452 >> """Content-Length: 64

{"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":"6"}}"""
12:10:34.453 >> """Content-Length: 167

{"jsonrpc":"2.0","id":"7","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///D:/workspaces/runtime-haxe4e/dart_test/lib/dart_test.dart"}}}"""
                                                                                12:11:26.288 >> """Content-Length: 60

{"jsonrpc":"2.0","id":"8","method":"shutdown","params":null}"""
12:11:26.947 >> """Content-Length: 90

{"jsonrpc":"2.0","method":"window/workDoneProgress/cancel","params":{"token":"ANALYZING"}}"""

I'm not sure why you only started seeing this recently, but I believe the issue is related to this code:
https://github.com/dart-lang/sdk/blob/65d7197ca8698033e8c7364b34049f98b8aae5bd/pkg/analysis_server/lib/src/lsp/handlers/handler_inlay_hint.dart#L40-L42
In InlayHints (and Completion), we lock the incoming request queue while we get a resolved unit to ensure nothing is changing. However inside requireResolvedUnit we (by default) wait for any in-progress rebuilds to complete. It seems this can produce a deadlock if you request inlay hints as the server sends a request to the client for configuration, because you can lock the request queue (so the configuration response is never handled) and then end up waiting for initialization to complete.
I'll need to review the cases that led to both of these things being done (locking the queue during those operations, and waiting for initialization when trying to get the resolved unit) to determine the best way to handle this.
I think the reason VS Code doesn't trigger this is that a) there is some delay before it starts sending requests for open documents after initialized and inlay hints are delayed even further (after other kinds of requests).

@DanTup thanks for the quick fix. is there a binary dev build I can test?

@sebthom I wouldn't recommend them for general use, but you can get main-channel builds here:
https://gsdview.appspot.com/dart-archive/channels/main/raw/latest/sdk/
The current Windows-x64 build dated 25-Jul-2024 17:56 does include the fix. Please let me know if you still see issues with it.

@DanTup thanks a lot! I can confirm the fix solved the issue. Any chance this patch gets backported/incorporated into a Dart 3.4.5 or 3.5.0 release?

Thanks for confirming!
Unless this is affecting a significant number of users, I don't think this will meet the bar for a cherry-pick.
Unfortunately I also don't have a good workaround, unless you're able to delay the inlayHints request to not be sent so quickly after initialization (VS Code seems to avoid this issue because it doesn't send these kinds of requests quite so quickly).

Unless this is affecting a significant number of users, I don't think this will meet the bar for a cherry-pick.

Not sure if this counts as "significant number", but at least 3 users of Eglot (the LSP client I'm the maintainer of) have come forth with reports of unresponsive reservers after upgrading: https://github.com/joaotavora/eglot/discussions/1405#discussioncomment-10167981
But if I understand correctly, some future version of the server will have a fix.  That's fine I guess, just let me know if I misunderstood.

That's correct, future SDK versions branched after the commit above was made will include the fix.
I did discuss a cherry-pick with the analyzer team, but cherry-picking has some process that requires approval. As this fix has only just been made, it's not had the same level of testing as changes that have gone through dev and beta releases so the cost of not cherry-picking has to be high enough to justify the potential risk of cherry-picking a new change into the release.
I understand this is frustrating (particularly as it seemed to work in the previous verison - which I think is due to subtle timing differences), though from the thread above it does sound like there is a possible workaround (delaying the inlayHints).
I hope this makes sense, and please don't hesitate to CC me on any issues where you think the Dart LSP server may be misbehaving. We'd very much like the LSP server to work with all LSP clients unmodified, and finding issues earlier in a release cycle may reduce the time before a fix gets into a stable release.

I hope this makes sense,

Right. All that sounds reasonable.  It's a regression, but hopefully one that'll soon be fixed (for some value of soon).

We'd very much like the LSP server to work with all LSP clients unmodified, and finding issues earlier in a release cycle may reduce the time before a fix gets into a stable release.

OK, though that's mostly up to "my" users.  They often report the problem client side because that's the frontend.  And very often the problem is client side, though often enough it's not.  Without good recipes (frequently absent) it's hard to know.
But I might suggest (though I've never developed a server), trying our your server with more than one client.  Neovim has one, and Emacs has a couple (of which Eglot is one).  Iow , not only VSCode ;-)   But I've never developed a server, don't know how feasible it is.

But I might suggest (though I've never developed a server), trying our your server with more than one client.

I did try this some time back, but it's difficult to thoroughly test an editor I'm unfamiliar with and there are now quite a large number of LSP clients. It can be difficult (or at least time consuming) to get good coverage and I expect this issue probably does not affect many (if any other) editors.
I hope these kinds of issues are not common - really it was a logic failure on my part to lock the request queue like this without considering that the executing code could block on something calling back to the client. There may be some changes to how requests are scheduled in the future, so hopefully we can remove the possibility of this kind of deadlock entirely.
FWIW, most of the testing while developing) here isn't actually done in VS Code - it's with automated tests written just based on the spec. The goal is always to be a standards-compliant LSP server, though we do sometimes add additional functionality when the base LSP spec isn't enough (this is documented once it's stable so it's available to other editors too - if someone wants to implement the required client-side parts).

I did try this some time back, but it's difficult to thoroughly test an editor I'm unfamiliar with and there are now quite a large number of LSP clients.

I understand.  It's worse for client testing though: I'm fiarly sure there are more servers than there are clients.  I usually manage to test with two or three popular ones though.

FWIW, most of the testing while developing) here isn't actually done in VS Code - it's with automated tests written just based on the spec.

So without a a real client in the loop?  Interesting.

The goal is always to be a standards-compliant LSP server

Great: that's a healthy perspective on LSP

I understand. It's worse for client testing though: I'm fiarly sure there are more servers than there are clients.

I think there are enough of both that trying to test them all isn't viable for either. The usual kinds of per-client issues that come up are where the spec is ambiguous and that usually leads to the spec being clarified, so hopefully we're not seeing lots of issues affecting some clients and not others (or at least, they will decrease over time as the spec becomes more explicit). I'm hopeful the kind of issue here (triggered by specific timing rather than a specific client) isn't a common case though.

So without a a real client in the loop? Interesting.

To be more clear, I do test with VS Code before committing (because there's always a chance I've misunderstood the spec or it was ambiguous and VS Code is doing something different to how I interpreted it), but my point was that the initial work isn't done using VS Code, but implemented with tests based on the spec and then verifying against VS Code afterwards. Part of the reason for switching from the analyzers custom protocol to LSP was for wider editor compatibility (current and future) and this is something we keep in mind when building new features :-)

I think there are enough of both that trying to test them all isn't viable for either.

Agree, I'm just suggesting that between 1 and "a lot" there are other small integers like 2 or 3 ;-). This is all unpaid OSS, afaik, and telling you what editor to use is unfair.  But personally I think it's worth giving one or two other editors a quick spin to check on other UI perspectives on stuff (LSP stuff in particular).  The trend I'm unfortunately seeing is that VSCode is frequently taken as a "de facto" spec or the "spec hole filler".  When, in fact, it doesn't have to be that (and shouldn't be that IMHO).

I'm just suggesting that between 1 and "a lot" there are other small integers like 2 or 3 ;-)

That's true, but I also think that testing in every client except yours probably wouldn't have found this issue. There are significant diminishing returns testing more editors (particularly things like terminal editors that may have a steep learning curve). We are effectively testing two clients here already - the integration test classes (written/code-gen'd based on the spec), and VS Code.
Out of interest - how easily automatable is your client? Would it be easy to script installing it, configuring the Dart LSP server, opening a folder from disk and verifying the LSP server is functional (for example by sending a hover or something)? Having a repo that triggers tests periodically (something like GH Actions) that does some basic testing for other clients is something I've thought about, but it would really need input from those other editors to set up (and possibly troubleshoot failures where it's not clear the server is to blame).

The trend I'm unfortunately seeing is that VSCode is frequently taken as a "de facto" spec or the "spec hole filler". When, in fact, it doesn't have to be that (and shouldn't be that IMHO).

I think we're on the same page. I often open issues in the LSP repo for spec clarification where something isn't clear. Rightly or wrongly though, VS Code's existing behaviour is usually what becomes the spec though and so I don't think it's wrong for servers to assume that until the spec is clarified (it's often necessary to avoid breaking the majority of users). This issue is different though, it's not really about the spec or a specific client - it was a logic issue triggered by some very specific timing of a very specific request. I'm not certain VS Code can't trigger this, though the lack of reports given this release has been out a few months suggests it probably doesn't (or is at least very infrequent enough that people are just restarting and it works without reporting).

Out of interest - how easily automatable is your client?

Fairly scriptable, in Emacs Lisp of course :-)  The hypothetical tests we're talking would be similar to https://github.com/joaotavora/eglot/blob/db91d58374627a195b731a61bead9b4f84a7e4bc/eglot-tests.el#L385 in spirit.
Obviously instead of an Emacs build and stable language server (which is what we do client side), you'd use a stable Emacs and an experimental build of your language server.

Thanks - that unfortunately looks less straightforward (to me) than I'd hoped. If you'd be interested in helping create a script that can open a folder, start an LSP server, and then verify something simple (for example a particular diagnostic is produced after modifying a file on disk), I would happily create a repo to host it and monitor scheduled results.


Add additional language colors

Motivation

We have added colors for languages. But currently we don't have colors for four languages. As soon as UI/UX provides them, please add them to the system.
Additionally UI/UX will give us some extra colors, which we also want to add to the system and just not assign them to a language (yet).
Proposed Solution

Look up the name of colors that were provided
Add colors to the system

Todos:

[ ] Add language colors for Georgian, Slovak, Serbian (cyrillic) and Oromo (for Integreat)
[ ] BLOCKED: Add language colors for Paschto, Uzbek and Macedonian (for Malte)
[ ] BLOCKED: Add some buffer language colors for yet unspecified languages

Alternatives

None
User Story

Additional Context

Figma file for the last colors
PR which shows how colors where added before

Design Requirements

Those languages exist in Integreat and are waiting for color assignment:

Georgian
Oromo
Slovak
Serbian (cyrillic)

Additionally those languages need colors for Malthe:

Mazedonisch
Paschto
Usbekisch

@nassabay Feel free to add informations and comments 😸

Just to add that Serbian has the same colour as Russian: Purple. Maybe it would be a good idea to choose another colour for Serbian.

The colors for Oromo, Slovak, Servian (cyrillic) and Georgian can be found here

@nassabay there is a suggestion from UI/UX team, @hauf-toni? Does it make sense then to implement this issue? Maybe it is better to close this current Issue and open another one like suggested below in Figma? :thinking:

the colors should definitely be implemented. at the same time, the function of being able to set colors yourself would be super important due to the circumstances described above & should be introduced as soon as possible. do you need a design proposal for this?

the colors should definitely be implemented. at the same time, the function of being able to set colors yourself would be super important due to the circumstances described above & should be introduced as soon as possible. do you need a design proposal for this?

it could be implemented like on the picture below with an input set to color, @MizukiTemma what do you think?

@hauf-toni design proposal would be good bcs I cannot imagine well right now what it would look like - where will the users choose these colors? On the statistics page itself? And will the settings be saved to the specific user? Otherwise it defeats the purpose of having the same colors for every language in every region, right?
And going back to your other point - labeling of language names is already done in the CMS. Is that, what you had in mind?

If we implement the user-specific color-language setting, I suggest to open another issue with mention to this one.

On the statistics page itself? And will the settings be saved to the specific user? Otherwise it defeats the purpose of having the same colors for every language in every region, right?

Yes, definetely.

I just wanna add that I wouldn't put the user specific color setting high on our priority list bcs so far we never had any feedback that users could not differentiate the colors in the statistics - and we've been using colors (much less contrasty colors as well) for the last 3 years at least.

@osmers
Ok, then shall we implement only new colors for now?

Opened #2926
Feel free to modify and correct 😸

@MizukiTemma @JoeyStk I think this ticket is done for UI, right? Or what about the Blocked items:
BLOCKED: Add language colors for Paschto, Uzbek and Macedonian (for Malte)
BLOCKED: Add some buffer language colors for yet unspecified languages
Otherwise I would put it on done

@nikolahoff As far as I know we still need the two other blocked items, so the three colors for Malte and then some additional language colors for the future :)

Here are the additional colours

@nikolahoff Thank you very much :) I think ticket is ready for us then :)

@JoeyStk @lunars97 can this issue be moved to in progress then?

@osmers I don't think that active implementation has been done yet


Special PR for missing code to fix double save bug (#196)

Updated function filteredDataTable in annot-tab.vue now provides specialized annotation components with an updated map of unique values for columns and their new annotation values.

This PR is being closed. The code in filteredDataTable in annot-tab.vue was not missing from the double save fix. Instead, this was new code for the field wipe bug #128. The problem of fields being wiped will be addressed by the new annotation functionality for the data dictionary.


Why using a single instruction as input?

Hi Dr. Timo, thanks for your amazing work and code! I'm wondering why do you use a single instruction as input in a batch? I notice that when I generating x2, I have to set the batch size to 2, which is relatively small and results in a poor inference efficiency. What's the intuition behind this design?

Hi @jiacheng-ye, I'm not sure exactly what you mean by "using a single instruction as input" - could you elaborate on that? For generating x1, you can scale up the batch size for maximum inference efficiency (i.e., full GPU usage). For x2, you cannot specify a batch size but instead control the number of entries to generate per input (x1) and label using --num_entries_per_input_and_label .


Scrub extra references to bestman2.

This commit removes a few unnecessary references to bestman2; I've left all the documentation itself, but just made the HDFS and Xrootd docs a bit less bestman2-centric.
Additionally, this includes a mild cleanup of the Hadoop docs.  Honestly, they are still fairly low-quality - but can be further improved over a series of updates.

@brianhlin - typos fixed.  Can you re-review?


Individual day decorator

Im not sure if this is the intended function. I have a decorator where it would mark a single day base on onDateChangeLongListener. Thing is, it will also change the other date's decorator. Why is that?

Fix the issue. I have to modify the dayviewfacade


System.BadImageFormatException: Read out of bounds.

Hey! I'm starting to use Plugin.BLE and I wrote a simple program to scan BLE devices, but for some reason it crashes when I start to find devices (await Adapter.StartScanningForDevicesAsync( );)
Thanks in advance for any clues that help me solve it.
Yours sincerely
Steps to reproduce
using Plugin.BLE;
using Plugin.BLE.Abstractions.Contracts;
using System.Collections.ObjectModel;
using Debug = System.Diagnostics.Debug;
namespace MauiAppBLEV1;
public partial class MainPage : ContentPage
{
readonly IBluetoothLE Ble = CrossBluetoothLE.Current;
readonly IAdapter Adapter = CrossBluetoothLE.Current.Adapter;

public ObservableCollection<String> Devices;
public ObservableCollection<IDevice> Device;

public MainPage()
{
	InitializeComponent();

    Ble.StateChanged += (s,e) =>
    {
        Debug.WriteLine("State: " + e.NewState);
    };

    Adapter.DeviceDiscovered += async (s,a) =>
    {
        Debug.WriteLine("Device: " + a.Device.ToString( ));
        try
            {
            Devices.Add(a.Device.ToString( ));
            Device.Add(a.Device);
            await Adapter.ConnectToDeviceAsync(a.Device);
            var service = await a.Device.GetServicesAsync( );
            Debug.WriteLine(service.ToString( ));
            Debug.WriteLine(Devices + " " + Device);
            }
        catch(Exception ex)
            {
            Debug.WriteLine(ex);
            }

    };

    Adapter.DeviceBondStateChanged += (s,e) =>
    {
        Debug.WriteLine(e.State + " " + e.Address);
    };

    Adapter.DeviceConnected += (s,e) =>
    {
        Debug.WriteLine(e.Device.ToString( ));
    };

    }

private void ButtonBLETest_Clicked(object sender,EventArgs e)
    {
        StartConn();
    }

public async void StartConn()
    {
    Debug.WriteLine(Ble.State);
    try
        {
        await Adapter.StartScanningForDevicesAsync( );
        }
    catch(Exception ex)
        {
        Debug.WriteLine(ex);
        }
    }

}

Expected behavior
Get the list of BLE devices
Actual behavior
System.BadImageFormatException: Read out of bounds.
Crashlog
[OpenGLRenderer] Davey! duration=4664ms; Flags=0, FrameTimelineVsyncId=28142, IntendedVsync=2140444609546, Vsync=2145094609360, InputEventId=-539398772, HandleInputStart=2145100340013, AnimationStart=2145101394752, PerformTraversalsStart=2145102048086, DrawStart=2145102496471, FrameDeadline=2140477942878, FrameInterval=2145100204179, FrameStartTime=16666666, SyncQueued=2145103465898, SyncStart=2145103858294, IssueDrawCommandsStart=2145103927825, SwapBuffers=2145104553502, FrameCompleted=2145109194961, DequeueBufferDuration=18073, QueueBufferDuration=1429843, GpuCompleted=2145109194961, SwapBuffersCompleted=2145106315534, DisplayPresentTime=-5476376617024650016,
Read out of bounds.
System.BadImageFormatException: Read out of bounds.
at System.Reflection.Throw.OutOfBounds()
at System.Reflection.Metadata.Ecma335.MethodDebugInformationTableReader.GetDocument(MethodDebugInformationHandle handle)
at Mono.Debugging.Soft.PortablePdbData.GetDebugInfoFromPdb(MethodMirror method) in D:\a_work\1\s\External\debugger-libs\Mono.Debugging.Soft\PortablePdbData.cs:line 186
at Mono.Debugging.Soft.SoftDebuggerBacktrace.CreateStackFrame(StackFrame frame, Int32 frameIndex) in D:\a_work\1\s\External\debugger-libs\Mono.Debugging.Soft\SoftDebuggerBacktrace.cs:line 157
at Mono.Debugging.Soft.SoftDebuggerBacktrace.GetStackFrames(Int32 firstIndex, Int32 lastIndex) in D:\a_work\1\s\External\debugger-libs\Mono.Debugging.Soft\SoftDebuggerBacktrace.cs:line 128
at Mono.Debugging.Client.Backtrace.GetFrame(Int32 index, Int32 fetchMultipleCount) in D:\a_work\1\s\External\debugger-libs\Mono.Debugging\Mono.Debugging.Client\Backtrace.cs:line 61
at Mono.Debugging.Client.Backtrace..ctor(IBacktrace serverBacktrace) in D:\a_work\1\s\External\debugger-libs\Mono.Debugging\Mono.Debugging.Client\Backtrace.cs:line 27
at Mono.Debugging.Soft.SoftDebuggerSession.HandleBreakEventSet(Event[] es, Boolean dequeuing) in D:\a_work\1\s\External\debugger-libs\Mono.Debugging.Soft\SoftDebuggerSession.cs:line 2186
at Mono.Debugging.Soft.SoftDebuggerSession.EventHandler() in D:\a_work\1\s\External\debugger-libs\Mono.Debugging.Soft\SoftDebuggerSession.cs:line 1802
Configuration
**Version of the Plugin:**3.0.0
Platform: Android 12.0 API 31
Device: Samsung SM-M515F

Hi @juliocarreira,
I'm the friendly issue checker.
Thanks for using the issue template :star2:
I appreciate it very much. I'm sure, the maintainers of this repository will answer, soon.

System.BadImageFormatException: Read out of bounds.

This sounds very strange. From https://learn.microsoft.com/de-de/dotnet/api/system.badimageformatexception:

The exception that is thrown when the file image of a dynamic link library (DLL) or an executable program is invalid.

So you're doing something weird, apparently. Maybe the above page helps you to understand why this happens. I strongly doubt that this is caused by Plugin.BLE and I'm afraid we cannot help you much here ...


Directory listing images

[ ] Check you are using the LATEST release or the development branch.
1.7.2

[ ] Make sure you have SEARCHED existing issues first.
No information there.

[ ] Read the GUIDELINES linked in the yellow notice box above.

[ ] COMPLETE this issue template.

Describe the bug
A clear and concise description of what the bug is.
This is more of a security notice.
I've made a check on Yourls's status.
And found out that  the directory /yourls/images/
Is showing to anyone.
It's not a big deal, but anyone can open that directory, as it's not hidden in the config.
--
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '...'
Scroll down to '...'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

YOURLS version:

Plugins enabled:

PHP version:
Other relevant details depending on the context (server OS & version, MySQL version, browser version, …)

To many plugins to show in an image.
PHP 7.1.23
Additional context
Add any other context about the problem here.

Thanks for filing this issue, @master3395!
If I understand well, you are reporting that the server is listing files for a specific directory.
As this behavior come from the server and not from the application (YOURLS), the only configuration to blame is the server's one.
Server owners and/or administrators can configure their server as they want (basically the most secure possible), and if they can use well-known example such as h5bp/server-configs-*, we, as YOURLS devs, can't help more than pointing to these recommandations.


Ignore language specifiers after newlines in Markdown code blocks

The current implementation thinks the following markdown codeblock is python code, but it's not:
```
python a.py
```

This PR fixes this issue.

Thanks! I made a few improvements and merged the fix.


export 'default' (imported as 'core') was not found in '@angular/core'

Type of Issue
[ ] Bug Report
[ ] Feature Request
[*] I'm stuck

Description
What could be the reson of the issue:
WARNING in ./node_modules/<EMAIL_ADDRESS>72496:41-45 "export 'default' (imported as 'core') was not found in '@angular/core'
    at HarmonyImportSpecifierDependency._getErrors (C:\Projects\SCOPE\scope_concrete\node_modules\webpack\lib\dependencies\HarmonyImportSpecifierDependency.js:65:15)
    at HarmonyImportSpecifierDependency.getWarnings (C:\Projects\SCOPE\scope_concrete\node_modules\webpack\lib\dependencies\HarmonyImportSpecifierDependency.js:39:15)
    at Compilation.reportDependencyErrorsAndWarnings (C:\Projects\SCOPE\scope_concrete\node_modules\webpack\lib\Compilation.js:703:24)
    at Compilation.finish (C:\Projects\SCOPE\scope_concrete\node_modules\webpack\lib\Compilation.js:561:9)
    at applyPluginsParallel.err (C:\Projects\SCOPE\scope_concrete\node_modules\webpack\lib\Compiler.js:506:17)
    at C:\Projects\SCOPE\scope_concrete\node_modules\tapable\lib\Tapable.js:289:11
    at _addModuleChain (C:\Projects\SCOPE\scope_concrete\node_modules\webpack\lib\Compilation.js:507:11)
    at processModuleDependencies.err (C:\Projects\SCOPE\scope_concrete\node_modules\webpack\lib\Compilation.js:477:14)
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)
 @ ./node_modules/<EMAIL_ADDRESS> @ ./src/app/app.component.ts
 @ ./src/app/app.module.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

How To Reproduce
I'm not sure how. All was done as in ng-packaged repo. Please let me know what provide else.
Version Information
ng-packagr: v1.5.1
node: v8.6.0

Here is my package.json:
{
  "name": "scope-concrete",
  "version": "0.0.0",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "ng": "ng",
    "link:common": "cd common && npm ln && cd .. && npm ln @scope/common",
    "start": "npm run link:common && ng serve",
    "start:dev": "npm run start -- --env=dev",
    "start:local": "npm run start -- --env=local",
    "add:common": "rimraf node_modules/@scope && yarn add file:./dist/common",
    "build": "npm run package && yarn add:common && ng build --prod --aot=false",
    "build:dev": "npm run build -- --env=dev",
    "test": "ng test",
    "pree2e": "webdriver-manager update --standalone false --gecko false",
    "e2e": "protractor",
    "package": "ng-packagr"
  },
  "private": true,
  "dependencies": {
    "@agm/core": "~1.0.0-beta.1",
    "@angular/animations": "^4.4.6",
    "@angular/cdk": "2.0.0-beta.11",
    "@angular/common": "^4.4.6",
    "@angular/compiler": "^4.4.6",
    "@angular/core": "^4.4.6",
    "@angular/flex-layout": "2.0.0-beta.9",
    "@angular/forms": "^4.4.6",
    "@angular/http": "^4.4.6",
    "@angular/material": "2.0.0-beta.11",
    "@angular/platform-browser": "^4.4.6",
    "@angular/platform-browser-dynamic": "^4.4.6",
    "@angular/platform-server": "^4.4.6",
    "@angular/router": "^4.4.6",
    "@floydspace/ngx-validation": "^1.0.3",
    "@ngrx/store": "^4.0.3",
    "@ngrx/store-devtools": "^4.0.0",
    "@types/lodash": "^4.14.77",
    "angular2-text-mask": "^8.0.3",
    "angulartics2": "~3.0.0",
    "bootstrap": "^4.0.0-alpha.6",
    "core-js": "^2.5.0",
    "font-awesome": "^4.7.0",
    "hammerjs": "^2.0.8",
    "lodash": "^4.17.4",
    "md2": "0.0.28",
    "moment": "^2.18.1",
    "mydatepicker": "^2.0.27",
    "ng2-page-scroll": "^4.0.0-beta.11",
    "ngrx-store-localstorage": "^0.2.2",
    "ngx-clipboard": "^8.1.1",
    "ngx-sharebuttons": "^3.0.0",
    "primeng": "^4.1.3",
    "rxjs": "^5.4.2",
    "ts-helpers": "^1.1.1",
    "zone.js": "^0.7.2"
  },
  "devDependencies": {
    "@angular/cli": "^1.5.0",
    "@angular/compiler-cli": "^4.4.6",
<EMAIL_ADDRESS>"0.0.35",
    "@types/jasmine": "2.5.38",
    "@types/node": "^6.0.42",
    "codelyzer": "~2.0.0-beta.1",
    "jasmine-core": "2.5.2",
    "jasmine-spec-reporter": "2.5.0",
    "karma": "1.2.0",
    "karma-chrome-launcher": "^2.0.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.0.2",
    "karma-remap-istanbul": "^0.2.1",
    "ng-packagr": "^1.5.1",
    "protractor": "~4.0.13",
    "rimraf": "^2.6.2",
    "ts-node": "1.2.1",
    "tslint": "^4.3.0",
    "typescript": "~2.3.3",
    "webpack": "^3.8.1"
  }
}

The issue was in the angular2-text-mask lib. Not sure why. Perhaps because of it has angular 2 dependencies. Will have to fork it.
Anyway, thank you for the great tool.

As @F1oyd  said and following the solution suggested by @avatsaev in the issue https://github.com/dherges/ng-packagr/issues/210 , I was able to build without errors adding angular2-text-mask

to lib.externals in ng-package.json

{
    "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
    "lib": {
        "entryFile": "public_api.ts",
        "externals": {
            "lodash": "./node_modules/lodash/index.js",
            "angular2-text-mask": "angular2-text-mask"
        }
    }
}


Section title breaking with hyphen

Not really a bug, but I had many section titles that would hyphenate, however, the actual hyphen did not respect the page margins and the Graduate Dissertation reviewer caught this.  A simple fix was to include:
\usepackage[raggedright]{titlesec} % do not break section title words
in the preamble.  I wanted to at least mention this as it took some time to find this solution.  Thanks.

@cwallen08ucsd awesome, thanks for sharing! Any chance you want to submit a pull request? I'd be happy to review/merge!

I think I did the pull request correctly; please let me know if you need me to change anything.  Thanks!

@cwallen08ucsd sorry for the delay. was trying to validate this, got pulled away.
Will try this again today!

Verified that it doesn't break anything - and that's enough for me today :) Huzzah, thanks @cwallen08ucsd !

Awesome, thanks Ben!  Take care out there!


Dependency on Microsoft.Maui.Controls

The version 2.1.0 had no real dependencies. Since Audio 3.0.0 package there is a dependency on Microsoft.Maui.Controls.
Out .NET application doesn't have any dependencies on Maui, and we would like to keep it so. Why would there be a need for a dependency on Maui ?

Good spot! This really shouldn't be the case. I have opened a PR that removes the dependency

Thanks, the dependency is a problem since it includes other stuff which includes dependencies on certain versions of Google which broke our build with a package downgrade.
However just removing the reference now gives warnings when building the Audio project in VS:
warning MA002: Starting with .NET 8, setting  <UseMaui>true</UseMaui>  does not automatically include NuGet package references in your project.  Update your project by including this item:  <PackageReference Include="Microsoft.Maui.Controls" Version="8.0.61" />.  You can skip this warning by setting  <SkipValidateMauiImplicitPackageReferences>true</SkipValidateMauiImplicitPackageReferences>  in your project file.
I think a better approach would be to set UseMaui to false and include a reference to nuget package:

Oh that is a good point! @jfversluis do you think we should remove UseMaui from the project file for the main project like the toolkit now does?

I don't see why not. Let's do it!


PaidCourseRun for legacy orders

We've brought over legacy micromasters order data but one thing we've missed is populating PaidCourseRun based on this data.
Since we'll need this for any new data, it probably makes sense to update our existing scripts.

Yes, we do have an existing migration script 0013_backfill_paid_courserun.py, we can just re-use it to backfill PaidCourseRun

We can't reuse that exact migration because ti's already been run, but you can definitely reuse the code elsewhere.

Yes, that's what I meant by reuse, not exactly the same script


🎮 Game Request
The game is a simple replica of the popular google offline game, The t-rex dinosaur game. You basically have to dodge the obstacles in your way and score as high as possible.
Point down the features
1.Dodging obstacles to gain score.
2.A display to keep count of your score.
3.Endless game.
Select program in which you are contributing
GSSoC23
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @MrVisc !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

/assign

Hey @MrVisc ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


Syntax proposal: allow leading | in type declarations

What I propose is to allow leading | in union type declarations:
type Animal =
  | {type: 'dog'}
  | {type: 'cat'}

But... it's already allowed! :)

Awesome! Sorry for the noise then.


Carthage support

Hi! I was wondering If you could integrate carthage support :)

I would also appreciate that since I don't want to commit 70MB to our repository just for the SDK.

If you're using pods @beseder42 you shouldn't commit the Pods folder (:

True for Pods! But we are using Carthage ;) So right now we would need to commit the Framework-Directory to have it on each machine on checkout. With Carthage everybody could build or download it with the same workflow.

I guess It's not an option :(

yes, please!

Sadly, this is not a priority at the moment.
Once enough people demand support we will add it to the backlog. 🔜
In meantime, promote the issue on Product Pains to hit the critical mass 💪😊 !

Why isn't this a priority? It should be dead easy to add Carthage support, just make the scheme that generates the framework "Shared". Although it might be more complicated for objective-c generated frameworks, that I'm not sure about.


Forge 1.19.2 FerriteCore and Radium Reforged not playing well together anymore

Forge 1.19.2
Radium 0.8.2
FerriteCore 5.0.1
Running on a fresh install with only those two mods active:
2022-10-30-1.log
Running the game with just one or the other mod doesn't result in any crash.

That log only has a crash from betterbiomeblend in it, I assume you uploaded the wrong one? From the title I'm pretty sure this is a duplicate of https://github.com/malte0811/FerriteCore/issues/96#issuecomment-1278544397, if it's something else please put a comment on this (closed) issue and I'll reopen it.


#1299 - Random order of conditions in where clause prevents query optimization

This PR addresses GitHub issue: #1299.
Briefly describe the changes proposed in this PR:
Replace default HashSet with a LinkedHashSet - same set behavior but elements remain in the general order in which the user code adds them. This permits the user code to optimize queries by placing fast patterns before slow patterns.

Hi,
thank you for the patch.
However, the Eclipse Foundation is rather strict about the IPR of contributions, so would it be possible to fill out the Eclipse Contributor Agreement form (you only have to do this once, and you may have to create an Eclipse login), and to signoff the commit (git -s) ?
(see also https://github.com/eclipse/rdf4j/blob/master/.github/CONTRIBUTING.md , step 1)
Thanks

@jeenbroekstra Jumped through the IP hoops

Excellent, thanks


[NotificationHub] Added a new API version to the spec which includes APNS HTTP 2 parameter for APNSCredential

Generated from RestAPI PR: https://github.com/Azure/azure-rest-api-specs/pull/1156

Codecov Report

Merging #1118 into master will decrease coverage by <.01%.
The diff coverage is 25%.

@@            Coverage Diff             @@
##           master    #1118      +/-   ##
==========================================
- Coverage   55.44%   55.44%   -0.01%
==========================================
  Files        2140     2140
  Lines       59721    59716       -5
==========================================
- Hits        33111    33107       -4
+ Misses      26610    26609       -1

Impacted Files
Coverage Δ

...mgmt/notificationhubs/models/namespace_resource.py
29.41% <ø> (ø)
:arrow_up:

...re/mgmt/notificationhubs/models/apns_credential.py
50% <ø> (ø)
:arrow_up:

...tionhubs/azure/mgmt/notificationhubs/models/sku.py
50% <ø> (ø)
:arrow_up:

...azure/mgmt/notificationhubs/models/sub_resource.py
80% <ø> (ø)
:arrow_up:

...shared_access_authorization_rule_resource_paged.py
80% <ø> (ø)
:arrow_up:

...bs/models/namespace_create_or_update_parameters.py
29.41% <ø> (ø)
:arrow_up:

...ls/notification_hub_create_or_update_parameters.py
33.33% <ø> (ø)
:arrow_up:

...odels/shared_access_authorization_rule_resource.py
71.42% <ø> (ø)
:arrow_up:

...cationhubs/azure/mgmt/notificationhubs/__init__.py
100% <ø> (ø)
:arrow_up:

...tificationhubs/models/check_availability_result.py
100% <ø> (ø)
:arrow_up:

... and 23 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0dd14a8...f1a9a05. Read the comment docs.

Replaced by https://github.com/Azure/azure-sdk-for-python/pull/1259


Development of breadcrumbs

Functionally this is mainly finished (in PR #984 ). Only thing that is left is apply the tokens and design

tokens in #781


pass config to webview through new Observable-based webview API

The webview protocol message config had 2 problems:

It was sent (in ChatController.sendConfig) whenever ChatController thought it might have changed, which meant a bunch of unnecessary calls to sendConfig sprinkled throughout ChatController.
It is a different schema from the other configuration, with configFeatures and other things having custom logic to construct them in ChatController.

This solves problem 1. Now, the config is sent through the legacyConfig(): LegacyWebviewConfig observable webview API method to the webview, which means it gets an up-to-date view of the config. It uses the same type, so this does not yet address problem 2, but it makes it much easier to address it.
There are several other fixes and changes to account for how the value is sent immediately when it changes and not on the previously more brittle schedule.
Removes the old config webview protocol message.
There is no user-facing behavior change.
Test plan
CI and e2e

@dominiccooney I updated it and believe I have fixed the theme issue. I'll check the redirect issue as well.

@dominiccooney @pkukielka I reviewed this branch on latest sourcegraph/jetbrains. See https://gist.github.com/sqs/3329c890ce45d7c07b14c5b4e22fa173?permalink_comment_id=5222610#gistcomment-5222610 for a list of issues.
I believe they are all issues that will be fixed by @pkukielka's work on making Cody for JetBrains use the webviews for auth. The "problem" seems to be that it starts to route users to the webview-based auth routes, which don't fully work in JetBrains yet. We can either:

Delay merging this PR until we make the webviews instead route users to the JetBrains plugin settings instead of the webview UI --OR--
Merge this PR and have @pkukielka follow up with those changes

I would prefer the former but defer to you, @dominiccooney.

@sqs let's delay merging this if we can, at least for a couple of days.
My PR still have some rough edges which I would like to correct but I also need to focus on some gateway/remote fixes for Bridgewater and for the release at the end of this week. I think merging it all now could impact release date if we would discover something does not work as expected. So unless this PR blocks something critical in Cody itself I think it will be much safer this way.

@pkukielka Sounds good, will do.

@pkukielka @dominiccooney Good to review/merge now, or still want to wait?

@sqs JetBrains FYI is red, let's not break the JetBrains build.


adr-88: Authorization for fleet-manager admin APIs

What
adr-88: Authorization for fleet-manager admin APIs

What's the status of this PR, to be reviewed?

@emmanuelbernard draft stage, it require some work

@akoserwal - I have updated the ADR. would you mind taking a look?

@emmanuelbernard @tombentley
Please review whenever you get a chance.


Update Logo Details

In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:

[x] Filename in the lowercase format
[x] Image format: png
[x] Image size: 256 by 256 px

Seems one one new token image, i added it here https://github.com/TrustWallet/tokens/commit/b0c7f0260658cdbfc8e60ef81fbff0857bae8f33 .Please to make sure you don't upload duplicates


Add Bridge.ChartJs library

This PR adds bindings for the Chart.js charting library. I have a repo of my own for this library with an example project to see how it is used.
Hope this helps!

Hi, are you guys going to merge this?


Fix typo in README.md

Fix typo in forward word.

Thank you :+1:
Merged: 42641d273772b2dcc55a34f8ae7cd5f6bdea51d5


Configuration to set MessageTemplate as the log record body

Consider a log like the following:
Log.LogInformation("This is a log with {data}", "This is a very long string that I don't want duplicated between an attribute and the log record body...")

The data property is duplicated between the log record body and the data attribute. This increases the cost of data transport and the cost of storage in the backend.
I would like an option where the "message template" is set to the log record body instead of the "rendered message" so that data is not duplicated. This would be like omitting the rendered message when using Serilog.Sinks.Console.
Naively I think that IncludedData could be updated to include an option such as IncludedData.MessageTemplateAsLogBody.
One partial workaround would be to modify the log record using the OpenTelemetry collector, but not everyone uses the collector and the initial data transport still happens.

Thanks for the suggestion; definitely deserves some thought 👍

Well OpenTelemetry .NET just shipped 1.6.0 which makes the OTLP Log Exporter stable. It includes the option IncludeFormattedMessage (link).

Merged in #104


Ensure uniqueness of reference vector in instance panels

Unfortunately, no one metric provides information on which VMs are running in each OSP project (IOW, no one metric has all the labels we want). We must cross-reference a metrics from the collectd virt plugin and ceilometer to present that information in the cloud dashboard.  The PromQL query looks complicated at first glance so I will provide a basic explanation of what is happening:
The goal is to retrieve a unique vector for each VM running in a given OSP project. The values in the vector don't matter since all we are doing is showing that a VM exists. We can get information about the VM name from the collectd virt plugin, and we can get information about the OSP project a VM resides in from ceilometer metrics. Of course, each VM has a UID, and that UID is in both the collectd virt plugin and ceilometer metrics, thus we use that field to cross-reference the vectors. The collectd_virt_memory and ceilometer_cpu metrics were chosen to cross reference, but which metrics are used do no matter except that they both contain VM information and that one is from the collectd virt plugin and the other from ceilometer.
We take advantage of Prometheus "one-to-many" vector matching features.
Vectors1 (the "one" vector in "one-to-many"):
Full: sum by (resource) (label_replace(collectd_virt_memory, \"resource\", \"$1\", \"host\", \".+:(.+):.+\"))
Requirement: A unique vector for each VM UID that also contains the VM name in a label
Breakdown:

section
description
return vector

label_replace(collectd_virt_memory, \"resource\", \"$1\", \"host\", \".+:(.+):.+\"))
extracts VM UID from host label and place in the resource label
the same vector with a new label called resource that has the VM UID in it

sum by (resource, plugin_instance) (ABOVE)
ensure there is only one vector for each (resource,plugin_instance) label pair
Only 1 vector for each (resource,plugin_instance) label pair, plugin_instance being the VM name and resource being the VM UID

Vectors 2 ( the "many" side):
Full: ceilometer_cpu{project=\"$projects\"}"
Requirements: A unique vector for each VM UID that also contains information about which OSP project it is in
Breakdown:

section
description
return vector

ceilometer_cpu{project=\"$projects\"}"
get a vector filtered by OSP project ID
vector containing VM UID (resource label) and OSP Project ID information (project label)

Matching the vectors
Full:  + on(resource) group_right(plugin_instance)
Requirements: return new vectors containing information about VM name and which OSP Project it belongs to, coupled together
Breakdown:

section
description

+ on(resource)
match vectors based on resource label (VM UID) and add them together.

group_right(plugin_instance)
ensure resulting vector from above addition contains the plugin_instance label (VM name) from the collectd virt metric so it can be displayed on the dashboard

Resolves: rhbz#1999291

Any chance this could be created in a recording rule or something to make some of this simpler to make use of?

@leifmadsen a recording rule would make this look less intimidating