text:
Spring release fails with "Call Back" error when calling DotNet functions

The following line in the AL code works fine in Dynamics 365 BC CU6 but fails in Spring Release:
Attempted to issue a client callback while a write transaction started, this can impact performance: CodeUnit 6185472 VM Installation GetClientPath.
The line is
PathTxt:=Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
The application also fails with the same message using other commands:
IF NOT CONFIRM(DeleteWarningTxt) THEN
EXIT;

Hi
Please provide us all the information mentioned in the template, including server runtime and AL language extension version. please also send us a full package that repros the issue.
/Pooya

Hello Pooya,
this is not related to any AL version or so, but is an issue in the transaction management already.
Whenever you call a DotNet function after a MODIFY/INSERT/DELETE/RENAME, without having a COMMIT in between, will cause this error.
Easy to find, I enclose a small page in this form to see what I mean:
`
OBJECT Page 50000 Test
{
OBJECT-PROPERTIES
{
Date=01.05.19;
Time=17:49:00;
Modified=Yes;
Version List=;
}
PROPERTIES
{
}
CONTROLS
{
{ 1   ;    ;Container ;
ContainerType=ContentArea }
{ 2   ;1   ;Group     ;
            CaptionML=ENU=General;
            GroupType=Group }

{ 5   ;2   ;Field     ;
            Name=PingPong;
            ControlAddIn=[Microsoft.Dynamics.Nav.Client.PingPong;PublicKeyToken=31bf3856ad364e35] }

}
CODE
{
EVENT PingPong@-5::AddInReady@2();
BEGIN
  CurrPage.PingPong.Ping(100);
END;

EVENT PingPong@-5::Pong@3();
VAR
  Customer@1000 : Record 18;
BEGIN
  Customer.FINDFIRST;
  Customer.MODIFY;
  CurrPage.PingPong.Stop();
  MESSAGE('Pong');
END;

BEGIN
END.

}
}
`
Running this page will cause the error to pop up.
Even though the result of the (ClientSide) call will return immediately and must be part of the transaction, the error raises.

We assigned it to the appropriate team and we will come back once we get more information.
This GitHub repository is dedicated to handling issues and feedback for the latest Developer Preview releases of the AL development tools for Dynamics 365 Business Central. In the future, for similar issues please contact the support team for a more efficient response.

Based on yammer posts, apparently BC14 introduced an NST setting "AllowSessionCallSuspendWhenWriteTransactionStarted" that has default value false.
Since it's undocumented, I can only guess that the intention is to remind developers that they are holding an active database transaction while venturing into "unknown latency" territory by touching files, webservices or control addins (the client) at the same time, which is a bad design pattern for database performance.
If you switch it to true, I'm guessing the NST will behave just like earlier versions of BC/NAV, but it would be nice with some clarification from MS.
Since the default value is false, I can only assume that the cloud version of BC will enforce this new limitation for performance reasons.

If that assumption is true, then it is very confusing that this issue exists in CRONUS as well.
See issue #4942

If that assumption is true, then it is very weird that this issue exists in CRONUS as well.
See issue #4942
This means that Microsoft releases untested functionality.

This means that Microsoft releases untested functionality.
Who would have thought.

Can confirm this issue on the spring release.
The AllowSessionCallSuspendWhenWriteTransactionStarted setting does not change anything for me.

Thanks so much @kfuglsang with this corrects the problem.

Can confirm this issue on the spring release.
Changing the AllowSessionCallSuspendWhenWriteTransactionStarted setting fixes the issue.

Maybe for On Prem but with MS pushing for everyone in the SaaS model this can't be set.  I'm having problems all over the place with Dimensions which can easily be solved (locally) with this property set to true but that won't work in Sandbox/Production databases!
And it seems the solution is to add a Commit() statement which really goes against the grain .. as a Navision trained developer I remember Hynek Muhlbacher (and other Gurus at that time) saying to absolutely avoid them if at all possible!!

Any news on fix for this ?

Can confirm this issue on the spring release.
Changing the AllowSessionCallSuspendWhenWriteTransactionStarted setting fixes the issue.

Maybe for On Prem but with MS pushing for everyone in the SaaS model this can't be set. I'm having problems all over the place with Dimensions which can easily be solved (locally) with this property set to true but that won't work in the cloud ie. Sandbox/Production databases!
And it seems the solution is to add a Commit() statement which really goes against the grain .. I can still (just about) remember some 24 years ago in Navision on a training course with Hynek Muhlbacher who was saying to absolutely avoid them if at all possible!!

@eque2al I'd be curious to see what your code looks like and what your issues with dimensions are; are you talking about a problem with issuing calls to .NET assemblies during your dimension handling code or just any client callback (like CONFIRM etc)?
The reason I'm confused is that you say that it would also be a problem on SaaS, however, you can't run .NET code on SaaS that isn't part of the base application (i.e. marked as safe by MS).
That means you won't be referencing any arbitrary .NET assemblies in the first place...so that problem isn't relevant to this github issue.
@peikba are you saying that during write transactions you expect CONFIRM to work? It shouldn't and that's by design.
Client callbacks block executing code until the client responds - you can't start a write transaction (which inevitably will take a lock on a table) and then just block the transaction until the user finally gets round to clicking on the "Yes/No" button on a popup. Users sometimes walk away from their machines. Locking the entire GL Entry table because Susan went to get a cup of tea is bad news.
This error exists explicitly to prevent situations like that.
I agree, the fact it's throwing on abitrary .NET code such as Path.GetDirectoryName() is an issue, but it should always throw on CONFIRM calls, because these issue client callbacks which block execution.

Thank you all for the productive discussion! As there is a mitigation that can be applied when using .NET interoperability on-prem and as the issue is outside of the scope of this repository, I will be closing this thread.
It appears that the default behavior is by-design, but I would encourage you to open a support case or file a bug in Collaborate if you disagree.

Can confirm this issue on the spring release.
Changing the AllowSessionCallSuspendWhenWriteTransactionStarted setting fixes the issue.

Maybe for On Prem but with MS pushing for everyone in the SaaS model this can't be set. I'm having problems all over the place with Dimensions which can easily be solved (locally) with this property set to true but that won't work in the cloud ie. Sandbox/Production databases!
And it seems the solution is to add a Commit() statement which really goes against the grain .. I can still (just about) remember some 24 years ago in Navision on a training course with Hynek Muhlbacher who was saying to absolutely avoid them if at all possible!!

@eque2al I'd be curious to see what your code looks like and what your issues with dimensions are; are you talking about a problem with issuing calls to .NET assemblies during your dimension handling code or just any client callback (like CONFIRM etc)?
The reason I'm confused is that you say that it would also be a problem on SaaS, however, you can't run .NET code on SaaS that isn't part of the base application (i.e. marked as safe by MS).
That means you won't be referencing any arbitrary .NET assemblies in the first place...so that problem isn't relevant to this github issue.
@peikba are you saying that during write transactions you expect CONFIRM to work? It shouldn't and that's by design.
Client callbacks block executing code until the client responds - you can't start a write transaction (which inevitably will take a lock on a table) and then just block the transaction until the user finally gets round to clicking on the "Yes/No" button on a popup. Users sometimes walk away from their machines. Locking the entire GL Entry table because Susan went to get a cup of tea is bad news.
This error exists explicitly to prevent situations like that.
I agree, the fact it's throwing on abitrary .NET code such as Path.GetDirectoryName() is an issue, but it should always throw on CONFIRM calls, because these issue client callbacks which block execution.

Hi Charles,
We are seeing the issue under a very simple scenario in BC14, on prem.
Cronus DB
Create a PO with a vendor who has a purchaser attached.
Add a GL line item
In the header - change the purchaser code
Client callback error
The error is because the default NAV code wants to ask the user if they want to update the lines with the new dimension - with a CONFIRM dialog.
This is base nav code without customizations.
What should we do here? Go through the whole database and add IF GUIALLOWED to every base NAV object that uses a confirm? I do not see the 'AllowSessionCallSuspendWhenWriteTransactionStarted ' setting on the NAV service administration tool as an option to check or uncheck - I certainly would if I could. On which tab is this located?
I am a little confused by your comment that the code should be restructured - this is base NAV code that we don't want to change.
Thanks for any help you can provide.

Can confirm this issue on the spring release.
Changing the AllowSessionCallSuspendWhenWriteTransactionStarted setting fixes the issue.

Maybe for On Prem but with MS pushing for everyone in the SaaS model this can't be set. I'm having problems all over the place with Dimensions which can easily be solved (locally) with this property set to true but that won't work in the cloud ie. Sandbox/Production databases!
And it seems the solution is to add a Commit() statement which really goes against the grain .. I can still (just about) remember some 24 years ago in Navision on a training course with Hynek Muhlbacher who was saying to absolutely avoid them if at all possible!!

@eque2al I'd be curious to see what your code looks like and what your issues with dimensions are; are you talking about a problem with issuing calls to .NET assemblies during your dimension handling code or just any client callback (like CONFIRM etc)?
The reason I'm confused is that you say that it would also be a problem on SaaS, however, you can't run .NET code on SaaS that isn't part of the base application (i.e. marked as safe by MS).
That means you won't be referencing any arbitrary .NET assemblies in the first place...so that problem isn't relevant to this github issue.
@peikba are you saying that during write transactions you expect CONFIRM to work? It shouldn't and that's by design.
Client callbacks block executing code until the client responds - you can't start a write transaction (which inevitably will take a lock on a table) and then just block the transaction until the user finally gets round to clicking on the "Yes/No" button on a popup. Users sometimes walk away from their machines. Locking the entire GL Entry table because Susan went to get a cup of tea is bad news.
This error exists explicitly to prevent situations like that.
I agree, the fact it's throwing on abitrary .NET code such as Path.GetDirectoryName() is an issue, but it should always throw on CONFIRM calls, because these issue client callbacks which block execution.

Hi Charles,
We are seeing the issue under a very simple scenario in BC14, on prem.
Cronus DB
Create a PO with a vendor who has a purchaser attached.
Add a GL line item
In the header - change the purchaser code
Client callback error
The error is because the default NAV code wants to ask the user if they want to update the lines with the new dimension - with a CONFIRM dialog.
This is base nav code without customizations.
What should we do here? Go through the whole database and add IF GUIALLOWED to every base NAV object that uses a confirm? I do not see the 'AllowSessionCallSuspendWhenWriteTransactionStarted ' setting on the NAV service administration tool as an option to check or uncheck - I certainly would if I could. On which tab is this located?
I am a little confused by your comment that the code should be restructured - this is base NAV code that we don't want to change.
Thanks for any help you can provide.

Sounds like a bug to me - there should be a hotfix/CU for that.
Interestingly it is actually possible even in V17.1 to hold a lock if you show a confirmation dialog during a write transaction.
I'm pretty sure this wasn't allowed before (it's certainly not allowed in other places like Form.RunModal and Codeunit.Run), but maybe MS are trying to work around it; there are new codeunits for handling Confirm dialogs in the spring 2019 releases which do all the checks you should do. In my opinion it shouldn't be allowed as it can lead to some bad situations if you aren't careful about how you implement.
For example, I did some writes here (I locked the customer table by modifying a few records in a loop on a page action):

I haven't yet responded to the confirm popup, so in another session, as expected I get lock timeouts trying to edit the records:

Also, sure enough, I closed the browser window that was locking the customer table and the lock was held. That means I have to wait 30 minutes before I can write to this table (user sessions auto-timeout after 30 minutes on SaaS).
It really is a bad idea to popup confirmation boxes during write transactions as it can leave the target tables locked for up to 30 minutes.

Let's get the issue to a team who will fix and backport it, as this repository is only for issues related to the AL compiler in latest developer preview environment for Dynamics 365 Business Central. We suggest that you open a support case or file a bug in Collaborate, to ensure that all Business Central users benefit from your catch as soon as possible.
To open a support case, you can:

Open a support request to CSS through the PartnerSource portal
Contact your Service Account Manager (SAM) in your local subsidiary to understand what is included in your contract as of support incident and PAH (Partner Advisory Hours). Your SAM might also direct you "step by step" how to open a support request or how to get credentials, if this is the first time for you or your company

If you file the bug in Collaborate, remember to include steps to reproduce the issue, and the Business Central build number and country version you're using.

authors: AndreyKorepanov PooyaKharamesh ThomasBrodkorb atoader awarnica charlespockert eque2al jbakach jglathe kfuglsang leachxpe peikba qutreson vhn

repo: microsoft/AL


text:
Al: Package not possible with Depency on Base Application

Hi Guys,
Describe the bug
I have problem with Al:Package i a multi dependency Test-app
My App: Test App for an App working in the Warehouse Area of BC.
Dependency on three own and three Microsoft apps:

Base Application
Tests-TestLibraries
System Application

When i download the symbols everthing is fine. When i try to Build the Package the following error is thrown. Other Errors or warning are not shown in vs code.
[Error - 09:28:32] Please report this issue to https://github.com/microsoft/al/issues including information on how to reproduce it, if possible.
Processing of message 'al/createPackage' failed with error: 'Mindestens ein Fehler ist aufgetreten.'
Details:
System.AggregateException: Mindestens ein Fehler ist aufgetreten. ---> System.InvalidCastException: Das Objekt des Typs "Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ReferencePageCustomizationTypeSymbol" kann nicht in Typ "Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.PageExtensionTypeSymbol" umgewandelt werden.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.TestPageMembersBuilder.AddControls(PageTypeSymbol target, Boolean addPageParts) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\TestPageMembersBuilder.cs:Zeile 56.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.TestPageMembersBuilder.AddPageElements(PageTypeSymbol target, Boolean addPageParts) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\TestPageMembersBuilder.cs:Zeile 37.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.TestPageTypeSymbol.LazyGetMembers() in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\BuiltIn\TestPageTypeSymbol.cs:Zeile 81.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.TestPageTypeSymbol.GetMembers() in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\BuiltIn\TestPageTypeSymbol.cs:Zeile 56.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ContainerSymbol.GetMembers(String name) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\ContainerSymbol.cs:Zeile 59.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.LookupMembersInClass(LookupResult result, TypeSymbol type, String name, BoundExpression receiver, LookupOptions options, Binder originalBinder, Boolean diagnose, HashSet`1& useSiteDiagnostics, ApplicationObjectExtensionTypeSymbol excludedExtension) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Lookup.cs:Zeile 226.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.LookupMembersInType(LookupResult result, TypeSymbol type, String name, BoundExpression receiver, LookupOptions options, Binder originalBinder, Boolean diagnose, HashSet`1& useSiteDiagnostics, ApplicationObjectExtensionTypeSymbol excludedExtension) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Lookup.cs:Zeile 146.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.LookupMembersWithFallback(LookupResult result, ContainerSymbol namespaceOrType, String name, HashSet`1& useSiteDiagnostics, LookupOptions options) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder.cs:Zeile 534.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindInstanceMemberAccess(SyntaxNode node, SyntaxNode right, BoundExpression boundLeft, String rightName, Boolean invoked, Boolean isStatement, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Expressions.cs:Zeile 1499.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindMemberAccessWithBoundLeft(ExpressionSyntax node, BoundExpression boundLeft, SimpleNameSyntax right, Boolean invoked, Boolean isStatement, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Expressions.cs:Zeile 1451.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindMemberAccess(MemberAccessExpressionSyntax node, Boolean invoked, Boolean isStatement, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Expressions.cs:Zeile 1382.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindLeftOfMemberAccess(ExpressionSyntax left, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Expressions.cs:Zeile 1878.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindMethodGroup(ExpressionSyntax node, Boolean invoked, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Invocation.cs:Zeile 343.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindInvocationExpression(InvocationExpressionSyntax node, DiagnosticBag diagnostics, Boolean isStatement) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Invocation.cs:Zeile 31.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindExpressionStatement(SyntaxNode node, ExpressionSyntax syntax, Boolean allowsAnyExpression, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:Zeile 491.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindStatement(StatementSyntax node, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:Zeile 80.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindStatements(SyntaxList`1 syntaxStatements, DiagnosticBag diagnostics, Binder binder) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:Zeile 49.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindBlock(BlockSyntax node, DiagnosticBag diagnostics, Binder blockBinder) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:Zeile 29.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.BindMethodBody(MethodSymbol method, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 458.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileMethod(MethodSymbol methodSymbol) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 375.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileMembers(ContainerSymbol containingType, IDictionary`2 emittedMethodsDictionary) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 280.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileObject(ObjectTypeSymbol containingType) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 148.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.VisitObjectType(ObjectTypeSymbol symbol) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 136.
   bei System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   bei System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   bei System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   bei System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   bei System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
   bei System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   bei System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body)
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileModule(ModuleSymbol moduleSymbol) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 115.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileMethodBodies(Compilation compilation, ModuleBuilder moduleBeingBuiltOpt, Boolean hasDeclarationErrors, DiagnosticBag diagnostics, Predicate`1 filterOpt, Predicate`1 radCompilationFilter, CancellationToken cancellationToken) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 103.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Compilation.CompileImpl(ModuleBuilder moduleBuilder, Boolean emittingPdb, DiagnosticBag diagnostics, Predicate`1 filterOpt, Predicate`1 radCompilationFilter, CancellationToken cancellationToken) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\Compilation.cs:Zeile 912.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Compilation.Compile(ModuleBuilder moduleBuilder, Boolean emittingPdb, DiagnosticBag diagnostics, Predicate`1 filterOpt, Predicate`1 radCompilationFilter, CancellationToken cancellationToken) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compilation\Compilation.cs:Zeile 887.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.CommandLine.CommonCompiler.PackageTheModule(Compilation compilation, CompilerTextWriter consoleOutput, CancellationToken cancellationToken, ErrorLogger errorLogger, AnalyzerDriver analyzerDriver, Predicate`1 filterOpt, Predicate`1 radCompilationFilter) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\CommandLine\CommonCompiler.cs:Zeile 672.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.CommandLine.CommonCompiler.RunCoreImpl(CompilerTextWriter consoleOutput, ErrorLogger errorLogger, Compilation compilation, AnalyzerDriver analyzerDriver, IEnumerable`1 analyzerExceptionDiagnostics, IEnumerable`1 additionalTextFiles, CancellationToken cancellationToken) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\CommandLine\CommonCompiler.cs:Zeile 496.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.CommandLine.CommonCompiler.RunCore(CompilerTextWriter consoleOutput, ErrorLogger errorLogger, CancellationToken cancellationToken) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\CommandLine\CommonCompiler.cs:Zeile 448.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.CommandLine.CommonCompiler.Run(CompilerTextWriter consoleOutput, CancellationToken cancellationToken) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\CommandLine\CommonCompiler.cs:Zeile 345.
   bei Microsoft.Dynamics.Nav.EditorServices.Protocol.LanguageServer.Extensions.CreatePackageRequestHandler.<Build>d__8.MoveNext() in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\LanguageServer\Extensions\CreatePackageRequestHandler.cs:Zeile 174.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.Dynamics.Nav.EditorServices.Protocol.LanguageServer.Extensions.CreatePackageRequestHandler.<HandleAsync>d__7.MoveNext() in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\LanguageServer\Extensions\CreatePackageRequestHandler.cs:Zeile 103.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.Dynamics.Nav.EditorServices.Protocol.MessageProtocol.RequestHandlerBase`1.<HandleAsync>d__9.MoveNext() in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\MessageProtocol\RequestHandlerBase.cs:Zeile 43.
--- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
   bei System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   bei Microsoft.Dynamics.Nav.EditorServices.Protocol.RequestRegistry.<Process>d__6.MoveNext() in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.EditorServices.Protocol\Endpoints\RequestRegistry.cs:Zeile 64.
---> (Interne Ausnahme #0) System.InvalidCastException: Das Objekt des Typs "Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ReferencePageCustomizationTypeSymbol" kann nicht in Typ "Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.PageExtensionTypeSymbol" umgewandelt werden.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.TestPageMembersBuilder.AddControls(PageTypeSymbol target, Boolean addPageParts) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\TestPageMembersBuilder.cs:Zeile 56.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.TestPageMembersBuilder.AddPageElements(PageTypeSymbol target, Boolean addPageParts) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\Members\TestPageMembersBuilder.cs:Zeile 37.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.TestPageTypeSymbol.LazyGetMembers() in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\BuiltIn\TestPageTypeSymbol.cs:Zeile 81.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.TestPageTypeSymbol.GetMembers() in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\BuiltIn\TestPageTypeSymbol.cs:Zeile 56.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Symbols.ContainerSymbol.GetMembers(String name) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Symbols\ContainerSymbol.cs:Zeile 59.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.LookupMembersInClass(LookupResult result, TypeSymbol type, String name, BoundExpression receiver, LookupOptions options, Binder originalBinder, Boolean diagnose, HashSet`1& useSiteDiagnostics, ApplicationObjectExtensionTypeSymbol excludedExtension) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Lookup.cs:Zeile 226.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.LookupMembersInType(LookupResult result, TypeSymbol type, String name, BoundExpression receiver, LookupOptions options, Binder originalBinder, Boolean diagnose, HashSet`1& useSiteDiagnostics, ApplicationObjectExtensionTypeSymbol excludedExtension) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Lookup.cs:Zeile 146.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.LookupMembersWithFallback(LookupResult result, ContainerSymbol namespaceOrType, String name, HashSet`1& useSiteDiagnostics, LookupOptions options) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder.cs:Zeile 534.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindInstanceMemberAccess(SyntaxNode node, SyntaxNode right, BoundExpression boundLeft, String rightName, Boolean invoked, Boolean isStatement, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Expressions.cs:Zeile 1499.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindMemberAccessWithBoundLeft(ExpressionSyntax node, BoundExpression boundLeft, SimpleNameSyntax right, Boolean invoked, Boolean isStatement, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Expressions.cs:Zeile 1451.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindMemberAccess(MemberAccessExpressionSyntax node, Boolean invoked, Boolean isStatement, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Expressions.cs:Zeile 1382.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindLeftOfMemberAccess(ExpressionSyntax left, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Expressions.cs:Zeile 1878.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindMethodGroup(ExpressionSyntax node, Boolean invoked, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Invocation.cs:Zeile 343.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindInvocationExpression(InvocationExpressionSyntax node, DiagnosticBag diagnostics, Boolean isStatement) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Invocation.cs:Zeile 31.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindExpressionStatement(SyntaxNode node, ExpressionSyntax syntax, Boolean allowsAnyExpression, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:Zeile 491.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindStatement(StatementSyntax node, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:Zeile 80.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindStatements(SyntaxList`1 syntaxStatements, DiagnosticBag diagnostics, Binder binder) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:Zeile 49.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.Binder.BindBlock(BlockSyntax node, DiagnosticBag diagnostics, Binder blockBinder) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Binder\Binder_Statements.cs:Zeile 29.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.BindMethodBody(MethodSymbol method, DiagnosticBag diagnostics) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 458.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileMethod(MethodSymbol methodSymbol) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 375.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileMembers(ContainerSymbol containingType, IDictionary`2 emittedMethodsDictionary) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 280.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.CompileObject(ObjectTypeSymbol containingType) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 148.
   bei Microsoft.Dynamics.Nav.CodeAnalysis.MethodCompiler.VisitObjectType(ObjectTypeSymbol symbol) in F:\a\360\s\source\Prod\Microsoft.Dynamics.Nav.CodeAnalysis\Compiler\MethodCompiler.cs:Zeile 136.
   bei System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   bei System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   bei System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object <p0>)<---

To Reproduce
All i cant say is that the error comes with the depency on the base application. When i remove the base app depency everything is fine.
Expected behavior
Al:Package works 😊
Versions:
AL Language 4.0.172584
Base App 15.0.36145.0

Any Status on this? By now Wave 2 has shipped and we cannot move our development over to Wave 2 because of this.

We have a fix for it in our master branch and it should also be part of the first CU.

do You happen to know if that already made it to a preview container?

I'm not sure whether the fix made it until the container yet, but it should get there in the next days.
The fix should be available for AL extensions with a version higher than 4.0.181862.
The current AL code extension from the marketplace should then contain the fix for this issue (version is 4.0.182565). Can you try it out and tell me if you are now able to compile your extension without facing the stack trace mentioned above?
Note that it should enable you to compile in VS Code, but you would still fail publishing your extension as the code is recompiled on the server where the bug is not fixed. For having a full publish you will have to wait for a preview container with the fix.
As a workaround, I can tell you more about how this issue is triggered, so that you can try to comment out temporarily some code to be unblocked. It happens when a page for which a page customization is defined is used as a TestPage. So commenting out the page customization or the TestPage usage should then be mitigated the issue.

Will try later if we can compile now in VS Code. Anyway, yesterday evening no container image we tried had the fix, so no pipeline would accept the code.
So I basically moved two test extensions out of the folder that gets built and that should unblock us for a couple of days.

The fix for this issue has been checked in to the master branch. It will be available in the bcinsider.azurecr.io/bcsandbox-master Docker image starting from platform build number 36631.
If you don’t have access to these images you need to become part of the Ready2Go program: aka.ms/readytogo
For more details on code branches and docker images please read:
https://blogs.msdn.microsoft.com/nav/2018/05/03/al-developer-previews-multiple-releases-and-github/
https://blogs.msdn.microsoft.com/freddyk/2018/04/16/which-docker-image-is-the-right-for-you/

source: gharchive/issue

authors: ALGitHubBot RafaelKoch frobiii qutreson

license: MIT

license_type: permissive

license_source: github-api


text:
[EventRequest] Codeunit 22 Item Jnl.-Post Line - OnPostOutputOnBeforeCalcDirAndIndirectCostAmts

Requesting a new event publisher on Codeunit 22 Item Jnl.-Post Line
Event
OnPostOutputOnBeforeCalcDirAndIndirectCostAmts(ItemJournalLine : Record "Item Journal Line"; VAR DirCostAmt : Decimal; VAR IndirCostAmt : Decimal; ValuedQty : Decimal; VAR IsHandled : Boolean)
Code
LOCAL PostOutput()
WITH ItemJnlLine DO BEGIN
  IF "Stop Time" <> 0 THEN BEGIN
    InsertCapLedgEntry(CapLedgEntry,"Stop Time","Stop Time");
    SkipPost := OnlyStopTime;
    OnPostOutputOnAfterInsertCapLedgEntry(ItemJnlLine,SkipPost);
    IF SkipPost THEN
      EXIT;
  END;

  IF OutputValuePosting THEN BEGIN
    PostItem;
    EXIT;
  END;

  IF Subcontracting THEN
    ValuedQty := "Invoiced Quantity"
  ELSE
    ValuedQty := CalcCapQty;

  IF Item.GET("Item No.") THEN
    IF NOT CalledFromAdjustment THEN
      Item.TESTFIELD("Inventory Value Zero",FALSE);

  IF "Item Shpt. Entry No." <> 0 THEN
    CapLedgEntry.GET("Item Shpt. Entry No.")
  ELSE BEGIN
    TESTFIELD("Order Type","Order Type"::Production);
    ProdOrder.GET(ProdOrder.Status::Released,"Order No.");
    ProdOrder.TESTFIELD(Blocked,FALSE);
    ProdOrderLine.LOCKTABLE;
    ProdOrderLine.GET(ProdOrder.Status::Released,"Order No.","Order Line No.");

    "Inventory Posting Group" := ProdOrderLine."Inventory Posting Group";

    ProdOrderRtngLine.SETRANGE(Status,ProdOrderRtngLine.Status::Released);
    ProdOrderRtngLine.SETRANGE("Prod. Order No.","Order No.");
    ProdOrderRtngLine.SETRANGE("Routing Reference No.","Routing Reference No.");
    ProdOrderRtngLine.SETRANGE("Routing No.","Routing No.");
    IF ProdOrderRtngLine.FINDFIRST THEN BEGIN
      TESTFIELD("Operation No.");
      TESTFIELD("No.");

      IF Type = Type::"Machine Center" THEN BEGIN
        MachCenter.GET("No.");
        MachCenter.TESTFIELD(Blocked,FALSE);
      END;
      WorkCenter.GET("Work Center No.");
      WorkCenter.TESTFIELD(Blocked,FALSE);

      ApplyCapNeed("Setup Time (Base)","Run Time (Base)");
    END;

    IF "Operation No." <> '' THEN BEGIN
      ProdOrderRtngLine.GET(
        ProdOrderRtngLine.Status::Released,"Order No.",
        "Routing Reference No.","Routing No.","Operation No.");
      IF Finished THEN
        ProdOrderRtngLine."Routing Status" := ProdOrderRtngLine."Routing Status"::Finished
      ELSE
        ProdOrderRtngLine."Routing Status" := ProdOrderRtngLine."Routing Status"::"In Progress";
      LastOperation := (NOT NextOperationExist(ProdOrderRtngLine));
      OnPostOutputOnBeforeProdOrderRtngLineModify(ProdOrderRtngLine,ProdOrderLine,ItemJnlLine);
      ProdOrderRtngLine.MODIFY;
    END ELSE
      LastOperation := TRUE;

    IF Subcontracting THEN
      InsertCapLedgEntry(CapLedgEntry,Quantity,"Invoiced Quantity")
    ELSE
      InsertCapLedgEntry(CapLedgEntry,ValuedQty,ValuedQty);

    IF "Output Quantity" >= 0 THEN
      FlushOperation(ProdOrder,ProdOrderLine);
  END;

>>> New Code
  IsHandled := FALSE;
  OnPostOutputOnBeforeCalcDirAndIndirectCostAmts(ItemJnlLine,DirCostAmt,IndirCostAmt,ValuedQty,IsHandled);
  IF NOT IsHandled THEN

<<< New Code End
    CalcDirAndIndirCostAmts(DirCostAmt,IndirCostAmt,ValuedQty,"Unit Cost","Indirect Cost %","Overhead Rate");
  InsertCapValueEntry(CapLedgEntry,"Value Entry Type"::"Direct Cost",ValuedQty,ValuedQty,DirCostAmt);
  InsertCapValueEntry(CapLedgEntry,"Value Entry Type"::"Indirect Cost",ValuedQty,0,IndirCostAmt);

  IF LastOperation AND ("Output Quantity" <> 0) THEN BEGIN
    CheckItemTracking;
    IF ("Output Quantity" < 0) AND NOT Adjustment THEN BEGIN
      IF "Applies-to Entry" = 0 THEN
        "Applies-to Entry" := FindOpenOutputEntryNoToApply(ItemJnlLine);
      TESTFIELD("Applies-to Entry");
      ItemLedgerEntry.GET("Applies-to Entry");
      TESTFIELD("Lot No.",ItemLedgerEntry."Lot No.");
      TESTFIELD("Serial No.",ItemLedgerEntry."Serial No.");
    END;
    MfgItem.GET(ProdOrderLine."Item No.");
    MfgItem.TESTFIELD("Gen. Prod. Posting Group");

    IF Subcontracting THEN
      MfgUnitCost := ProdOrderLine."Unit Cost"
    ELSE
      IF MfgSKU.GET(ProdOrderLine."Location Code",ProdOrderLine."Item No.",ProdOrderLine."Variant Code") THEN
        MfgUnitCost := MfgSKU."Unit Cost"
      ELSE
        MfgUnitCost := MfgItem."Unit Cost";

    Amount := "Output Quantity" * MfgUnitCost;
    "Amount (ACY)" := ACYMgt.CalcACYAmt(Amount,"Posting Date",FALSE);
    OnPostOutputOnAfterUpdateAmounts(ItemJnlLine);

    "Gen. Bus. Posting Group" := ProdOrder."Gen. Bus. Posting Group";
    "Gen. Prod. Posting Group" := MfgItem."Gen. Prod. Posting Group";
    IF "Output Quantity (Base)" * ProdOrderLine."Remaining Qty. (Base)" <= 0 THEN
      ReTrack := TRUE
    ELSE
      IF NOT CalledFromInvtPutawayPick THEN
        ReserveProdOrderLine.TransferPOLineToItemJnlLine(
          ProdOrderLine,ItemJnlLine,"Output Quantity (Base)");

    PostWhseJnlLine := TRUE;
    OnPostOutputOnBeforeCreateWhseJnlLine(ItemJnlLine,PostWhseJnlLine);
    IF PostWhseJnlLine THEN BEGIN
      GetLocation("Location Code");
      IF Location."Bin Mandatory" AND (NOT CalledFromInvtPutawayPick) THEN BEGIN
        WMSMgmt.CreateWhseJnlLineFromOutputJnl(ItemJnlLine,WhseJnlLine);
        WMSMgmt.CheckWhseJnlLine(WhseJnlLine,2,0,FALSE);
      END;
    END;

    Description := ProdOrderLine.Description;
    IF Subcontracting THEN BEGIN
      "Document Type" := "Document Type"::" ";
      "Document No." := "Order No.";
      "Document Line No." := 0;
      "Invoiced Quantity" := 0;
    END;
    PostItem;
    UpdateProdOrderLine(ProdOrderLine,ReTrack);
    IF PostWhseJnlLine THEN
      IF Location."Bin Mandatory" AND (NOT CalledFromInvtPutawayPick) THEN
        WhseJnlRegisterLine.RegisterWhseJnlLine(WhseJnlLine);
  END;
END;

OnAfterPostOutput(GlobalItemLedgEntry,ProdOrderLine,ItemJnlLine);

In Our Solution we do not want to caclculate Production Costs on output time postings for machine and work centers for Job related production orders.
Therefore we need to have this publisher to extend. Please add the requested publisher.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.

authors: JesperSchulz fvanderhek

repo: microsoft/ALAppExtensions


text:
[Event Request] codeunit 99000834 "Purch. Line-Reserve" - procedure UpdateStatistics

hey, please add following event.
    local procedure UpdateStatistics(CalcReservEntry: Record "Reservation Entry"; var TempEntrySummary: Record "Entry Summary" temporary; AvailabilityDate: Date; DocumentType: Enum "Purchase Document Type"; Positive: Boolean; var TotalQuantity: Decimal)
    var
        PurchLine: Record "Purchase Line";
        AvailabilityFilter: Text;
    begin
        if not PurchLine.ReadPermission then
            exit;

        AvailabilityFilter := CalcReservEntry.GetAvailabilityFilter(AvailabilityDate, Positive);
        PurchLine.FilterLinesForReservation(CalcReservEntry, DocumentType, AvailabilityFilter, Positive);
        if PurchLine.FindSet then
            repeat
                PurchLine.CalcFields("Reserved Qty. (Base)");
                // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
                OnBeforeCheckPurchLineSpecialOrderUpdateStatistics(PurchLine);
                // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
                if not PurchLine."Special Order" then begin
                    TempEntrySummary."Total Reserved Quantity" += PurchLine."Reserved Qty. (Base)";
                    TotalQuantity += PurchLine."Outstanding Qty. (Base)";
                end;
            until PurchLine.Next() = 0;

    // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    [IntegrationEvent(false, false)]
    local procedure OnBeforeCheckPurchLineSpecialOrderUpdateStatistics(var PurchaseLine: Record "Purchase Line")
    begin
    end;
    // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.

authors: JesperSchulz sschuh


text:
[Event Request] Codeunit 1105 - GetGLEntries

In Combination with https://github.com/microsoft/ALAppExtensions/issues/23478,
-> allows filling both cost center and cost object,
and checking a (customspecific) validity date range for a cost object.
            if not SkipGLEntry(GLEntry) then
                case true of // only need Cost Center or Cost Object
                    GetCostCenterCode(GLEntry."Dimension Set ID", CostCenterCode),
                    GetCostObjectCode(GLEntry."Dimension Set ID", CostObjectCode):
                        begin
                            // New
                            ishandled := false;
                            OnBeforeProcessGLEntryInGetGLEntries(GLentry,CostCenterCode,CostObjectCode,BatchRun,IsHandled);
                            if not IsHandled then begin
                            // New
                              case CostType."Combine Entries" of
                                  CostType."Combine Entries"::None:
                                      PostingDate := GLEntry."Posting Date";
                                  CostType."Combine Entries"::Month:
                                      begin
                                          PostingDate := CalcDate('<CM>', GLEntry."Posting Date");
                                          CombinedEntryText := StrSubstNo(Text003, PostingDate);
                                      end;
                                  CostType."Combine Entries"::Day:
                                      begin
                                          PostingDate := GLEntry."Posting Date";
                                          CombinedEntryText := StrSubstNo(Text004, PostingDate);
                                      end;
                              end;

                              CombineEntries := CostType."Combine Entries" <> CostType."Combine Entries"::None;
                              OnGetGLEntriesOnBeforeCombineEntries(CostCenterCode, GLEntry, CostType, CombineEntries);
                              if CombineEntries then begin
                                  TempCostJnlLine.Reset();
                                  TempCostJnlLine.SetRange("Cost Type No.", CostType."No.");
                                  if CostCenterCode <> '' then
                                      TempCostJnlLine.SetRange("Cost Center Code", CostCenterCode)
                                  else
                                      TempCostJnlLine.SetRange("Cost Object Code", CostObjectCode);
                                  TempCostJnlLine.SetRange("Posting Date", PostingDate);
                                  if TempCostJnlLine.FindFirst() then
                                      ModifyCostJournalLine(CombinedEntryText)
                                  else
                                      InsertCostJournalLine(CostCenterCode, CostObjectCode);
                              end else
                                  InsertCostJournalLine(CostCenterCode, CostObjectCode);

                              if BatchRun and ((GLEntry."Entry No." mod 100) = 0) then begin
                                  Window.Update(2, CostType."No.");
                                  Window.Update(3, Format(NoOfCombinedEntries));
                                  Window.Update(4, Format(NoOfJnlLines));
                              end;
                            // new
                            end;
                            // new
                        end;

                        [IntegrationEvent(false, false)]
                        local procedure OnGetGLEntriesOnBeforeCombineEntries(var GLEntry: Record "G/L Entry"; var CostCenterCode: Code[20]; var CostObjectCode: Code[20];BatchRun: Boolean; var IsHandled: Boolean)
                        begin
                        end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.
Build ID: 10889.

authors: JesperSchulz stephanweidmann


text:
[Event Change Request] codeunit 1535 "Approvals Mgmt." - OnShowApprovalCommentsOnAfterSetApprovalCommentLineFilters

Describe the request
Hello,
We would like to change the filters set on ApprovalEntry variable that is filtered in ShowApprovalComments procedure in ApprovalsMgmt. There already is a publisher there OnShowApprovalCommentsOnAfterSetApprovalCommentLineFilters that would work for us, just there is an issue - there is no pass by reference on it for the ApprovalEntry variable. Could you please add it?
...
            DATABASE::"Sales Header":
                begin
                    ApprovalCommentLine.SetRange("Table ID", RecRef.Number);
                    ApprovalCommentLine.SetRange("Record ID to Approve", RecRef.RecordId);
                    FindOpenApprovalEntryForCurrUser(ApprovalEntry,RecRef.RecordId);
                end;
            else
                SetCommonApprovalCommentLineFilters(RecRef, ApprovalEntry, ApprovalCommentLine);
        end;
        OnShowApprovalCommentsOnAfterSetApprovalCommentLineFilters(ApprovalCommentLine, ApprovalEntry, RecRef); <--- event where var should be added to the ApprovalEntry

        if IsNullGuid(WorkflowStepInstanceID) and (not IsNullGuid(ApprovalEntry."Workflow Step Instance ID")) then
            WorkflowStepInstanceID := ApprovalEntry."Workflow Step Instance ID";

Old signature:
    [IntegrationEvent(false, false)]
    local procedure OnShowApprovalCommentsOnAfterSetApprovalCommentLineFilters(var ApprovalCommentLine: Record "Approval Comment Line"; ApprovalEntry: Record "Approval Entry"; RecRef: RecordRef)
    begin
    end;

New signature:
    [IntegrationEvent(false, false)]
    local procedure OnShowApprovalCommentsOnAfterSetApprovalCommentLineFilters(var ApprovalCommentLine: Record "Approval Comment Line"; var ApprovalEntry: Record "Approval Entry"; RecRef: RecordRef)
    begin
    end;

Additional context
Please add pass by reference to ApprovalEntry parameter in ApprovalsMgmt so we could adjust the filters using the event. Thank you!
Internal work item: AB#545017

Where do you use those filters? The function does not find any records for that table after this call.


text:
[Event Request] Codeunit 1255 "Match Bank Payments" Fix OnFindMatchingEntriesOnBeforeFindFirst parameters

Describe the request
The parameters used to call OnFindMatchingEntriesOnBeforeFindFirst are: TempBankAccReconciliationLine, TempLedgerEntryMatchingBuffer, AccountType, ApplyEntries.
The event has the following parameters:
var TempBankAccReconciliationLine: Record "Bank Acc. Reconciliation Line" temporary; var TempLedgerEntryMatchingBuffer: Record "Ledger Entry Matching Buffer" temporary; AccountType: Enum "Gen. Journal Account Type"; var SkipOtherEntries: Boolean
The last parameter ApplyEntries is actually SkipOtherEntries on the event publisher, the current situation is misleading and the variable SkipOtherEntries cannot actually be updated by the event.
Suggested update: add an additional parameter to actually manage SkipOtherEntries variable.
Additional context
The variable SkipOtherEntries cannot be updated, but there is a wrong parameter in the event publisher.
Internal work item: AB#549349

Availability update: We will publish a fix for this issue in the next update for release 25.
Build ID to track: 26242.


text:
[Event Request] Codeunit 8 AccSchedManagement - CalcCell

Hi,
can you please add the following Publisher in CalcCell?
procedure CalcCell(var AccSchedLine: Record "Acc. Schedule Line"; var ColumnLayout: Record "Column Layout"; CalcAddCurr: Boolean): Decimal
var
Result: Decimal;
begin
// begin
OnBeforeCalcCell(AccSchedLine,ColumnLayout,CalcAddCurr);
//end
AccountScheduleLine.CopyFilters(AccSchedLine);
....................................
[IntegrationEvent(false, false)]
local procedure OnBeforeCalcCell(VAR AccSchedLine : Record "Acc. Schedule Line";VAR ColumnLayout : Record "Column Layout";CalcAddCurr : Boolean)

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.

authors: Halilovast bc-ghost


text:
[Event Request] Page 30 - Item Card - OnAfterEnablePlanningControls

Hi AL-Team,
can you please add the following publisher with "IncludeSender" to EnablePlanningControls?
    local procedure EnablePlanningControls()
    var
        PlanningGetParam: Codeunit "Planning-Get Parameters";
        TimeBucketEnabled: Boolean;
        SafetyLeadTimeEnabled: Boolean;
        SafetyStockQtyEnabled: Boolean;
        ReorderPointEnabled: Boolean;
        ReorderQtyEnabled: Boolean;
        MaximumInventoryEnabled: Boolean;
        MinimumOrderQtyEnabled: Boolean;
        MaximumOrderQtyEnabled: Boolean;
        OrderMultipleEnabled: Boolean;
        IncludeInventoryEnabled: Boolean;
        ReschedulingPeriodEnabled: Boolean;
        LotAccumulationPeriodEnabled: Boolean;
        DampenerPeriodEnabled: Boolean;
        DampenerQtyEnabled: Boolean;
        OverflowLevelEnabled: Boolean;
    begin
        PlanningGetParam.SetUpPlanningControls("Reordering Policy", "Include Inventory",
          TimeBucketEnabled, SafetyLeadTimeEnabled, SafetyStockQtyEnabled,
          ReorderPointEnabled, ReorderQtyEnabled, MaximumInventoryEnabled,
          MinimumOrderQtyEnabled, MaximumOrderQtyEnabled, OrderMultipleEnabled, IncludeInventoryEnabled,
          ReschedulingPeriodEnabled, LotAccumulationPeriodEnabled,
          DampenerPeriodEnabled, DampenerQtyEnabled, OverflowLevelEnabled);

        TimeBucketEnable := TimeBucketEnabled;
        SafetyLeadTimeEnable := SafetyLeadTimeEnabled;
        SafetyStockQtyEnable := SafetyStockQtyEnabled;
        ReorderPointEnable := ReorderPointEnabled;
        ReorderQtyEnable := ReorderQtyEnabled;
        MaximumInventoryEnable := MaximumInventoryEnabled;
        MinimumOrderQtyEnable := MinimumOrderQtyEnabled;
        MaximumOrderQtyEnable := MaximumOrderQtyEnabled;
        OrderMultipleEnable := OrderMultipleEnabled;
        IncludeInventoryEnable := IncludeInventoryEnabled;
        ReschedulingPeriodEnable := ReschedulingPeriodEnabled;
        LotAccumulationPeriodEnable := LotAccumulationPeriodEnabled;
        DampenerPeriodEnable := DampenerPeriodEnabled;
        DampenerQtyEnable := DampenerQtyEnabled;
        OverflowLevelEnable := OverflowLevelEnabled;

        // NEW >>>>
        OnAfterEnablePlanningControls();
        // NEW <<<<
    end;

 [IntegrationEvent(true, false)]
    local procedure OnAfterEnablePlanningControls()
    begin
    end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.

authors: MattiLE bc-ghost


text:
[Event Request] Codeunit 99000774 Function CreateLoadForward

Hello Team,
we need a new publisher for accessing the StopLoop
OLD CODE
CalendarEntry := OldCalendarEntry;
StopLoop := CalendarEntry.NEXT = 0;

END;
UNTIL StopLoop;
NEW CODE
CalendarEntry := OldCalendarEntry;
StopLoop := CalendarEntry.NEXT = 0;

END;
OnBeforeStopLoopForward(Var StopLoop, TimeType, ProdOrderRoutingLine);
UNTIL StopLoop;
Thank you

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.

authors: ThomasBrendel bc-ghost


text:
[Event Request] Page::"Sales Line Discounts" - Function GetFilterDescription - OnGetFilterDescriptionItemTypeFilterCaseElse

We like to request the following Event:
Object: Page::"Sales Line Discounts"
Function: GetFilterDescription
Publisher Event: OnGetFilterDescriptionItemTypeFilterCaseElse
Reason: To implement custom business logic
Where is the event placed:
case ItemTypeFilter of
ItemTypeFilter::Item:
begin
SourceTableName := ObjTranslation.TranslateObject(ObjTranslation."Object Type"::Table, 27);
Item.SetFilter("No.", CodeFilter);
if not Item.FindFirst then
Clear(Item);
end;
ItemTypeFilter::"Item Discount Group":
begin
SourceTableName := ObjTranslation.TranslateObject(ObjTranslation."Object Type"::Table, 341);
ItemDiscGr.SetFilter(Code, CodeFilter);
if not ItemDiscGr.FindFirst then
Clear(ItemDiscGr);
end;
else begin
IsHandled := false;
OnGetFilterDescriptionItemTypeFilterCaseElse(Item, ItemTypeFilter, SourceTableName, CodeFilter, IsHandled);
end;
end;
Event Code:
[IntegrationEvent(false, false)]
local procedure OnGetFilterDescriptionItemTypeFilterCaseElse(var Item: Record Item; var ItemTypeFilter: Option; var SourceTableName: Text; var CodeFilter: Text; var IsHandled: Boolean)
begin
end;

What is the purpose of IsHandled parameter?
Did you miss 'if IsHandled then exit'?

authors: StanPesotskiy acadonAG-dev


text:
[iOS][Framework] ACRRegistration.setActionRenderer() takes an opaque NSNumber instead of an enum

Platform
iOS
Author or host
Host
Version of SDK
2.4.6
Details
In ACRRegistartion.h there is:
- (void)setActionRenderer:(ACRBaseActionElementRenderer *_Nullable)renderer cardElementType:(NSNumber *_Nonnull)cardElementType;

It's not documented (even in the header) what cardElementType is supposed to be. It's just an opaque NSNumber. In the visualizer sample app there's a comment about this:

// enum will be part of API in next iterations when custom renderer extended to non-action
// type - tracked by issue #809

But issue #809 has already been closed.

@jwoo-msft do you have context on this issue ?

@jwoo-msft do you have context on this issue ?

repo: microsoft/AdaptiveCards


text:
Add ability to add custom span processors and metric readers

Note we did not include configuring LogRecordProcessors because logging is unstable. Asking the user to specify those classes may induce breaking changes.
Fixes https://github.com/microsoft/ApplicationInsights-Python/issues/236

Closing for now. The idea is to suggest users to use opentelemetry apis to achieve this functionality:
get_tracer_provider().add_span_processor()

source: gharchive/pull-request

repo: microsoft/ApplicationInsights-Python


text:
ILogger BeginScope not logging kvpair when value is empty string

List of NuGet packages and version that you are using:
From the .csproj file:
"Azure.Identity" Version="1.3.0"
"Azure.Security.KeyVault.Secrets" Version="4.1.0"
"Microsoft.ApplicationInsights" Version="2.16.0"
"Microsoft.Azure.ApplicationInsights.Query" Version="1.0.0"
"Microsoft.Azure.Management.DataFactory" Version="4.13.0"
"Microsoft.Azure.OperationalInsights" Version="1.0.0"
"Microsoft.Azure.Services.AppAuthentication" Version="1.6.0"
"Microsoft.Azure.WebJobs.Extensions.Storage" Version="3.0.10"
"Microsoft.NET.Sdk.Functions" Version="3.0.11"
"Microsoft.Rest.ClientRuntime.Azure.Authentication" Version="2.4.1"
"Newtonsoft.Json" Version="13.0.1"
Runtime version (e.g. net461, net48, netcoreapp2.1, netcoreapp3.1, etc. You can find this information from the *.csproj file): netcoreapp3.1
Hosting environment (e.g. Azure Web App, App Service on Linux, Windows, Ubuntu, etc.): Azure Function App on Windows

Describe the bug
When using ILogger.BeginScope(IDictionary<string, object>), key-value pairs where the value is an empty string "" will not appear in output Application Insights logs. I would have expected the key-value pair to appear in the logs, with the value being an empty string.
To Reproduce
A simple Azure Function app below, with a timer that fires every 5 minutes.
using System;
using System.Collections.Generic;
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;

[FunctionName("SampleFunction")]
public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    IDictionary<string, object> sampleDict = new Dictionary<string, object>{ { "nonemptykey", "value" }, { "emptykey", "" } };

    using (log.BeginScope(sampleDict))
    {
         log.LogInformation("log message here");
    }
}

Assuming this function app is connected to an Application Insights (necessary for this code to demonstrate the issue), the expected log would contain a field customDimensions which itself is an object. Among the properties in customDimensions, we expect the 2 key-value pairs in IDictionary sampleDict, keys formatted as prop__nonemptykey and prop__emptykey. However, as shown below, the kvpair with an empty string as the value, prop_emptykey is missing from customDimensions in the log, while prop_nonemptykey, the key-value pair with a not-empty string value is present.

For Immediate Support
For immediate support relating to the Application Insights .NET SDK we encourage you to file an Azure Support Request with Microsoft Azure instead of filing a GitHub Issue in this repository.
You can do so by going online to the Azure portal and submitting a support request. Access to subscription management and billing support is included with your Microsoft Azure subscription, and technical support is provided through one of the Azure Support Plans. For step-by-step guidance for the Azure portal, see How to create an Azure support request. Alternatively, you can create and manage your support tickets programmatically using the Azure Support ticket REST API

This issue still exists from what I can tell. It's a shame it got closed. Can it be reopened?

authors: adloweltd afratila

repo: microsoft/ApplicationInsights-dotnet


text:
Unable to load Organization

Hello All,
I am unable to use the Azure DevOps generator for the Microsoft CAF as my organization cannot load. Kindly advise.
See error below:
"Could not load your organizations. Please check if the logged in Id contains the Azure DevOps Organizations or change the directory in profile page and try again."

Hi, @sokpara
Thank you for reaching us. Please refer to #353

authors: aksh-h sokpara

repo: microsoft/AzureDevOpsDemoGenerator


text:
Terraform demo project deployment issue for the release pipeline.

Received this error message when deploying the Terraform project into my DevOps environment:
"Error while creating release definition: Tasks with versions 'Replace tokens in terraform file:5.*' are not valid for deploy job 'Agent job' in stage Dev."
The release pipeline definition was not created and no additional information was provided.

Please install the replace tokens extension from the marketplace.
If you are running Demo Generator on a brand new organization, please enable the Third-party application access via OAuth under  Organization Setting >> Policies

authors: aksh-h jimblizzard


text:
The property's value of default Access Tier doesn't auto change

Storage Explorer Version: 1.1.0 RC
Platform: Windows/Linux/Mac
Architecture: ia32/x64
Build Number: 20180507.1
Commit: bcc8990d
Regression From: Not a regression
Steps to Reproduce:

Launch Storage Explorer and expand a blob account.

Right click the account and set the default Access Tier to 'Cool'.

Check the value of default Access Tier in Properties Panel.

Expected Experience:

The value of default Access Tier auto change to 'Cool'.
Actual Experience:

The value of default Access Tier still displays as 'Hot'.

Let's:

Update wording/icon in the activity to make what's going on more clear
Think about polling for Default Access Tier, but probably not

Verified this issue on the latest build 20190614.7. It still reproduces. Could you help to take a look?

@v-xianya does this still reproduce on latest builds from main? :P

@MRayermannMSFT  This issue still reproduces on build main/20201020.3.  （The Default access tier updated after manually refreshing the account node）

Verified this issue on build 20201116.2. Fixed.

authors: MRayermannMSFT v-xianya v-xuanzh

repo: microsoft/AzureStorageExplorer


text:
Unable to retrieve child resources.

Preflight Checklist

[X] I have installed the latest version of Storage Explorer.
[X] I have checked existing resources, including the troubleshooting guide and the release notes.
[X] I have searched for similar issues.

Storage Explorer Version
1.23.1
Regression From
No response
Architecture
x64
Storage Explorer Build Number
20220406.1
Platform
Linux (snap)
OS Version
Linux Mint 20.2
Bug Description
I connected the application with a customer key, in his server I can see all tree, but on my PC I have a "not found" error browsing the tree.
This is the log:
azure_trace.log
Many thanks
Luca
Steps to Reproduce

Launch Storage Explorer
Expand a blob container node

Actual Experience
When I browse the tree I have an ENOTFOUND error popup
Unable to retrieve child resources.
Details:
{
"name": "RestError",
"message": "request to https://xxx.blob.core.windows.net/?comp=list&include=metadata failed, reason: getaddrinfo ENOTFOUND xxx.blob.core.windows.net",
"stack": "RestError: request to https://xxx.blob.core.windows.net/?comp=list&include=metadata failed, reason: getaddrinfo ENOTFOUND xxx.blob.core.windows.net\n    at NodeFetchHttpClient.sendRequest (/snap/storage-explorer/33/resources/app/node_modules/@azure/core-http/dist/index.js:2670:23)\n    at processTicksAndRejections (node:internal/process/task_queues:96:5)\n    at async CoreHttpLogHttpClient.sendRequest (/snap/storage-explorer/33/resources/app/node_modules/@storage-explorer/azure-sdk-helpers/dist/src/HttpClients/CoreHttpLogHttpClient.js:31:34)\n    at async StorageRetryPolicy.attemptSendRequest (/snap/storage-explorer/33/resources/app/node_modules/se-blob-extension/node_modules/@azure/storage-blob/dist/index.js:14086:24)\n    at async StorageClientContext.sendOperationRequest (/snap/storage-explorer/33/resources/app/node_modules/@azure/core-http/dist/index.js:4934:31)\n    at async BlobServiceClient.listContainersSegment (/snap/storage-explorer/33/resources/app/node_modules/se-blob-extension/node_modules/@azure/storage-blob/dist/index.js:23132:20)",
"code": "REQUEST_SEND_ERROR",
"request": {
"streamResponseStatusCodes": {},
"url": "https://xxx.blob.core.windows.net/?comp=list&include=metadata",
"method": "GET",
"headers": {
"_headersMap": {
"x-ms-version": {
"name": "x-ms-version",
"value": "2020-10-02"
},
"accept": {
"name": "Accept",
"value": "application/xml"
},
"user-agent": {
"name": "User-Agent",
"value": "Microsoft Azure Storage Explorer, 1.23.1, linux azsdk-js-storageblob/12.8.0 (NODE-VERSION v16.9.1; Linux 5.4.0-109-generic)"
},
"x-ms-client-request-id": {
"name": "x-ms-client-request-id",
"value": "5c37dfe7-d4e6-4901-a679-04e169af8767"
},
"x-ms-date": {
"name": "x-ms-date",
"value": "Thu, 21 Apr 2022 14:46:05 GMT"
},
"authorization": {
"name": "Authorization",
"value": "Signed SharedKey Redacted="
},
"cookie": {
"name": "Cookie",
"value": ""
}
}
},
"withCredentials": false,
"timeout": 0,
"keepAlive": true,
"decompressResponse": false,
"requestId": "5c37dfe7-d4e6-4901-a679-04e169af8767",
Expected Experience
No response
Additional Context
No response

how can we fix this ?

Hi,
tell me why I can browse the tree on a Windows machine, but I can't on my Linux machine even when I put the same key.
It seems to me a bug of the Linux version of storage-explore, so I reported to community, but if you think it's not, close the thread.
Bye

@f1zb4n72 can you try enabling System Proxy? Go to settings (gear on the left) -> application -> proxy, and then change the dropdown to "System Proxy (Preview)".

Closing due to lack of response. If you are still encountering this problem we recommend opening an Azure support ticket from the portal. You can also open a new issue here.


text:
Add issue/warning indicators in the Diagnostics view

When working with multiple bots in the same project, it would be helpful to know which bots have issues.
Issue
When you click the warning icon, Composer displays the Diagnostics view, but doesn't indicate which of your projects is generating the warnings.

Suggestion
Any of the following would be helpful:

Include the warning count next to each bot that has warnings.
In the details pane, include a column that indicates which bot the warning is associated with, and just list all warnings here.
Auto-select the first bot that has warnings, when opening this view by selecting the warning icon, so as not to display an empty list when a populated list is expected.
In the bots pane, include the ability to display warnings from all bots, not just one at a time.

Related issues
#5130 - note: perhaps adding information level alerts (along with warning and error) to the mix would be appropriate for some scenarios, such as skill bots that are missing a manifest. For testing, this is not a problem and you probably don't want to create the manifest until the skill is close to ready. So, an informational alert would remind devs there's another step needed before deployment.

The project pane does show a warning sign next to [presumably] any bot that has warnings, but that icon is not clickable.
Perhaps, make that one clickable too, and have it open the diagnostics view and auto-select the dialog the clickec icon was next to.

@JonathanFingold the error is associated with the WeatherSkill, meaning that you should choose WeatherSkill to see the error message. Hope it's helpfu.

This is more a usability issue. If I have a bunch of skills and only one or two issues, I don't want to click through all bots and skills in this view until I find all the issues.

There are also cases when you have a bunch of skills/bots and a couple of warnings/errors, which error should be navigated to then? I personally think the current design makes more sense, especially with multiple errors/issues scenarios. Maybe I should add more description on this in our existing validation article.

This is what we have currently. I can't tell which bot or skill has issues.

This is more of what I'd like to see. I can tell where to look for the issues without having to click through every bot or skill.

authors: JonathanFingold zxyanliu

repo: microsoft/BotFramework-Composer


text:
Bot Framework Composer, error when creating new bot - command failed

I installed the Bot Framework Composer , with all the tools required as prerequisite. On creating a new bot I am getting error.

Closing this issue as a dupe of https://github.com/microsoft/BotFramework-Composer/issues/8703. Please follow that issue for any updates.


text:
feat: allow extensions to read/write data

Description
Adds ability for extensions to access their own store to read/write arbitrary data and persist across updates / reloads.
Task Item
closes #4004

I have tested the electron distro locally, including starting a bot.

Coverage decreased (-0.005%) to 55.292% when pulling a354d77d06331ea9f648d7b94d0e516e38519aa3 on abrown/extension-data into 70c67b4ba808feb79ff45eda2d6260bb22abe22f on main.

authors: a-b-r-o-w-n coveralls


text:
Is it possible to disable text-to-speech while keeping speech-to-text?

Hello!
I want to use speech-to-text in my webchat when pressing the microphone but not have it read out loud the answer from the bot. I have tried to delve into the code and customize what I think would change it but to no avail. Is there anyone with knowledge on the matter that can help me?
I provide an image below of the code I am using  to create the webchat, if you need something else please tell me.

Even i am looking for the same, need to disable text reading (text to speech).
Kindly let me know if any options available.

Could you follow the sample here (06.f)?
This sample use browser-supported engine for speech-to-text, and Cognitive Services for text-to-speech.
In index.html line 54 and 55, instead of returning the engine/ponyfill, could you try to return a null/undefined instead?
If Web Chat is seeing a falsy value here, it should skip the text-to-speech part.
Please let us know if it works. Please also check if there are any JavaScript errors (it tries to speak with a null engine), if there are any, please capture and send it to us, it's a bug.

thanks for the suggestion, let me test and confirm you.
I am targeting in es5.js, hope it should work.

I am using es5.js and below code, not sure what I am missing..
Bot is rendering but no mike icon, looks like speech option is disabled.
Please guide me if I am doing wrong.
var webSpeechPonyfillFactory;
var createHybridPonyfillFactory = function () {
        return function (options) {
            // We are using two ponyfill factories to create two concrete ponyfills.
            var webSpeechPonyfill = webSpeechPonyfillFactory(options);
            // And we are merging the result from two different ponyfills.
            // We use browser-supported speech for speech-to-text, and Speech Services for text-to-speech.
            return {
                SpeechGrammarList: webSpeechPonyfill.SpeechGrammarList,
                SpeechRecognition: webSpeechPonyfill.SpeechRecognition,
                speechSynthesis: null,
                SpeechSynthesisUtterance: null
            };
        };
    };

var nonIECode = function () {
        webSpeechPonyfillFactory = window.WebChat.createBrowserWebSpeechPonyfillFactory();
        window.WebChat.renderWebChat({
            directLine: window.WebChat.createDirectLine({
                secret: dlSecret
            }),
            webSpeechPonyfillFactory: createHybridPonyfillFactory
        }, document.getElementById('webchat'));

        document.querySelector('#webchat > *').focus();

    };

nonIECode();

Thanks you!
I will check it out and return at a later date when I've tested it thoroughly.

@compulim Your solution works wonderfully. Thank you for your solution!

Closing this as resolved. :) @Shariele if you have any tips or pointers for @Akkilz, please feel free to continue discussion here.

@Shariele : the above code is not working for me , es5.
Could you plz help me out with the code sample

Hello @Akkilz. My code uses es6 but I will try to help you.
From the looks of it, you aren't providing an authorization token and region to the speech API. Perhaps that is the reason the microphone is not rendering since it can't authorize you using the speech services.
I use the following code for creating the ponyfillfactory:
// hybrid speech
async function createHybridPonyfillFactory({ authorizationToken, region }) {
const speechServicesPonyfillFactory = await window.WebChat.createCognitiveServicesSpeechServicesPonyfillFactory({ authorizationToken, region });
const webSpeechPonyfillFactory = await window.WebChat.createBrowserWebSpeechPonyfillFactory();

return options => {
  // We are using two ponyfill factories to create two concrete ponyfills.
  const speechServicesPonyfill = speechServicesPonyfillFactory(options);
  const webSpeechPonyfill = webSpeechPonyfillFactory(options);
  // And we are merging the result from two different ponyfills.
  // We use browser-supported speech for speech-to-text, and Speech Services for text-to-speech.
  return {
    SpeechGrammarList: webSpeechPonyfill.SpeechGrammarList,
    SpeechRecognition: webSpeechPonyfill.SpeechRecognition,
    // Turn text-to-speech on/off. Return null for off.
    // speechSynthesis: speechServicesPonyfill.speechSynthesis,
    // SpeechSynthesisUtterance: speechServicesPonyfill.SpeechSynthesisUtterance
    speechSynthesis: null,
    SpeechSynthesisUtterance: null
  }
};

};
And this code to render the webchat:
// Render web chat with microphone.
  window.WebChat.renderWebChat({
    webSpeechPonyfillFactory: await createHybridPonyfillFactory({ authorizationToken, region }),
    directLine: window.WebChat.createDirectLine({ token })
  }, document.getElementById('webchat'));

Which is basically the code you find in the sample compulin refered to.

I thought createCognitiveServicesSpeechServicesPonyfillFactory not required because, the aim is
to disable the text to speech option.
It would be great If any options are available to specify in createBrowserWebSpeechPonyfillFactory, kindly let me know if any.
As you suggested I will try to do the same, the only problem is I have to use es5 (requirement).
Will update you after testing.

Yes I tried disabling and also removing the synthesise options in createCognitiveServicesSpeechServicesPonyfillFactory in the webchat.js at first but didn't work. So maybe even if we use a SpeechServicesPonyfillFactory but don't provide the correct options it will run everything as default. So that is perhaps why returning null plays a part in this scenario.

I able to do this in es5 itself, thanks for the support and help.

The easiest code that have worked for me
async createHybridPonyfillFactory({ subscriptionKey, region }) {
        const speechServicesPonyfillFactory = await createCognitiveServicesSpeechServicesPonyfillFactory({ subscriptionKey, region });

        return (options) => {
            const speech = speechServicesPonyfillFactory(options);

            return {
                SpeechGrammarList: speech.SpeechGrammarList,
                SpeechRecognition: speech.SpeechRecognition,
                speechSynthesis: null, // speech.speechSynthesis,
                SpeechSynthesisUtterance: null, // speech.SpeechSynthesisUtterance
            };
        }
    };

For future reference, the bot framework example that shows how to deal with this issue is here: https://github.com/microsoft/BotFramework-WebChat/tree/master/samples/03.speech/g.hybrid-speech

authors: Akkilz CKGrafico Shariele compulim corinagum steps371

repo: microsoft/BotFramework-WebChat


text:
Is the latest version of WebChat stopped sending the "locale" to the bot registration channel

For some reason the locale is not being passed to the bot from webchat.

Is there a new implementation of directline or something in the new version?

If I specify locale in renderWebChat and not in directline's "conversationStartProperty" as shown here, than the locale is not passed to the bot.
Although the documentation says that the locale in the directline is optional, if I don't specify it will not be passed to the bot.

So if we need to specify locale in the Direct Line then do we have to specify it in renderer? It seems it has no impact.

Screenshot

The conversationStartProperties is an option for DirectLineJS, not Web Chat. 😅
You would specify it like:
renderWebChat(
  {
    directLine: createDirectLine({
      conversationStartProperties: {
        locale: 'ja-JP'
      },
      token: '...'
    }
  },
  document.getElementById('webchat')
);

It is an optional parameter for the Direct Line protocol to send a property bag to the bot before conversation start.

@compulim the reason I am asking this question is because I was not passing the locale in the conversationStartProperties under direct line but only specifying it under renderWebchat function and it was it was being passed to the bot. Recently it stopped passing  locale to the bot, unless I specify it under direct line. So my question is did something change in webchat recently that my old setup stop working?

@compulim so for clarification, we still need to specify the local for web chat regardless direct line right?

IIRC, the locale was never passed to the bot from Web Chat. The conversationStartProperties was a feature ask to fill a missing gap.
Yes, you still need to pass locale to Web Chat.

Ok, got it. Thank you!

authors: arman-g compulim


text:
EXTERNAL DATA SOURCE should be created before views and procedures

SqlPackage or DacFx Version:
.NET Framework (Windows-only) or .NET Core:
Environment (local platform and source/target platforms):

Unsure - using publish in latest version of VS 2022
VisualStudio.17.Release/17.8.4+34408.163
SQL Server Data Tools   17.8.120.1
Steps to Reproduce:

Have the project contain an external data source - for example

CREATE EXTERNAL DATA SOURCE [MyExternalDataSource]
    WITH (
    LOCATION = N'https://MyBlobaccountname.blob.core.windows.net',
    CREDENTIAL = [ManagedIdentityCredential]
    );

Have a view or stored procedure reference that data source in OPENROWSET

SELECT PARQUET_DATA.SKU_ID
FROM   OPENROWSET(
BULK 'mypath_*.parquet',
DATA_SOURCE = 'MyExternalDataSource',
FORMAT = 'PARQUET')
WITH (Foo bigint)
PARQUET_DATA

Publish the project to a Synapse Serverless database that has neither of these objects.

The Publish script creates the external data source at the end but the deployment has already failed before that point as it tries to create the proc/view that references the non existent data source and the SQL Serverless throws an error about that.
Probably the placement of the data source creation should always happen before the procedures and views are created (as they can be dependent on the data source but the reverse isn't possible)
Did this occur in prior versions?  If not - which version(s) did it work in?
(DacFx/SqlPackage/SSMS/Azure Data Studio)

Hi @asos-martinsmith,
I 'm not able to repro the issue as mentioned, always generating the correct order of the scripts where my project has Master Key, DataSource, a view and couple of tables. View is always created after creating the ExternalDataSource. Attaching my sample project Database2.zip, please test it and update me what I'm missing here.
Also, it would be very helpful if you can provide a sample repro project. Thanks

Hi @asos-martinsmith,
I 'm not able to repro the issue as mentioned, always generating the correct order of the scripts where my project has Master Key, DataSource, a view and couple of tables. View is always created after creating the ExternalDataSource. Attaching my sample project Database2.zip, please test it and update me what I'm missing here.
Also, it would be very helpful if you can provide a sample repro project. Thanks

This issue was submitted 8 to 9 months ago so maybe is already fixed by now, Does the code have logic to provide the correct ordering? If so when was that added?

@asos-martinsmith , we do have the logic for dependency order. This could get fixed with other change. Could you please test it using your initial reproduction steps and let us know if the issue persists or if it has been resolved? This will help us determine whether to continue working on it or close the issue. Thanks

HI @asos-martinsmith , Any update on the ask? Thanks

we cannot repro this issue anymore so probably has been fixed before

authors: asos-martinsmith llali ssreerama

repo: microsoft/DacFx


text:
[REQUEST] Let ZeRO-offload use CPU and GPU parallelly

Hi thanks for the library! I am using zero-offload for 3B model on 24GB gpu card, and observe the following cpu-gpu usage. Thus, I would appreciate it if the CPU and GPU computation can be overlaped. For example, after the last layer's gradient is computed, we can let CPU do the work and update the model.

Related: https://github.com/microsoft/DeepSpeed/discussions/5478#discussioncomment-11357219

Good suggestion! Feel free to make a PR with these changes, and we will review it.

@jomayeri Thank you! Since I am not an expert of deepspeed, could you please give a bit of hints?

@fzyzcjy Thank you for the suggestions. This feature is on the roadmap with high priority. We'll share updates on its release soon.

@xylian86 Wow that looks great, and looking forward to it!

authors: fzyzcjy jomayeri xylian86

repo: microsoft/DeepSpeed


text:
Fixed building process

Tested on win64

@microsoft-github-policy-service agree [company="ldilov"]

@microsoft-github-policy-service agree

@microsoft-github-policy-service agree

@ldilov - could you comment what errors you were seeing and how this fixes them?

C2398: Element '2': conversion from 'size_t' to '_Ty' requires a narrowing conversion` - during building as compiler error
Before the actual compiling, the folders that setuptools was expecting were mismatched as it was looking for the files in project's parent dir. The issues are common issues btw  among windows users.


text:
Avoid security issues of subprocess shell

Avoid security issues of shell=True in subprocess

@loadams, do you have any idea how to repro these py UT failures?
https://github.com/microsoft/DeepSpeed/actions/runs/10723587021/job/29737199498?pr=6498

@loadams, do you have any idea how to repro these py UT failures? https://github.com/microsoft/DeepSpeed/actions/runs/10723587021/job/29737199498?pr=6498

Yes, @tjruwase - I believe this should just be taking an environment with torch installed and cloning your branch and running pip install .

Yes, @tjruwase - I believe this should just be taking an environment with torch installed and cloning your branch and running pip install .

Unfortunately, I am unable to repro this failure following those steps.

Though these look to be caused by the changes in setup.py not being able to find git to get the commit hash to build the wheel with name 0.15.1+commithash.

Yes, I think that is the problem. This work with shell=True, probably due to some env or PATH settings.

Yes, @tjruwase - I believe this should just be taking an environment with torch installed and cloning your branch and running pip install .

Unfortunately, I am unable to repro this failure following those steps.

Though these look to be caused by the changes in setup.py not being able to find git to get the commit hash to build the wheel with name 0.15.1+commithash.

Yes, I think that is the problem. This work with shell=True, probably due to some env or PATH settings.

This does run in a docker container and you can run using the same container if needed to test as well, but looks like it is largely resolved as well

We are hitting few issues on ROCm environment (Ubuntu ROCm Pytorch container) due to this PR.
1.
[rank7]:     raise child_exception_type(errno_num, err_msg, err_filename)
[rank7]: FileNotFoundError: [Errno 2] No such file or directory: "/opt/rocm/bin/rocminfo | grep -Eo -m1 'Wavefront Size:[[:space:]]+[0-9]+' | grep -Eo '[0-9]+'"
[rank0]: Traceback (most recent call last):

Building extension module transformer_inference...
Using envvar MAX_JOBS (32) as the number of workers...
Using /root/.cache/torch_extensions/py39_cpu as PyTorch extensions root...
Using /root/.cache/torch_extensions/py39_cpu as PyTorch extensions root...
Using /root/.cache/torch_extensions/py39_cpu as PyTorch extensions root...
ninja: error: build.ninja:8: unexpected '='
[rank4]: Traceback (most recent call last):
[rank4]:   File "/opt/conda/envs/py_3.9/lib/python3.9/site-packages/torch/utils/cpp_extension.py", line 2107, in _run_ninja_build
[rank4]:     subprocess.run(
[rank4]:   File "/opt/conda/envs/py_3.9/lib/python3.9/subprocess.py", line 528, in run
[rank4]:     raise CalledProcessError(retcode, process.args,
[rank4]: subprocess.CalledProcessError: Command '['ninja', '-v', '-j', '32']' returned non-zero exit status 1.
Please let me know if we need to create new issue to track it.
@loadams @jithunnair-amd @pruthvistony @jeffdaily

We are hitting few issues on ROCm environment (Ubuntu ROCm Pytorch container) due to this PR. 1. [rank7]: raise child_exception_type(errno_num, err_msg, err_filename) [rank7]: FileNotFoundError: [Errno 2] No such file or directory: "/opt/rocm/bin/rocminfo | grep -Eo -m1 'Wavefront Size:[[:space:]]+[0-9]+' | grep -Eo '[0-9]+'" [rank0]: Traceback (most recent call last):
Building extension module transformer_inference... Using envvar MAX_JOBS (32) as the number of workers... Using /root/.cache/torch_extensions/py39_cpu as PyTorch extensions root... Using /root/.cache/torch_extensions/py39_cpu as PyTorch extensions root... Using /root/.cache/torch_extensions/py39_cpu as PyTorch extensions root... ninja: error: build.ninja:8: unexpected '='
[rank4]: Traceback (most recent call last): [rank4]: File "/opt/conda/envs/py_3.9/lib/python3.9/site-packages/torch/utils/cpp_extension.py", line 2107, in _run_ninja_build [rank4]: subprocess.run( [rank4]: File "/opt/conda/envs/py_3.9/lib/python3.9/subprocess.py", line 528, in run [rank4]: raise CalledProcessError(retcode, process.args, [rank4]: subprocess.CalledProcessError: Command '['ninja', '-v', '-j', '32']' returned non-zero exit status 1.
Please let me know if we need to create new issue to track it. @loadams @jithunnair-amd @pruthvistony @jeffdaily

@jagadish-amd, yes please create a new ticket.

authors: jagadish-amd loadams tjruwase


text:
Create c-cpp.yml

Microsoft Reviewers: Open in CodeFlow

This repo already has a CI.

authors: shashinma sylveon

repo: microsoft/Detours


text:
[False Positive] DS106863: [Critical] Do not use the DES symmetric block cipher.

Rule ID
DS106864
What the rule matched
test.bat with content:
if /I "%test%"=="DES" set test=DES

Why should this not be matched?
Because it has nothing to do with block cipher

Thanks for the feedback @quasarea.
DevSkim is at its core based on regular expression rules, so it's very difficult to disentangle literal matches that are not logical matches.
This appear to be a bash script, so you should be able to use the suppression mechanism to suppress this result since you have validated that it does not apply for your case here.

This is more complicated as I'm using devskim in pipeline template that is shared across multiple components. Currently I'm running ```
devskim analyze `

        --source-code . `
        --file-format text

and parsing output to pipeline warnings etc.

I tried to add

REM Devskim: ignore DS106863
if /I "%test%"=="DES" set test=DESIGN
but it does not solve the issue. I'm not sure how to uitilise `devskim suppress`  functionality here.

It looks like you've tried to add the suppression to the previous line. You will need to add the suppression to the end of the line on which the issue occurs.
So
if /I "%test%"=="DES" set test=DESIGN

Becomes
if /I "%test%"=="DES" set test=DES :: DevSkim: ignore DS106863

or
if /I "%test%"=="DES" set test=DES REM DevSkim: ignore DS106863

I've just tested both of these options and they seem to work to suppress the issue.
Secondly, the suppress command is used to modify files to add suppressions for issues identified with an analysis run. Suppress Command Wiki page.
For example, I've created a file name test.bat in my home folder with the contents you provided above. I can use these two commands to add the appropriate suppressions for this issue directly into the file. It also has a --dry-run argument to see what modifications would be made without actually making them.
Note the -I input to suppress must be a directory - either the directory you scanned with analyze if you scanned a directory, or the directory containing the individual file you scanned with analyze if you scanned an individual file.
devskim analyze -I /Users/gabe/test.bat -O out.sarif
devskim suppress -I /Users/gabe -O out.sarif --rules DS106863

Ok, thanks for all the information, really appreciated

authors: gfs quasarea

repo: microsoft/DevSkim


text:
[ddsview] Incorrect brightness found in ddsview

加载 .DDS 文件后，画面的亮度比正确的高！
When loading my .DDS file, the brightness of image is higher than ground truth.

Moved to DirectXTex.

repo: microsoft/DirectXTK


text:
texconv convert to exr?

There are currently a lot of formats for conversion supported, but there is no EXR. Is it planned?
Thanks!

texconv can support EXR via the OpenEXR library. See these instructions for details or make use of the vcpkg port which has an openexr feature.

authors: JustAndreww walbourn

repo: microsoft/DirectXTex


text:
Load failed. Request failed with status 500

Load failed. Request failed with status code 500.
Got the auth working now but not sure what's wrong. The Manage Storage Connection Settings has my connection string in there. I'm using it as the nuget package with just plain DfmEndpoint.Setup(); call. Running on Functions v4 Windows x64.

@CryptoTradee , please, provide console output (aka logs) from your Function instance. There should be a clear explanation of what's going on and what the actual error is.
If you deployed your Function to Azure, then the quickest way of getting those logs is to use 'Log stream' tab:

@CryptoTradee , would you be able to provide further info on this?

Thanks @scale-tone . Yes I had registered Autofac as my IOC for the Azure functions. The error came cause the DFM functions/services weren't registered with Autofac. I thought about checking the errors and registering them or alternatively switching my IOC to be the standard one however ended up just making a seperate azure function and then just read from my original functions storage.
Might be something for the Azure function team but if this would be possible of some functions registered with Autofac (ie my functions) then the DFM functions are resolved with the standard implementation. Otherwise for DFM not to use any IOC?

authors: CryptoTradee scale-tone

repo: microsoft/DurableFunctionsMonitor


text:
Review usage of GenericError / UsageError / DeltaStreamConnectionForbiddenError errors in our repo

GenericError() and UsageError(), DeltaStreamConnectionForbiddenError() should take a message argument that developers can understand, not reuse fluidErrorCode as a message.
It's possible that some of these call sites should not be generic errors, but rather usage errors.
Also, it would be great for order of message & fluidErrorCode args to be always the same - now it's 50% one way and 50% other way.
There are probably more cases like that. It's easy to find them by seeing who extends LoggingError, as it currently mixes usage of message and fluidErrorCode. That is tracked as separate item - #8474

Tracking for Feb via https://github.com/microsoft/FluidFramework/issues/8929

authors: markfields vladsud

repo: microsoft/FluidFramework


text:
Implement Package Promotion in ADO Build Feed

Objective:
Automate the promotion of the release packages in ADO's "Build" feed to the Release view, ensuring their indefinite retention.
Changes:

When the pipeline publishes the package, detect if its a release in the "Build" feed.
Promotes these packages to the Release view in Azure Artifacts.

Testing;

I have tested it using the SystemAccess Token provided in the pipelines; https://dev.azure.com/fluidframework/internal/_build/results?buildId=185450&view=results
running a prerelease using my PAT with the url pointing to the testRishhiRetentionPolicy feed instead of the builld feed, seeing that package get promoted in its feed (https://pkgs.dev.azure.com/fluidframework/internal/_apis/packaging/feeds/testRishhiRetentionPolicy/npm/@fluidframework/agent-scheduler/versions/2.0.0-internal.5.2.0?api-version=7.1-preview.1); https://dev.azure.com/fluidframework/internal/_build/results?buildId=185432&view=results
Locally promoting specific versions and watching if retention policy deletes those packages, which it did not

@RishhiB can you please elaborate what happens on various (a) errors or (b) packages being manually deleted? Did you also test outcomes on such conditions. Both (a) and (b). For example - what happens if promoted package is manually deleted from build feed? What happens if its manually deleted from internal feed? In addition to what should release engg do if "promote" step fails?
So its important to 1. document full retention story on our engg pages and 2. test these scenarios. Please complete those 2 and we can approve/merge. Let's anyways do the PR merge on Monday so we have time to react to pipeline issues.

Regarding manual deletion.
Only Owners or administrators can manually delete a package. https://learn.microsoft.com/en-ca/azure/devops/artifacts/feeds/feed-permissions?view=azure-devops
Deleting a package version makes it unavailable to install. Deleted packages can be restored from the Recycle Bin within 30 days of deletion. After that, the packages will be permanently deleted. Packages are immutable. When you publish a package to your feed, its version number will be reserved permanently. You can't upload a new package with that same version number, even if you delete it from your feed. https://learn.microsoft.com/en-ca/azure/devops/artifacts/how-to/delete-and-recover-packages?view=azure-devops&tabs=npm

@RishhiB lets move the current changes so we can wrap the mitigation work (don't run into max without any policy in place). But please work in the immediate follow up:

If this is not well-testable solution and we can not easily manage failures, please create work item that consider's Tyler approach with flub commands.
Please create eng.ms document or even update feed document that describes retention policy on a high-level. You don't need to describe code details, we just want the high-level story (problem and solution) encompassing our feeds. For example you want to describe why retention policy was added to one feed and not the other.
Did you promote current prod packages? Did you verify? It sounds like you did.


text:
fix(tree): fix allowsRepoSuperset to check node schema identifiers

AB#8357
When the allowed types at the root aren't defined, TreeTypeSet is supposed to encompass "every allowed type in the schema." Therefore, it is necessary to add a check to ensure that "every type allowed in argument 1 is a subset of those allowed in argument 2."
Reviewer Guidance
The review process is outlined on this wiki page.

The issue will be fixed in AB#10255


text:
Read from AWS S3

Would be useful to have a function to read data files from the AWS s3 buckets directly.

I think this can be made more generic to use the HDFS functionalities to read using. As amazon sdk support for HDFS would add S3 support too.
Kind of like how Spark or Hive use the same libraries for HDFS and S3
Related to:
https://github.com/Microsoft/LightGBM/issues/1183

Closed in favor of being in #2302. We decided to keep all feature requests in one place.
Welcome to contribute this feature! Please re-open this issue (or post a comment if you are not a topic starter) if you are actively working on implementing this feature.

authors: AbdealiJK StrikerRUS

repo: microsoft/LightGBM

license: mit

license_source: bigquery