splitting match with type rewriting involved

Prerequisites

[X] Put an X between the brackets on this line if you have done all of the following:

Checked that your issue isn't already filed.
Reduced the issue to a self-contained, reproducible test case.

Description
def foo: {n: Nat} → Fin n → Nat
|   0, _ => 0
| n+1, _ => 0

theorem t1 {f: Fin (n+1)}:
  foo f = 0 := by
  simp only [foo]

theorem t2  {f: Fin (n+1)}:
  foo f = 0 := by
  delta foo
  split
  rfl

theorem t3 {f: Fin (n+1)}:
  foo f = 0 := by
  -- this shouldn't produce an auxiliary definition since `Fin (n + 1)` is definitionally equal to `Fin n.succ`
  simp only [←Nat.succ_eq_add_one n] at f
  simp only [foo]

-- it works:
example {n: Nat} {f: Fin (n+1)}:
  foo f = 0 := by
  revert f
  rw[←Nat.succ_eq_add_one n]
  intro f
  simp only [foo]

Expected behavior:
t3 probably should work since e49179c807e8c1bed2a6beb2589f6da4a6611900
t1 and t2 probably should work because corresponding lean3 code works:
def foo: Π {n : ℕ}, fin n → ℕ
| (  0) _ := 0
| (n+1) _ := 0

lemma t1 {n: ℕ} {f: fin (n+1)}:
  foo f = 0 :=
begin
  simp only [foo],
end

lemma t2 {n: ℕ} {f: fin (n+1)}:
  foo f = 0 :=
begin
  delta foo,
  split,
end

Actual behavior: got errors on t1, t2 and t3:
unsolved goals
n : Nat
f : Fin (n + 1)
⊢ (match n + 1, f with
    | 0, x => 0
    | Nat.succ n, x => 0) =
    0

tactic 'split' failed
n : Nat
f : Fin (n + 1)
⊢ (match n + 1, f with
    | 0, x => 0
    | Nat.succ n, x => 0) =
    0

unsolved goals
n : Nat
f✝ : Fin (n + 1)
f : Fin (Nat.succ n)
⊢ (match n + 1, f✝ with
    | 0, x => 0
    | Nat.succ n, x => 0) =
    0

Reproduces how often: 100%
Versions
nightly-2022-04-21

Note that Lean 3 equation compiler is quite different from Lean 4.
In Lean 3, the equation compiler generates equations theorems even for nonrecursive definitions. This was not a feature by a side-effect of the fact that Lean 3 has no support for showing match-expressions in goals.
Moreover, the Lean 3 equations theorems for foo are
foo.equations._eqn_1 : ∀ (_x : fin 0), foo _x = 0
foo.equations._eqn_2 : ∀ (n : ℕ) (_x : fin (n + 1)), foo _x = 0

Both Lean 3 and Lean 4, simp uses a restricted definitional equality test when pattern matching the equation left-hand-side, but in both cases, it uses no restriction when checking whether the types match too. This is perfect for the equations above. Moreover, even if one uses
def inc (x : nat) := x + 1

lemma t1 {n: ℕ} {f: fin (inc n)}:
  foo f = 0 :=
begin
  simp only [foo],
end

It will work on Lean 3.
In Lean 4, we can represent match-expressions in goals, and we actually just unfold foo's definition when using simp only [foo]. It is just using delta reduction. However, the resulting match does not reduce because n+1 is not a reducible definition, and will not reduce to Nat.succ n.
Regarding split, the Lean 4 version is inspired by the Isabelle version and is used to split match and if-then-else expressions. The split in Lean 3 is a variant of the constructor tactic.
Regarding t3, we are currently not checking whether a theorem has a rfl proof or not. So, from the point-of-view of simp, it is not a rfl proof. This can be improved. I will add support for this.

Note that t3 has to be written as:
theorem t3 {f: Fin (n+1)}:
  foo f = 0 := by
  simp only [←Nat.succ_eq_add_one n] at f -- it works as expected now, but it is not needed
  simp only [←Nat.succ_eq_add_one n, foo] -- We need `←Nat.succ_eq_add_one n` to be able to rewrite the `match` discriminant to a `Nat.succ`

Thank you! It works great.
Am I right, that you didn't improve rw tactic in the same way just to not complicate it and because there is simp_rw tactic?
Mathlib4 has one regression bug when compiled with nightly-2022-04-22:
@[simp]
theorem exists_prop {p q : Prop} : (∃ h : p, q) ↔ p ∧ q :=
Iff.intro (fun ⟨hp, hq⟩ => And.intro hp hq) (fun ⟨hp, hq⟩ => Exists.intro hp hq)

namespace Option

def get {α : Type u} : ∀ {o : Option α}, isSome o → α
| some x, h => x

@[simp] theorem isSome_none : @isSome α none = false := rfl
@[simp] theorem isSome_some {a : α} : isSome (some a) = true := rfl
@[simp] theorem get_some (x : α) (h : isSome (some x)) : Option.get h = x := rfl

theorem eq_some_iff_get_eq {o : Option α} {a : α} :
  o = some a ↔ ∃ h : o.isSome, Option.get h = a := by
  cases o; simp; intro h; cases h; contradiction
  -- doesn't work
  simp[exists_prop]
  try rw[exists_prop]
  -- workaround
  rename_i b
  have := exists_prop (p:= isSome (some b) = true) (q:=b=a)
  rw [this]
  simp

Thank you! It works great, but fails if the equation was stored in a local variable:

The rfl check is syntactic. We check for proofs using rfl, Eq.refl, Eq.symm, and applications of rfl theorems.
Lean 3 performs an even simpler check.
In principle, we could check whether any simp argument is proof for an equality that holds definitionally, but we are concerned this can be very expensive for complex developments. So, a more conservative option would be a flag or annotation. Then, we would perform the potentially expensive check only when requested by the user.
@digama0  @jcommelin Any thoughts?

Regarding the regression, I will analyze them.

If such a check is so expensive, than probably rewriting in types should be implemented in a separate tactic rw_in_place, which will simply do:
revert ...
rw [...]
intro ...

and will work fast and not only for definitional equalities? Or is this too naive reasoning?

I pushed fixes for the two regressions above.

Thank you! It is much better now.
I isolated one more example that stops working after nightly-2022-04-22, but I doubt whether it is actually regression or not:
def Set (α : Type u) := α → Prop
def mem (a : α) (s : Set α) := s a
def image (f : α → β) (s : Set α) : Set β := fun b => ∃ a, mem a s ∧ f a = b

@[congr] theorem image_congr {f g : α → β} {s : Set α}
  (h : ∀ a, mem a s → f a = g a) : image f s = image g s := sorry

example {Γ: Set Nat}: (image (Nat.succ ∘ Nat.succ) Γ) = (image (fun a => a.succ.succ) Γ) := by
  simp only [Function.comp_apply]

The commit above fixes the image example regression.


Optimize/unused subtable instances

Before:

Instructions are mapped to the set of subtable types via the subtables method
Each subtable type is mapped to C = 4 "memories" (in the sense of offline memory checking), one per "chunk" of the lookup index
...which means each instruction is mapped to C * |subtables| memories, or 2 * C * |subtables| read/write grand products

However, for many instructions, we don't need to access every subtable type at all C index chunks –– e.g. we only care about the EqMsbSubtable value at the 0th index chunk, not 1..C. This means that many of the C * |subtables| memories are effectively unused.
This PR makes the changes necessary to eliminate these unused memories –– the subtables method now returns a pair (subtable type, chunk indices) for each subtable type used. instruction_lookups.rs is then modified to only instantiate one memory per unique (subtable type, chunk index) pair across the instruction set.
Tangentially, this PR also introduces a "preprocessing" type parameter to the MemoryCheckingProver and MemoryCheckingVerifier traits to thread the instruction x subtable x memory mappings through to the functions that need them. This also allows us to move materialize_subtables outside of Jolt::prove

Addressed feedback in https://github.com/a16z/Lasso/pull/195


Always cleanup children

When debugging an effection application, we noticed that in the case where you had halted children, they were not being removed from parents that were still running. That meant that you have a fork tree looking like:
Fork {
   state: waiting
   operation: main
   children:
     Fork {
       state: running
       operation:
       children:
     }
     Fork {
       state: running
       operation:
       children:
           Fork {
             state: halted
             operation: setupConnection
             children:
           }
     }
}

Which means that if the the parent is long running, then you can accrue lots of halted children which is a memory leak.
This makes sure that every time that a child joins its parent, it is removed from the list of children. This is safe because join only happens on finalization of a child.

A preview package of this pull request has been released to NPM with the tag always-cleanup-children.
You can try it out by running the following command:
$ npm install effection@always-cleanup-children

or by updating your package.json to:
{
  "effection": "always-cleanup-children"
}

Once the branch associated with this tag is deleted (usually once the PR is merged or closed), it will no longer be available. However, it currently references<EMAIL_ADDRESS>which will be available to install forever.

  Generated by :no_entry_sign: dangerJS against 2a0924c96decf6257b8a07a6ac701a6f3002a9ff


[DOC] [Highest] User count function for jdbc user store is not includede in the documentation

As $subject, I have verified the doc pages [1], [2] & [3]; But I couldn't see the details for enabling user count. Please update the relevant pages for this.
User count will become enabled once I added a jdbc primary/secondary user store.
Note : For primary user count property should be enabled in config file, for secondary it is there bydefault when adding via UI. See the attachment for more infor.
label: IS-5.4.0 Docs
[1] [https://docs.wso2.com/display/IS540/Configuring+a+JDBC+User+Store]
[2] [https://docs.wso2.com/display/IS540/Configuring+Secondary+User+Stores]
[3] [https://docs.wso2.com/display/IS540/Configuring+Users]

Thank you for your contribution!
We are closing this issue since it has not been prioritized for a long time. Chances are that it has already been solved in more recent versions. If not, we will be re-evaluating this when it becomes a priority.


Y24-064 Develop an audit mechanism for retention instructions that can later be displayed in the UI

User story
As a developer, I need to create an audit trail for retention instructions stored in labware table. Please refer to https://github.com/sanger/sequencescape/issues/4093 to see how retention instructions are stored in the table.

[ ] Establish an eventful has_one relationship between labware and events table. See how a similar implementation in lib/eventful_record.rb:29.
[ ] When persisting a retention instruction (i.e., when uploading a manifest), store an event in the events table in the database. This can be done by updating the lib/eventful_record.rb module.
[ ] Update the codebase to persist another record to the events table when an update (or a deletion) is made to the retention instructions of a particular labware.

Who are the primary contacts for this story
Dasun, Katy
Who is the nominated tester for UAT
Acceptance criteria
To be considered successful the solution must allow the following:

[ ] To persist and audit record in the events table when a create, update or a deletion is made for a retention instruction of particular labware.
[ ] Update: Populating the events table with correct eventful_id should bring in the data related to the labware history in Events History page.

Dependencies
This story is blocked by the following dependencies:

https://github.com/sanger/sequencescape/issues/4093

References
This story has a non-blocking relationship with:

https://github.com/sanger/sequencescape/issues/4003

Additional context
Add any other context or screenshots about the feature request here.

@dasunpubudumal I presume that the event history UI will display these events without any code changes needed? But could be worth adding an acceptance criteria that the audit must be viewable in SS, just so it's tested?

We can accomplish the audit trail using a simpler approach using lib/event_factory.rb. Since we are only going to create the trail for update events, we just need to include a class-level method in event_factory.rb and call it in update method at labware_controller.rb.


TypeScript types created from Pick lose refactoring capabilities

Issue Type: Bug
The below example compiles correctly and results in a Properties type with just a value: string property, which Code recognizes just fine.
class Base {
  name: string;
}

class Implementation extends Base {
  value: string;
}

type Properties = Pick<Implementation, Exclude<keyof Implementation, keyof Base>>;

const x: Properties = null;

x.value;

Attempting to 'Go to Definiton' on x.value will fail.
Using 'Rename Symbol' to rename Implementation.value to Implementation.value1 will rename the class property, but fail to rename x.value to x.value1.
To provide some context, I am using a library that forces me to inherit from a generic base class in order to use it's functionality.  I'd like to be able to work with the implementation classes specific properties without having to reason about the significant amount of extra methods and properties on the base class.  While I could define an interface and have my class both implement the interface and extend the base class, it would require duplication of code in order to define the properties both on the interface and on the class. Using Pick<Implementation, Exclude<keyof Implementation, keyof Base>> allows for me to define the properties just once.
I'm not sure if this is a VS code bug, a limitation in the TypeScript Language Service, or a mix of the two.  In my specific example, it's easy to reason about how the tooling should be able to support this.
VS Code version: Code 1.25.0 (0f080e5267e829de46638128001aeb7ca2d6d50e, 2018-07-05T13:02:28.333Z)
OS version: Darwin x64 17.5.0

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz (8 x 2200)

GPU Status
2d_canvas: enabledflash_3d: enabledflash_stage3d: enabledflash_stage3d_baseline: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onnative_gpu_memory_buffers: enabledrasterization: enabledvideo_decode: enabledvideo_encode: enabledvpx_decode: enabledwebgl: enabledwebgl2: enabled

Load (avg)
3, 3, 3

Memory (System)
16.00GB (0.89GB free)

Process Argv
/Applications/Visual Studio Code.app/Contents/MacOS/Electron --disable-extensions

Screen Reader
no

VM
0%

Extensions disabled

Created a TypeScript issue for this: Microsoft/TypeScript#25607

I had a similar issue with Pick<>, I think it might be related to this one: Go to Definition feature is not working with a type after calling Pick<>.
type Actions = Pick<ActionCreators, 'a' | 'b' | 'c'>;
const actions:Actions;

Then if I try to use "Go to Definition" on actions.a, it can't navigate to the implementation of ActionCreators type.

Closing as upstream


Transient buffers

This PR adds support for handling unknown buffers. The idea goes like this:

a Request for an unknown files comes in and
the buffer manager simply adds this file to all projects (I figured it's better then guessing, but we can discuss) and
the buffer manager remembers that file path so that later when
a project system adds the same file (because it caught up after a FS change event or /addToProject was called) the buffer manager can remove the transient file again (avoid duplication)

I've just been trying this out. Seems to work fine :+1:
I did get extra references during intellisense (So I get Xunit references in the OmniSharp project for example) - but I guess you were expecting that.
What if we had 100 projects? I imagine intellisense would be very slow for the transient file because of all the references. (similar to the dirty hack I originally put into omnisharp-server for vnext that added all references in a folder - DF's seen this)

Something is missing somewhere :)
I can create a test class in the folder with the other tests. I can get intellisense for using Xunit and [Fact] etc.
But diagnostics shows me The type or namespace name 'Xunit' could not be found
But I get diagnostics saying 'The ty

@nosami - good catch. the problem is that the file is now part of all projects and some don't have a dependency onto Xunit (e.g Omnisharp and Omnisharp.Stdio). That's why you see that error. Seems like my simplification add file to all projects doesn't work and guessing is required. I will push a second change that selects projects based on file path.

@nosami - I have changed the logic to find the best matching projects based on the file path (contains relation). Also added more tests.

k test --test OmniSharp.Tests.BufferManagerFacts.UpdateBufferIgnoresFilePathsThatDontMatchAProjectPath
xUnit.net Project K test runner (64-bit Asp.Net,Version=v5.0)
Copyright (C) 2014 Outercurve Foundation, Microsoft Open Technologies, Inc.

Starting: OmniSharp.Tests, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
   OmniSharp.Tests.BufferManagerFacts.UpdateBufferIgnoresFilePathsThatDontMatchAProjectPath [FAIL]
      Assert.Equal() Failure\nExpected: 0\nActual:   4
      Stack Trace:
           at OmniSharp.Tests.BufferManagerFacts.UpdateBufferIgnoresFilePathsThatDontMatchAProjectPath () [0x00000] in <filename unknown>:0
           at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
           at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
Finished: OmniSharp.Tests, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null

=== TEST EXECUTION SUMMARY ===
   OmniSharp.Tests, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null  Total: 1, Failed: 1, Skipped: 0, Time: 1.063s

k test --test OmniSharp.Tests.BufferManagerFacts.UpdateBufferFindsProjectBasedOnPath
xUnit.net Project K test runner (64-bit Asp.Net,Version=v5.0)
Copyright (C) 2014 Outercurve Foundation, Microsoft Open Technologies, Inc.

Starting: OmniSharp.Tests, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
   OmniSharp.Tests.BufferManagerFacts.UpdateBufferFindsProjectBasedOnPath [FAIL]
      Assert.Equal() Failure\nExpected: 2\nActual:   4
      Stack Trace:
           at OmniSharp.Tests.BufferManagerFacts.UpdateBufferFindsProjectBasedOnPath () [0x00000] in <filename unknown>:0
           at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
           at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
Finished: OmniSharp.Tests, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null

k test --test OmniSharp.Tests.BufferManagerFacts.UpdateBufferFindsProjectBasedOnNearestPath
xUnit.net Project K test runner (64-bit Asp.Net,Version=v5.0)
Copyright (C) 2014 Outercurve Foundation, Microsoft Open Technologies, Inc.

Starting: OmniSharp.Tests, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
   OmniSharp.Tests.BufferManagerFacts.UpdateBufferFindsProjectBasedOnNearestPath [FAIL]
      Assert.Equal() Failure\nExpected: 1\nActual:   2
      Stack Trace:
           at OmniSharp.Tests.BufferManagerFacts.UpdateBufferFindsProjectBasedOnNearestPath () [0x00000] in <filename unknown>:0
           at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
           at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in <filename unknown>:0
Finished: OmniSharp.Tests, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null

If I run all tests, with k test, it hangs forever :S

funky - is it that mono cannot handle the windows file paths?

More like linux can't handle Windows paths :) Mono has a shim for Windows compatibility, but it's disabled by default.
        [Fact]
        public void UpdateBufferIgnoresFilePathsThatDontMatchAProjectPath()
        {
            var workspace = GetWorkspaceWithProjects();

            workspace.BufferManager.UpdateBuffer(new Request() { FileName = @"/some/path.cs", Buffer = "enum E {}" });
            var documents = workspace.GetDocuments(@"/some/path.cs");
            Assert.Equal(0, documents.Count());
        }

^^ this passes. Does that work on Windows too? I know Windows can handle forward slash as a path delimiter, but not so sure about omitting the drive letter.

I've just been trying the code out. It works perfectly for me :D
I was able to create a new file with a test and run it - no problems :)

Great. Pushed now a change that uses Path.Combine and paths without drive letter (and also checked my Mac order)

These tests are working now... but k test still hangs... no idea why. Does it work locally for you?

yeah - all happy. can you run them locally?

try the other tests :)

I did. wrong screen shot - fixed inline

I can't run them all together with k test... it just hangs.

will digg out an Ubuntu box and try there

I've fixed.
On Fri, Mar 13, 2015 at 1:24 PM, Johannes Rieken<EMAIL_ADDRESS>wrote:

will digg out an Ubuntu box and try there
—
Reply to this email directly or view it on GitHub
https://github.com/OmniSharp/omnisharp-roslyn/pull/123#issuecomment-78968238
.

mind bending

thanks a lot!

I can't believe we can actually handle new files now :dancers: Cheers Jo!

:beers: just in time for Friday


Change the way rolenames are localized (WIP)

Refers to issues #6091 and #6119
Summary
DNN includes a number of standard roles like All Users, Administrators, Registered Users etc. For multilingual sites this can be confusing to non English speakers. A new approach is proposed where in the UI role names are sent through the Localization.LocalizeRole method where the GlobalResources file is checked for the "[RoleName].Role" key. If found then this value is used and otherwise the regular rolename is used.
Included in this PR is a change to the UI name for "All Users". This now becomes "Everyone".

@donker thank you :-)

:-)

I did some testing and found this:
(Install etc.)
When opening the Module settings on the Home page: http://dnnbeta.local/Home/ctl/Module/ModuleId/353
Unhandled error loading module. DotNetNuke.Services.Exceptions.ModuleLoadException: Unhandled Error Adding Module to ContentPane. ---> System.ArgumentException: System.Data.SqlClient.SqlException (0x80131904): Violation of UNIQUE KEY constraint 'IX_RoleName'. Cannot insert duplicate key in object 'dbo.Roles'. The duplicate key value is (0, Content Editors). The statement has been terminated. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteScalar() at PetaPoco.Database.CommandHelper(IDbCommand cmd, Func2 cmdFunc) at PetaPoco.Database.ExecuteScalarInternal[T](CommandType commandType, String sql, Object[] args) at DotNetNuke.Data.PetaPoco.PetaPocoHelper.ExecuteScalar[T](String connectionString, CommandType type, Int32 timeoutSec, String sql, Object[] args) at DotNetNuke.Data.SqlDataProvider.ExecuteScalar[T](String procedureName, Object[] commandParameters) at DotNetNuke.Security.Roles.DNNRoleProvider.CreateRole(RoleInfo role) ClientConnectionId:de8476bb-12a0-4fae-a70b-c3662249b13c Error Number:2627,State:1,Class:14 at DotNetNuke.Security.Roles.DNNRoleProvider.CreateRole(RoleInfo role) at DotNetNuke.Security.Roles.RoleController.DotNetNuke.Security.Roles.IRoleController.AddRole(RoleInfo role, Boolean addToExistUsers) at DotNetNuke.Security.Permissions.AdvancedPermissionProvider.GetOrCreateAdvancedRole(Int32 portalId, String roleName) at System.Linq.Enumerable.WhereSelectListIterator2.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__172.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) at DotNetNuke.Security.Permissions.AdvancedPermissionProvider.GenerateVirtualTabPermissions(List1 permissions, Int32 portalId, Int32 tabId) at DotNetNuke.Security.Permissions.AdvancedPermissionProvider.GetTabPermissions(Int32 tabId, Int32 portalId) at DotNetNuke.UI.Containers.Container.ProcessContentPane() at DotNetNuke.UI.Containers.Container.ProcessModule() at DotNetNuke.UI.Skins.Pane.InjectModule(ModuleInfo module) --- End of inner exception stack trace ---
`

I did some testing and found this:
(Install etc.) When opening the Module settings on the Home page: http://mysite.local/Home/ctl/Module/ModuleId/353
When go back to the home page I get this error:
Until I restart the site

Resolved. Turns out that was a caching issue with roles.

I did some testing and found this:
(Install etc.) When opening the Module settings on the Home page: http://mysite.local/Home/ctl/Module/ModuleId/353
When go back to the home page I get this error:
Until I restart the site

Resolved. Turns out that was a caching issue with roles.

thanks :-)

Build error from `ApiTokenDetails/index.jsx`
https://dev.azure.com/dotnet/DNN/_build/results?buildId=110767&view=logs&j=12f1170f-54f2-53f3-20dd-22fc7dff55f9&t=1a5cc010-7735-550a-9d76-c0b745122dab&l=2525

security-settings: D:\a\1\s\Dnn.AdminExperience\ClientSide\Security.Web\src\components\apiTokens\ApiTokenDetails\index.jsx
security-settings:     5:22  warning  'Select' is defined but never used                    no-unused-vars
security-settings:     5:50  warning  'Switch' is defined but never used                    no-unused-vars
security-settings:     5:58  warning  'Button' is defined but never used                    no-unused-vars
security-settings:     5:66  warning  'SingleLineInputWithError' is defined but never used  no-unused-vars
security-settings:     5:92  warning  'MultiLineInput' is defined but never used            no-unused-vars
security-settings:     8:22  warning  'SecurityActions' is defined but never used           no-unused-vars
security-settings:   113:54  warning  Expected '===' and instead saw '=='                   eqeqeq
security-settings:   113:94  warning  Expected '===' and instead saw '=='                   eqeqeq
security-settings:   117:41  error    Missing "key" prop for element in iterator            react/jsx-key
security-settings:   140:26  warning  'state' is defined but never used                     no-unused-vars
security-settings:
security-settings: ✖ 10 problems (1 error, 9 warnings)

We'll need to re-run the build after #6195 is merged into develop and then develop is merged into release/10.0.0

/azp run

I just approved/merged #6195 and kicked a new build

Oh wait, we need to update 10, let me see if I can do that in browser or it will need a human intervention...

Ok, 10 branch has been rebased now, kicking a new build...

/azp run


🐛 Bug: Wrong CartItems type

Bug Report Checklist

[X] I have tried restarting my IDE and the issue persists.
[X] I have pulled the latest main branch of the repository.
[X] I have searched for related issues and found none that matched my issue.

Expected
Getting wrong type / autocomplete suggestions for CartItems
// my type def
interface ViewListing {   id: string;   user_id: number;   listing_category_id: string;   listing_sub_category_id?: any;   service_offering: string;   description: string;   listing_images: string[];   minimum_offer: string;   slug: string;   status: string;   size: string;   vehicle_id: number;   country_id: string;   listing_type: string;   created_at: string;   updated_at: string; }
Actual
// default type def
interface CartItems {
cartQuantity?: number;
imagesrc?: string;
inStock?: boolean;
name: string;
price?: number;
productId: number | string | undefined;
quantity: number;
}
Additional Info
Running on:
Nextjs app router
Cart v1.1.1
How can i overwrite or extend the default types for CartItems? the default defaults do not match the items i am saving to cart

Hi @monarcode Can you try this?
interface CustomCartItems extends CartItems {
  id: string;
  user_id: number;
  listing_category_id: string;
  listing_sub_category_id?: any;
  service_offering: string;
  description: string;
  listing_images: string[];
  minimum_offer: string;
  slug: string;
  status: string;
  size: string;
  vehicle_id: number;
  country_id: string;
  listing_type: string;
  created_at: string;
  updated_at: string;
}

Then just use CustomCartItems as your Type

Hi @monarcode Can you try this?
You can extend the CartItems interface.
interface CustomCartItems extends CartItems {
  id: string;
  user_id: number;
  listing_category_id: string;
  listing_sub_category_id?: any;
  service_offering: string;
  description: string;
  listing_images: string[];
  minimum_offer: string;
  slug: string;
  status: string;
  size: string;
  vehicle_id: number;
  country_id: string;
  listing_type: string;
  created_at: string;
  updated_at: string;
}

Then just use CustomCartItems as your Type.
Please let me know how it goes. Happy to help.

Thank you for your response, i was able to get proper type hints by doing something similar
interface Custom extends CartItems {
  ...
}

const cart = withSSR(useCart, (state) => state);
const Items = cart?.cartItems as Custom[];

but i'm not sure if this is the best approach, i was thinking of extending the type of CartItems via a d.ts file, but not sure how i can achieve that..any recommendations?

Ah. You can do that.
// custom.d.ts

interface CustomCartItems extends CartItems {
  id: string;
  user_id: number;
  listing_category_id: string;
  listing_sub_category_id?: any;
  service_offering: string;
  description: string;
  listing_images: string[];
  minimum_offer: string;
  slug: string;
  status: string;
  size: string;
  vehicle_id: number;
  country_id: string;
  listing_type: string;
  created_at: string;
  updated_at: string;
}

Then in the main file.
import { useCart, withSSR } from "cart";
import { CustomCartItems } from './custom';

const cart = withSSR(useCart, (state) => state);
const items = cart?.cartItems as CustomCartItems[];

Hi, @monarcode Since this is not an issue, I'll be moving this to Discussion. Feel free to follow up if needed.
Thanks for understanding 😄


boost171: init at 1.71.0

Motivation for this change
https://www.boost.org/users/history/version_1_71_0.html
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

FWIW, using this as my default boost so LGTM :).

nix-review happy macos 10.13

Can this be merged please?

@GrahamcOfBorg build boost17x


Gateways - Do not log warning event for HTTP listener that doesn't have a tls section

Describe the bug:
When working with an annotated Gateway that has both HTTP and HTTPS listeners, the cert-manager controller will spam the event log of the gateway with an error relating to a missing TLS block in the HTTP listener(s):
Skipped a listener block: [spec.listeners[0].hostname: Required value: the hostname cannot be empty, spec.listeners[0].tls: Required value: the TLS block cannot be empty]

Expected behaviour:

A missing tls section for an HTTP listener should be silently ignored, since certificates are not needed by HTTP listeners.
Steps to reproduce the bug:

Deploy a gateway that has both HTTP and HTTPS listeners, only specifying the tls block for the HTTPS listener(s).

...
apiVersion: gateway.networking.k8s.io/v1beta1
kind: Gateway
metadata:
  name: my-gateway
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-production
spec:
  gatewayClassName: foo
  listeners:
    - allowedRoutes:
        kinds:
          - kind: HTTPRoute
        namespaces:
          from: Same
      name: http
      port: 80
      protocol: HTTP
    - allowedRoutes:
        kinds:
          - kind: HTTPRoute
        namespaces:
          from: Same
      hostname: domain.example.ca
      name: domain-example-ca-https
      port: 443
      protocol: HTTPS
      tls:
        certificateRefs:
          - name: domain-example-ca-tls
        mode: Terminate

Check the event log for the Warning spam.

Anything else we need to know?:
Environment details::

Kubernetes version: v1.26.11
Cloud-provider/provisioner: GCP/GKE
cert-manager version: v1.13.2
Install method: helm

/kind bug

related issue:
https://github.com/cert-manager/cert-manager/issues/6197

Ah yes that would indeed be the same issue.
Closing as duplicate of #6197


System description and details

Project idea is accepted

The project just database browser, no check for entry, and does not really has hotel management. It required advance programmer to use this system.


Fixing race related bugs

Added backup copy to clipboard call
Saved settings string to config to prevent issues with generating a seed and not immediately starting it

No worries. I'm pretty sure I've done the same thing. lol Maybe we need a debug thing for testing how tracker sounds saying something.


Undersampling? (i.e. samplesperpixel < 0)

Thanks for the project!
Do ospray's pathtracer and scivis backends support undersampling, that is: sampling at some rate less than one per pixel, such as once per every 4 pixels? This can be useful for faster rendering at times of user camera interaction.
I do see a usage of a negative spp value in OSPApp.cpp, which is promising:
renderer["spp"] = -1;

However, at least in the scenegraph codepath within sg/Renderer.cpp, I see a minmax being set on the spp of 1, 128:
child("spp").setMinMax(1,128);

So I'm not sure a negative spp has any actual effect (And this is also confirmed by trying it). I do note that this can be done by rendering to a smaller framebuffer size and upscaling, but it'd be handy not to have to manage that on the usage-code side.
Overall, would also be great to have an up-to-date listing of setting/value pairs for getting the absolute best render times possible for fast interactions, with a separate list relevant to the pathtracer and scivis renderer.
The if (fast) { block within OSPApp.app looks promising. However, it doesn't include any potentially relevant pathtracer-only related settings (rouletteDepth / maxContribution) and it also may have out-of-date information (e.g. the -1 for spp that is probably ultimately clamped by minmax, mentioned above).

Hi,
We ended up removing negative spp values from the base OSPRay API (in v1.7.0) due to issues with accumulation, especially in distributed rendering cases. Thus you are correct in observing that this should be done by having two different frame buffers at different resolutions. This keeps things easier for renderer implementers to maintain correctness of accumulation across frames.
If you have a look at example viewer, the scene graph does implement the concept of an "interaction resolution" and "resolution", which you can find in the app menu.

We didn't notice OpenSWR limiting interactivity when using GL upscaling. And even a huge 10ms time for that would still be fast enough. As alternative to GL one can also use other libraries to upscale the framebuffer, for example there is IPP image transforms.
Including upscaling directly in OSPRay is not so easy. Although we have image operations (post processing nodes), those cannot change the resolution. Adding this flexibility complicates OSPRay's implementation and also its usage considerably. Thus I think it is fine to leave that as external task.


Use inline code in prefer-type-cast doc to improve readability

Use inline code in prefer-type-cast doc to improve readability. In particular, <string> in <string>myVariable was hidden when markdown is rendered, which can be misleading to readers.

Hi @scottcheng, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, MSBOT;


Make all Nix libc wrapper types repr(transparent)/From<libc::xx>/Into<libc::xx>

As described in this comment, all the Nix wrapper types should be:

#[repr(transparent)]
impl From<libc::xx> for Wrapper
impl From<Wrapper> for libc::xx

My current thought on this is that impl From<libc::xx> for Wrapper can be unsafe because we cannot ensure the  values set in those libc types are valid

My current thought on this is that impl From<libc::xx> for Wrapper can be unsafe because we cannot ensure the values set in those libc types are valid

Yes.  Especially for cases where the libc type is a union, for example.

There are cases, where the data does not originate from C code, but from Rust code directly. Wouldn't it make sense to have a native Rust type that is guaranteed to be complete as alternative to the libc types? Something like:

That involves doing data copies during every transition from C to Rust or vice versa.  Nix strives for 0-cost abstractions instead.  Wherever possible, Nix's Rust accessors should manipulate the raw C struct.

My suggestion does not replace any existing approach, but adds an alternative way for initialization that happens once for a socket. I'd argue that this optional one-time copy is a valid trade-off for getting rid of unsafe code.

In order to get rid of the copy, we could also make SockAddrLl a newtype around libc::sockaddr_ll and let the user move all values into the constructor. Would you prefer that?

In order to get rid of the copy, we could also make SockAddrLl a newtype around libc::sockaddr_ll and let the user move all values into the constructor (hinting to and hoping for in-lining). Would you prefer that?

The constructor way has been discussed in this comment, and:

I don't like the proposed constructors because they're potentially too limited. On Linux and OSX, the libc structure has 7 fields. On the BSDs, it has between 8 and 10. We don't want to define a new constructor for every combination of fields that the user might want to initialize.

Related: #1977


crash with optifine

see here for details https://github.com/natanfudge/Not-Enough-Crashes/issues/81

OptiFine is known for having issues with Satin, the library powering this mod, so there's sadly not much I can do about it.

incompatible as stated by mod author


Add Vulkan SDK build step to Linux and macOS pipeline

Since we are moving to Vulkan as a graphic API, our local and pipeline build should consume Vulkan SDK to build the engine successfully.
Our  Windows CI build already consumes the SDK, so we want to replicate the same for all other supported platforms (Linux and macOS)

@cazteam would you like to work on it 🙂 ?


clouds v2.0 diagnostics (lauer13jclim and figs. 9.2, 9.4, 9.5 from flato13ipcc)

I get several errors, mostly concerning problems that should have been solved by previous pull requests (like the missing positive attribute in radiation variables, or some model specific fixes).
It looks like this branch is not correctly synchronized with development.

Actually, the branch seems to be properly synchronized, I'm digging into the problem...

Please use yamllint to check the recipes and correct any issues that do not conflict with readability.

yamllint only gives "Valid YAML!" for all added/modified recipes, so not sure what you mean by "correct any issues that do not conflict with readability".

When I run
yamllint esmvaltool/recipes/recipe_clouds_* esmvaltool/recipes/recipe_flato13ipcc.yml esmvaltool/recipes/recipe_lauer13jclim.yml

I get the attached output, can you have a look? I'm not sure why you're not seeing any messages.
yamllint_refactoring_clouds.txt

The new cloud recipes should now comply with the yamllint standard.

Is the problem reported above also solved?

The crashes of clouds_ipcc and flato13ipcc with the error message in calc_netcre about non consistent latitudes have been resolved by removing the affected model (CCSM4). All added recipes have been tested on mistral without errors.

It would be good to add a fix file for this model.

I saw a while ago, that the reason for the issue with CCSM4 latitudes is, that they are differently rounded for different variables: latitudes for rlus an rlut are for example:
rlus:
... -5.18324614  -4.24083757 ...
rlut:
... -5.183  -4.241
Therefore I also excluded the model in an other recipe I'm working on (recipe_deangelis15nat.yml) because it causes trouble with derived variables, which need variables with "different" latitudes. Is there another solution than excluding the model? Can that be fixed in the data or should there be a work around in the ESMVal Tool?
(I'm Katja from Bremen and still new to the ESMVal Tool, therefore I did not write much here , yet)

This should fix the problem, by applying a uniform latitude coordinate to all radiation variables involved.
It seems to work, but please test the 2 affected recipes again.

I can confirm that the fix is working. Put CCSM4 model back into recipes clouds_ipcc and flato13ipcc.

Thanks for the correction through cmor/_fixes and sorry for the late reply. The fix also works for the recipe I'm working on  (recipe_deangelis15nat.yml), but I need it for more variables: Additionally to
rlut, rlutcs, rsut, and rsutcs
also for:
rlus, rsus, rsuscs, rlds, rldscs, rsds, rsdscs, and rsdt
(This is why I didn't reply earlier, it took a while to find all I need. I'm afraid there might be even more more, which this recipe does not include.)
There is a version of CCSM4.py including all these variables in ESMValTool-private/esmvaltool/cmor/_fixes/CMIP5/

Feel free to extend the fix to the variables you need.
As you can see from my example that's pretty easy, just create a child class of rluf for each of the other variables, something like:
    class <your-var>(rlut):
    """Fixes for <your-var>"""

    pass

Yes, thanks, that what I did in CCSM4.py, at ESMValTool-private/esmvaltool/cmor/_fixes/CMIP5/

With this changes also the recipe recipe_deangelis15nat.yml works.


Improve performance of BlockMeshGeneratorSingleShape#generateChunkMesh

Contains
Improved performance by the following changes:

Reduced looping over all block sides from 3 to 1 loop
Only load values when they will be used later

On my Surface Pro 3 with an i5 and high rendering settings the FPS increased at world loading from ~10 to ~13. Also the world loading feels faster.
How to test
Run the game.
Outstanding before merging
Nothing from my side.

Hooray Jenkins reported success with all tests good!

Hooray Jenkins reported success with all tests good!

Can I get some people more familiar with rendering and meshes and 3d wizardry to confirm the code isn't going to be a problem. @skaldarnar it looked good to you?
If so I'll test and merge this out

I don't notice a distinct performance increase or decrease but I've only got my power system with me at the moment. I suspect on lower end hardware this might be useful but like I said, I can't test on that at the moment.
Can anyone with lower hardware test this out and see if it helps?

I tested the change again on my desktop. I used the ultra preset and also set the view distance to ultra. Running on JDK 11 with G1GC and -Xms6G -Xmx6G I saw an FPS increase from ~25 to ~31. I was just standing at a lake with some mountains around.

It doesn't seem like it should negatively impact and logically seems like it should improve it so I'm going to merge away


If you have SQL Server Enterprise under MPSA how to find Power BI Report server key?

This page assumes you use volume licensing service center. However MPSA is different portal located here: https://businessaccount.microsoft.com/Customer/Entitlements/
So when you have it under MPSA, how do you find it? It is not in Business Center.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4600c4b7-8444-f0d4-9e81-25882a951d22
Version Independent ID: 68e1a06b-69f7-8fc9-cfb9-8e4956580fab
Content: How to find your report server product key - Power BI
Content Source: powerbi-docs/report-server/find-product-key.md
Service: powerbi
Sub-service: powerbi-report-server
GitHub Login: @maggiesMSFT
Microsoft Alias: maggies

Hi, @xantari -- Thanks for asking! I'm checking and will get back to you with the answer.

You need to have SA to take advantage of this benefit - since MPSA allows you to not have SA, it isn't available through that portal.

@cmfinlan We still have SA under MPSA. The only difference is that when we pay yearly everything gets synced to the same renewal date so we aren't paying for our products under SA many times throughout the year. Makes budgeting and paying much easier. We had about a dozen volume licensing agreements under the open business plan and we were creating PO's for the renewals almost every month!

@cmfinlan FYI, you can confirm yourself, software assurance is available under MPSA as indicated in their FAQ of MPSA: https://www.microsoft.com/en-us/licensing/mpsa/default

I understand it is still available, it's more around the frequency of renewals made some things a challenge at the time this was implemented IIRC.  I'll follow up with business planning to see if they can make a change there going forward to make it available - if you work with a Microsoft rep directly, they should be able to assist as well.

@cmfinlan We work with CDW, not sure if we have a MS Rep assigned to us? How would I know? Any idea how to get the license key from MPSA Business Center? Even though we spent 15k / year on SQL Server Enterprise licensing, and we can see it in MPSA Business Center, we are unable to get Power BI Report Server. Searching for "power" yields no results:

Hi, @xantari -- hope you've figured this out by now. If not, please enter a support ticket at https://powerbi.microsoft.com/en-us/support/
They can help investigate.
Thanks!

Im having the same issue. The page here: https://docs.microsoft.com/en-us/power-bi/report-server/find-product-key is wrong as the SQL EE SA product no longer lists the key. :-\ This is poorly managed for SA users.

Yeah I never got the key. It seems when you buy SQL Enterprise via MPSA you do not get it! We have SA on our license and everything. Once we transitioned from volume licensing (open business) to MPSA it no longer shows key for Power BI Report Server :(


Mark all possible public methods leading to heap pollution with @SafeVarargs and make them final

Add intermediate protected methods for proxying that will be used by ByteBuddy to perform the actual delegation.
I took the liberty to remove some of the now not needed @SuppressWarnings.
With this, we can actually get rid of the different ProxyXXXAssert(s). I was not sure if you want me to do it now or not.
An additional improvement can also be the removal of the different satisfiesAnyOf(Consumer<ACTUAL> assertions1, Consumer<ACTUAL> assertions2) methods in the AbstractAssert and replace it with one with a varags.
@jgiovaresco, sorry that I did this without asking you first. I was eager to play a bit with ByteBuddy a bit.
@joel-costigliola I am completely fine in giving the entire contribution about this to @jgiovaresco.
Check List:

Fixes #2161
Unit tests :  NA
Javadoc with a code example (on API only) : NA

Thanks @filiphr, the idea is really nice.

With this, we can actually get rid of the different ProxyXXXAssert(s). I was not sure if you want me to do it now or not.

I vote for it, those classes were already a limitation. It could be done in a separate PR, though.

@joel-costigliola I am completely fine in giving the entire contribution about this to @jgiovaresco.

I think it would be fair to have the merge with a co-authored commit.

That looks good, thanks @filiphr and @jgiovaresco.

@filiphr Good job 👏
I couldn't have done it as well 💪

I vote for it, those classes were already a limitation. It could be done in a separate PR, though.

Yes I agree, separate PR is better for it. I will work on one that will remove all the ProxyXXXAssert(s).

Thanks all! Really appreciate the good vibe :)

Integrated thanks @filiphr!
I also commited the removal of ProxyXXXAssert

Thanks a lot @joel-costigliola


fixed broken link and updated Installation

fixed the broken link faster than the equivalent Java code  with new link and updated the Installation instruction, as WhiteboxTools is no longer a sub-folder of Whitebox GAT.

@giswqs I'm sorry, I'm trying to merge this, but am having GitHub troubles at the moment. Hopefully, I'll figure it out shortly.


Accept filters multiple times in history list.

Summary
ListEvaluationHistory RPC accepts multiple entries for string-like filters, e.g. evaluation statuses, profile names, etc. While minder CLI internally manages those filters as slices, viper is not configured to accept repeated options.
This change makes it possible to provide --profile-name, --entity-name, --entity-type, --eval-status, --remediation-status, and --alert-status options multiple times with different values, all of which will eventually be passed to the backend as filters.
Fixes #3978
Change Type

[X] Bug fix (resolves an issue without affecting existing features)
[ ] Feature (adds new functionality without breaking changes)
[ ] Breaking change (may impact existing functionalities or require documentation updates)
[ ] Documentation (updates or additions to documentation)
[ ] Refactoring or test improvements (no bug fixes or new functionality)

Testing
Manually tested against local and staging environment.
Review Checklist:

[X] Reviewed my own code for quality and clarity.
[ ] Added comments to complex or tricky code sections.
[ ] Updated any affected documentation.
[ ] Included tests that validate the fix or feature.
[X] Checked that related changes are merged.

coverage: 54.343% (+0.01%) from 54.329%
when pulling 184c13f4d5fd6493cd4468e845d1e65aa16f5a80 on fix-history-list-cli-filters
into b5ec456687eb80c931e8a03c875b6a49f014241b on main.


Fix: Prevent collective from having zero admin.

This PR fix #2320, by basically adding a condition that prevents a collective admin member from removing self from a collective.

Let's back that with test.


Build Failure

Looks like the most recent commit of adding in ABLink is failing. It's currently included in the AudioKitSynthOne-Bridging-Header.h but doesn't look to be included in the project. This is resulting in build errors.
It looks like the files have been added to the .gitignore so they weren't checked into the project. https://github.com/AudioKit/AudioKitSynthOne/blob/master/.gitignore#L70-L71
You should also look into updating the TravisCI build to fail if the project doesn't build. Looks like xcbuild always returns an exit code of 0 no matter if the project fails to build or not.  Here's a quick stack overflow answer on a simple remedy!  https://stackoverflow.com/questions/7363459/how-to-get-the-return-value-of-xcodebuild
Thanks again for this project and let me know of anything I can do to help get this resolved!

Interesting, I thought I got it so that develop still built (it did on my machine) without Link in place.  Honestly, the best bet for you going forward is to get Link and get those files.  At this point, Ableton isn't allowing us to distribute the files outside of their own private repo.  As far as Travis, can you you @megastep have a look?

Haven't looked at this yet but I assume we'll have to turn it off by default for Travis and other builds to complete if the files are not here.

@aure good to know. Maybe you can put some info in the README linking to Ableton link?
Sent with GitHawk

@bmeverett Thanks! I've fixed the Travis config so we do catch build failures, and added a custom user setting in the project so that we can turn on Ableton Link explicitly. It is disabled by default so the user can turn it on when they have the SDK files.
I've also added a blurb in the README about this, though @aure might want to elaborate on that.


Work around swift-bootstrap inability to handle plugins

swift-bootstrap currently can't handle dependencies with plugins, which prevents us from bumping Swift Argument Parser to a newer version, which did add a dependency on a plugin. The easiest workaround is to exclude plugins from the modules graph only when building with swift-bootstrap.

@swift-ci test

@swift-ci test

@swift-ci test linux


update project name on iot CMake

Anything in a CMake project gets grouped in IDE integrations. Currently it looks like this in VSCode:

The title az_iot_samples_common isn't exactly right so updated the name to better reflect the grouping.

Good catch!


Allow TSI handshaker to send an alert to peer on protocol failure

This change introduces a new tsi_result, TSI_SEND_ALERT_AND_CLOSE. This error code is used by a TSI handshaker to indicate that a protocol error occurred and that a final alert message is to be sent to the peer. This behavior is implemented in security_handshaker.cc.

Jenkins: Please run the tests.

Mark Roth.

Thanks Anna for revision. Looks good to me.
Mark Roth: do you want to take a look as well? Do you know how to trigger jenkins tests?

I think this PR is the wrong approach.  I suggest the following approach instead:

Add a grpc_error *fail_after_write field to the security_handshaker struct.

In on_handshake_next_done_locked(), when you get a TSI_SEND_ALERT_AND_CLOSE result, save the error in the fail_after_write field instead of returning it.  Since bytes_to_send_size will be greater than 0, we will follow the existing code-path to start a write to the peer.

In on_handshake_data_sent_to_peer(), change the check for error != GRPC_ERROR_NONE || h->shutdown to also check for h->fail_after_write != GRPC_ERROR_NONE.

Also, I am going to insist on seeing a test for this new functionality as part of this PR.

Reviewed 2 of 3 files at r1, 1 of 1 files at r2.
Review status: all files reviewed at latest revision, 4 unresolved discussions.

src/core/lib/security/transport/security_handshaker.cc, line 248 at r2 (raw file):
Quoted 4 lines of code…
>     h->shutdown = true;
>     grpc_endpoint_write(exec_ctx, h->args->endpoint, &h->outgoing,
>                         &h->on_handshake_data_sent_to_peer);
>     return error;

It is incorrect and unsafe to both return an error and start an async I/O operation at the same time; this function needs to do exactly one of those two things, not both.  The basic problem here is that if we return an error from this function, then we will immediately invoke the handshaker's completion callback and unref the handshaker.  This means that the handshaker will likely no longer exist when the async operation completes, which will cause a crash.
Also, as mentioned below, the shutdown logic is designed very carefully, and I don't want to mess with it here.  We should not be starting any new async operation after we have set shutdown to true.

src/core/lib/security/transport/security_handshaker.cc, line 371 at r2 (raw file):

  security_handshaker *h = (security_handshaker *)arg;
  gpr_mu_lock(&h->mu);
  if (error != GRPC_ERROR_NONE) {

I am uncomfortable with changing this condition.  The reason that we check both error and h->shutdown is that there's an inherent race condition when cancelling any operation with a pending callback: the callback may already be in flight at the moment of cancellation, in which case error will be GRPC_ERROR_NONE, so we need to check h->shutdown to see if we've been shut down.  The logic related to this is very tricky and took a long time to get right (we caused a lot of bugs along the way), and I don't want to mess with it unless we can't avoid it (which I don't think is the case here).

src/core/lib/security/transport/security_handshaker.cc, line 379 at r2 (raw file):

if (h->shutdown) {

Quoted 6 lines of code…
>     // Allow final messages to be sent on shutdown. (TSI_SEND_ALERT_AND_CLOSE).
>     security_handshake_failed_locked(
>         exec_ctx, h, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
>             "Handshake terminated after final write"));
>     gpr_mu_unlock(&h->mu);
>     return;

>   }
This logic is incorrect for at least the following reasons:

Earlier, when we returned from on_handshake_next_done_locked() with an error, the handshaker would have been unreffed at that point, which means that we cannot check h->shutdown here.

Earlier, when we returned from on_handshake_next_done_locked() with an error, we would already have called security_handshake_failed_locked(), which means that the handshaker's completion callback would have already been invoked.  Trying to do that again here (even if the handshaker hadn't already been unreffed) would cause us to schedule the same closure twice, which is a bug.

Comments from Reviewable

Review status: all files reviewed at latest revision, 4 unresolved discussions.

src/core/lib/security/transport/security_handshaker.cc, line 248 at r2 (raw file):
Previously, markdroth (Mark D. Roth) wrote…

h->shutdown = true;
grpc_endpoint_write(exec_ctx, h->args->endpoint, &h->outgoing,
                    &h->on_handshake_data_sent_to_peer);
return error;

It is incorrect and unsafe to both return an error and start an async I/O operation at the same time; this function needs to do exactly one of those two things, not both.  The basic problem here is that if we return an error from this function, then we will immediately invoke the handshaker's completion callback and unref the handshaker.  This means that the handshaker will likely no longer exist when the async operation completes, which will cause a crash.
Also, as mentioned below, the shutdown logic is designed very carefully, and I don't want to mess with it here.  We should not be starting any new async operation after we have set shutdown to true.

Keep in mind that error in this if statement is GRPC_ERROR_NONE. We intentionally delay shutdown only after we sent the alert message.

Comments from Reviewable

Thanks Mark for suggestions. It is safer to use a different flag to indicate tsi_send_alert event instead of piggyback on shutdown. Although the current code  path is the same (there are some minor differences on the printed error message though).

Review status: all files reviewed at latest revision, 4 unresolved discussions.

Comments from Reviewable

Review status: all files reviewed at latest revision, 4 unresolved discussions.

src/core/lib/security/transport/security_handshaker.cc, line 248 at r2 (raw file):
Previously, jiangtaoli2016 (Jiangtao Li) wrote…
Keep in mind that error in this if statement is GRPC_ERROR_NONE. We intentionally delay shutdown only after we sent the alert message.

Thanks for pointing that out -- I didn't realize that we were returning GRPC_ERROR_NONE here.
This PR might be workable, but I still think the approach I suggested would be better.  There would be less code and it would be easier to read, maintain, and understand.

Comments from Reviewable

****************************************************************

libgrpc.so

     VM SIZE                                                              FILE SIZE
 ++++++++++++++ GROWING                                                ++++++++++++++
  +0.0%    +176 [None]                                                    +528  +0.0%
  +5.7%    +224 src/core/lib/security/transport/security_handshaker.cc    +224  +5.7%
       +31%    +143 on_handshake_next_done_locked                             +143   +31%
       +33%     +91 on_handshake_data_sent_to_peer                             +91   +33%
  +0.8%     +16 src/core/tsi/transport_security.cc                         +16  +0.8%
      +6.1%     +16 tsi_result_to_string                                       +16  +6.1%

  +0.0%    +416 TOTAL                                                     +768  +0.0%

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

Review status: 2 of 3 files reviewed at latest revision, 4 unresolved discussions.

src/core/lib/security/transport/security_handshaker.cc, line 248 at r2 (raw file):
Previously, markdroth (Mark D. Roth) wrote…
Thanks for pointing that out -- I didn't realize that we were returning GRPC_ERROR_NONE here.
This PR might be workable, but I still think the approach I suggested would be better.  There would be less code and it would be easier to read, maintain, and understand.

Done.

src/core/lib/security/transport/security_handshaker.cc, line 371 at r2 (raw file):
Previously, markdroth (Mark D. Roth) wrote…
I am uncomfortable with changing this condition.  The reason that we check both error and h->shutdown is that there's an inherent race condition when cancelling any operation with a pending callback: the callback may already be in flight at the moment of cancellation, in which case error will be GRPC_ERROR_NONE, so we need to check h->shutdown to see if we've been shut down.  The logic related to this is very tricky and took a long time to get right (we caused a lot of bugs along the way), and I don't want to mess with it unless we can't avoid it (which I don't think is the case here).

I restored the additional logic here and added an additional case for h->fail_after_write, like you suggested.

Comments from Reviewable

Review status: 2 of 3 files reviewed at latest revision, 4 unresolved discussions.

src/core/lib/security/transport/security_handshaker.cc, line 371 at r2 (raw file):
Previously, annasapek (Anna Sapek) wrote…
I restored the additional logic here and added an additional case for h->fail_after_write, like you suggested.

oops, *original logic

src/core/lib/security/transport/security_handshaker.cc, line 379 at r2 (raw file):
Previously, markdroth (Mark D. Roth) wrote…

if (h->shutdown) {
// Allow final messages to be sent on shutdown. (TSI_SEND_ALERT_AND_CLOSE).
security_handshake_failed_locked(
exec_ctx, h, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
"Handshake terminated after final write"));
gpr_mu_unlock(&h->mu);
return;
}

This logic is incorrect for at least the following reasons:

Earlier, when we returned from on_handshake_next_done_locked() with an error, the handshaker would have been unreffed at that point, which means that we cannot check h->shutdown here.

Earlier, when we returned from on_handshake_next_done_locked() with an error, we would already have called security_handshake_failed_locked(), which means that the handshaker's completion callback would have already been invoked.  Trying to do that again here (even if the handshaker hadn't already been unreffed) would cause us to schedule the same closure twice, which is a bug.

Thanks for the explanation. I did run into the issue of double-scheduling the closure when I was trying to get this to work, so I understand that it must be called exactly once. Is the handshaker only supposed to be ref'd once and unref'd once in its lifetime?

Comments from Reviewable

Corrupt JSON data (indicates timeout or crash):
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__64_2_0.counters.old: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__32k_2_0.counters.old: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__64_2_0.opt.old: 4
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__0_2_0.counters.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__512_2_0.counters.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__512_2_0.counters.new: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__1_2_0.opt.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__512_2_0.opt.old: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__1_2_0.counters.new: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__64_2_0.counters.old: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__32k_2_0.opt.new: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__8_2_0.counters.old: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__1_2_0.opt.old: 4
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__4k_2_0.counters.old: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__8_2_0.counters.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__4k_2_0.opt.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__4k_2_0.opt.new: 6
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__4k_2_0.counters.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__8_2_0.opt.new: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__512_2_0.opt.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__32k_2_0.counters.new: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__64_2_0.opt.new: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__64_2_0.opt.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__8_2_0.counters.new: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__8_2_0.opt.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__1_2_0.opt.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__4k_2_0.opt.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__0_2_0.counters.new: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__512_2_0.opt.new: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__0_2_0.opt.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__8_2_0.counters.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__64_2_0.opt.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__512_2_0.counters.old: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__512_2_0.opt.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__0_2_0.opt.old: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__1_2_0.counters.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__32k_2_0.opt.new: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__0_2_0.counters.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__0_2_0.opt.new: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__8_2_0.opt.old: 1
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__4k_2_0.counters.old: 2
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__8_2_0.opt.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__1_2_0.counters.new: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__1_2_0.counters.old: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__0_2_0.opt.old: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__64_2_0.counters.new: 4
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__4k_2_0.opt.old: 3
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_MinInProcessCHTTP2_NoOpMutator_NoOpMutator__4k_2_0.counters.new: 6
    bm_fullstack_streaming_ping_pong.BM_StreamingPingPongWithCoalescingApi_InProcessCHTTP2_NoOpMutator_NoOpMutator__512_2_0.counters.old: 3

[microbenchmarks] No significant performance differences

Reviewed 1 of 1 files at r3.
Review status: all files reviewed at latest revision, 10 unresolved discussions.

src/core/lib/security/transport/security_handshaker.cc, line 379 at r2 (raw file):
Previously, annasapek (Anna Sapek) wrote…
Thanks for the explanation. I did run into the issue of double-scheduling the closure when I was trying to get this to work, so I understand that it must be called exactly once. Is the handshaker only supposed to be ref'd once and unref'd once in its lifetime?

There are two refs to the handshaker.  One is held by the handshake manager that creates this handshaker (taken in security_handshaker_create() and released in security_handshaker_destroy()).  The other is an internal ref used to ensure that the handshaker isn't destroyed while there are callbacks pending (taken in security_handshaker_do_handshake() and released in security_handshaker_unref()).

src/core/lib/security/transport/security_handshaker.cc, line 224 at r3 (raw file):

    const unsigned char *bytes_to_send, size_t bytes_to_send_size,
    tsi_handshaker_result *handshaker_result) {
  grpc_error *error = GRPC_ERROR_NONE;

This variable probably isn't needed if you make the changes I suggest below.

src/core/lib/security/transport/security_handshaker.cc, line 230 at r3 (raw file):

    grpc_endpoint_read(exec_ctx, h->args->endpoint, h->args->read_buffer,
                       &h->on_handshake_data_received_from_peer);
    return error;

Suggest changing this to return GRPC_ERROR_NONE, to make it clearer that there's no error here.

src/core/lib/security/transport/security_handshaker.cc, line 232 at r3 (raw file):

    return error;
  }

Nit: Please remove blank lines within functions, both here and throughout.

src/core/lib/security/transport/security_handshaker.cc, line 234 at r3 (raw file):

  // Handle TSI errors.
  if (result == TSI_SEND_ALERT_AND_CLOSE && bytes_to_send_size > 0) {

Suggest combining this with the next block:
if (result != TSI_OK) {
  grpc_error *error = grpc_set_tsi_error_result(
      GRPC_ERROR_CREATE_FROM_STATIC_STRING("Handshake failed"), result);
  if (result == TSI_SEND_ALERT_AND_CLOSE && bytes_to_send_size > 0) {
    h->fail_after_write = error;
  } else {
    return error;
  }
}

src/core/lib/security/transport/security_handshaker.cc, line 265 at r3 (raw file):

  } else {
    // Handshake has finished, check peer and so on.
    error = check_peer_locked(exec_ctx, h);

Suggest changing this to just return check_peer_locked(...).

src/core/lib/security/transport/security_handshaker.cc, line 267 at r3 (raw file):

    error = check_peer_locked(exec_ctx, h);
  }
  return error;

Suggest changing this to return GRPC_ERROR_NONE.

src/core/lib/security/transport/security_handshaker.cc, line 368 at r3 (raw file):

    return;
  }
  if (h->fail_after_write != GRPC_ERROR_NONE) {

This block is almost exactly the same as the preceding block.  I suggest combining them like so:
if (error != GRPC_ERROR_NONE || h->shutdown || h->fail_after_write != GRPC_ERROR_NONE) {
  if (error != GRPC_ERROR_NONE || h->fail_after_write != GRPC_ERROR_NONE) {
    grpc_error *errors[] = {error, h->fail_after_write};
    error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
        "Handshake failed", errors, GPR_ARRAY_SIZE(errors));
    GRPC_ERROR_UNREF(h->fail_after_write);
  }
  security_handshake_failed_locked(exec_ctx, h, error);
  gpr_mu_unlock(&h->mu);
  security_handshaker_unref(exec_ctx, h);
  return;
}

This approach has the added benefit that if both h->fail_after_write is set and the write fails, we will propagate both errors.

Comments from Reviewable

Closing obsolete PR. Please reopen if there is interest in pursuing this.

Thank you for your pull request. Before we can look at your contribution, we need to ensure all contributors are covered by a Contributor License Agreement.
After the following items are addressed, please respond with a new comment here, and the automated system will re-verify.

User @annasapek isn't covered by a CLA. They will need to complete the form at https://identity.linuxfoundation.org/projects/cncf

Regards,
CLA GitHub bot


conflicts in conda env create -f NeuralPull.yaml

Full log:
 conda env create -f NeuralPull.yaml

Collecting package metadata (repodata.json): done
Solving environment: failed

ResolvePackageNotFound:
  - python==2.7.12=1
  - tk==8.5.18=0
  - readline==6.2=2
  - qt==5.6.2=5
  - sqlite==3.13.0=0
  - fontconfig==2.12.1=3
  - pillow==4.2.1=py27_0
  - cairo==1.14.8=0
  - matplotlib==2.0.2=np113py27_0
  - freetype==2.5.5=2
  - icu==54.1=0
  - libiconv==1.14=0
  - cudatoolkit==8.0=3

Hi @mabaorui, I have got some cycles to test the code :)
I am going around this issue by removing the version constraints on these packages but it would be great to have an official YAML that works because now i won't know if any subsequent issue come from a bad package version or something else,
Best regards,
Thibault

Hi @ThibaultGROUEIX ,
After you run 'source activate tensorflow', you may encounter the same problem as him, you can refer to this link.
If you still have problems, please feel free to contact me.
https://github.com/mabaorui/NeuralPull/issues/3#issue-953361091

Thanks @mabaorui !


Upgrade to go1.18.7

What does this PR do?
Upgrades the agent from go1.18.6 to go1.18.7.
Describe how to test/QA your changes
The release notes for this version are:

go1.18.7 (released 2022-10-04) includes security fixes to the archive/tar, net/http/httputil, and regexp packages, as well as bug fixes to the compiler, the linker, and the go/types package. See the Go 1.18.7 milestone on our issue tracker for details.

The included teams for QA use net/http/httputil or (team/agent-security) archive/tar or go/types.  Just about everyone uses regexp, but the issue addressed in that change should not affect most uses of the package.  We do use ReverseProxy, which is the part of net/http/httputil modified in this release.
There's no specific QA here, except to evaluate use of the affected modules for possible impact and test potentially impacted scenarios.
Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided if the qa/skip-qa label is not applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

The red X's are all for kitchen tests and look intermittent-y to me, so I'm going to merge despite them.


Tests fail on Windows

No idea whether you intend to support Windows or not, but in any case I thought I'd point out that the tests currently fail on Windows due to Unix-specific paths, among other things. (The first failure is here: https://github.com/segmentio/metalsmith/blob/eb43dfdb3fc7ccd5f9c7b1b501819c07cea8d162/test/index.js#L71-L74). Eh, I guess I'll spin up a Vagrant VM for now.

The tests also seem to be sensitive to line endings, so for future reference, you might want to unset git core.autocrlf to ensure the fixture files are using Unix-style line endings.

I think to fix this, the tests will need converting to use path for generating paths and potentially using path.sep as a separator where necessary.


Fix error "Not authorized" when uploading archives

The persistentlogin=off snippet in the request makes the server to respond the cookie persistentlogin, which will then be send in the POST teleporter.php request when uploading backup, which will cause the pihole server to respond: "Not authorized" when this cookie is sent.
Removing this snippet in the login request removes the persistentlogin in the response. Conesquently, the archive upload is accepted by the pihole sever.
=====
When using orbital-sync, I have the following logs:
pihole-sync  | 6/30/2024, 8:58:04 AM: ➡   Signing in to https://example.com/admin...
 ihole-sync  | 6/30/2024, 8:58:04 AM: ✔   Successfully signed in to https://example.com/admin!
 ihole-sync  | 6/30/2024, 8:58:04 AM: ➡   Downloading backup from https://example.com/admin...
 ihole-sync  | 6/30/2024, 8:58:04 AM: ✔   Backup from https://example.com/admin completed!
 ihole-sync  | 6/30/2024, 8:58:04 AM: ➡   Signing in to https://example.com/admin...
 ihole-sync  | 6/30/2024, 8:58:04 AM: ➡   Signing in to https://example.com/admin...
 ihole-sync  | 6/30/2024, 8:58:04 AM: ➡   Signing in to https://example.com/admin...
 ihole-sync  | 6/30/2024, 8:58:04 AM: ✔   Successfully signed in to https://example.com/admin!
 ihole-sync  | 6/30/2024, 8:58:04 AM: ➡   Uploading backup to https://example.com/admin...
 ihole-sync  | 6/30/2024, 8:58:04 AM: {"host":"https://example.com","path":"/admin","status":200,"responseBody":"Not authorized"}
pihole-sync  | 6/30/2024, 8:58:04 AM: ⚠ Error: Failed to upload backup to "https://example.com/admin".
pihole-sync  | 6/30/2024, 8:58:04 AM: ✔   Successfully signed in to https://example.com/admin!
 ihole-sync  | 6/30/2024, 8:58:04 AM: ➡   Uploading backup to https://example.com/admin...
 ihole-sync  | 6/30/2024, 8:58:04 AM: {"host":"https://example.com","path":"/admin","status":200,"responseBody":"Not authorized"}
pihole-sync  | 6/30/2024, 8:58:04 AM: ⚠ Error: Failed to upload backup to "https://example.com/admin".
pihole-sync  | 6/30/2024, 8:58:04 AM: ✔   Successfully signed in to https://example.com/admin!
 ihole-sync  | 6/30/2024, 8:58:04 AM: ➡   Uploading backup to https://example.com/admin...
 ihole-sync  | 6/30/2024, 8:58:04 AM: {"host":"https://example.com","path":"/admin","status":200,"responseBody":"Not authorized"}
pihole-sync  | 6/30/2024, 8:58:04 AM: ⚠ Error: Failed to upload backup to "https://example.com/admin".
pihole-sync  | 6/30/2024, 8:58:04 AM: ⚠ Failure: 0/3 hosts synced.
pihole-sync  | 6/30/2024, 8:58:04 AM: Waiting 1 minutes...
pihole-sync  | 6/30/2024, 8:59:04 AM: ➡   Signing in to https://example.com/admin!
pihole-sync  | 6/30/2024, 8:59:04 AM: ➡   Uploading backup to https://example.com/admin!
pihole-sync  | 6/30/2024, 8:59:04 AM: ➡   Uploading backup to https://example.com","path":"/admin","status":200,"responseBody":"Not authorized"}
pihole-sync  | 6/30/2024, 8:59:04 AM: ⚠ Error: Failed to upload backup to "https://example.com/admin".
pihole-sync  | 6/30/2024, 8:59:04 AM: {"host":"https://example.com","path":"/admin","status":200,"responseBody":"Not authorized"}
pihole-sync  | 6/30/2024, 8:59:04 AM: ⚠ Error: Failed to upload backup to "https://example.com/admin".
pihole-sync  | 6/30/2024, 8:59:05 AM: ✔"  Successfully signed in to https://example.com/admin!
pihole-sync  | 6/30/2024, 8:59:05 AM: ➡"  Uploading backup to https://example.com","path":"/admin","status":200,"responseBody":"Not authorized"}
pihole-sync  | 6/30/2024, 8:59:05 AM: ⚠ Error: Failed to upload backup to "https://example.com/admin".
pihole-sync  | 6/30/2024, 8:59:05 AM: ⚠ Failure: 0/3 hosts synced.
pihole-sync  | 6/30/2024, 8:59:05 AM: Waiting 1 minutes...

I tracked the upload failure, and it is related to the persistentlogin cookie being sent with the upload request:

When I try the same request without this cookie, the upload works:

This cookie comes from the &persistentlogin=off part of the request sent during the login (https://github.com/mattwebbio/orbital-sync/blob/master/src/client/v5/index.ts#L42)
When this part is appended to the request, the persistentlogin cookie is received (and is then sent during the backup upload request):

When i remove this part, the cookie is not set and the upload works:

This is amazing! Thanks so much for figuring this out :)


reset the PTO count when receiving a Retry

Not sure if this is the right thing to do, but it would prevent this failure:

The test fails because the server receives the token more than protocol.RetryTokenValidity (10s) after it was issued.

Codecov Report

Merging #2462 into master will decrease coverage by 0.02%.
The diff coverage is 20.00%.

@@            Coverage Diff             @@
##           master    #2462      +/-   ##
==========================================
- Coverage   85.42%   85.40%   -0.02%
==========================================
  Files         120      120
  Lines        9349     9352       +3
==========================================
+ Hits         7986     7987       +1
- Misses       1007     1009       +2
  Partials      356      356

Impacted Files
Coverage Δ

internal/ackhandler/sent_packet_handler.go
70.78% <20.00%> (-0.27%)
:arrow_down:

Continue to review full report at Codecov.

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


ERROR: No matching distribution found for win32process

After creating and activating a new virtual environment conda-dev and attempting to install dependencies using the command pip3 install -r requirements.txt, the following error occurs:
ERROR: Could not find a version that satisfies the requirement win32process (from versions: none)
ERROR: No matching distribution found for win32process

Update: current branch is dev-software

Hi. We have merged both dev-software and dev-games into the main branch and these two branches are deprecated now. Could you follow the readme in the main branch to install the libraries and see whether the issue still exists? Thanks.

Yes, thank you, it's wprked!


Trying to upload an mp3 file takes too long and just fails after a while

Tried opening my private folder, dragged an mp3 into a subfolder and just fails
(File date is wonky as well. Original file has a proper date)

my log id: 4b175b4c3a140d912ffebf1c

Thanks.  We've recently identified some issues around the algorithm we use to control these timeouts -- we'll be working on fixing it soon.

Any progress on this issue as I'm having the same problem?

Yep, plenty of progress.  In fact the latest client has most of the file system code necessary for this, we just haven't turned it on by default yet as 1) we're still testing it, and 2) none of the UX work has been done. Maybe soon we'll post instructions on how to enable it by hand if some users comfortable with early testing want to try it out.

Super, thanks for the update. I'll keep an eye out for when it's available to test.
Many thanks
On 17 October 2016 00:23:32 BST, Jeremy Stribling<EMAIL_ADDRESS>wrote:

Yep, plenty of progress.  In fact the latest client has most of the
file system code necessary for this, we just haven't turned it on by
default yet as 1) we're still testing it, and 2) none of the UX work
has been done. Maybe soon we'll post instructions on how to enable it
by hand if some users comfortable with early testing want to try it
out.

Version 1.0.20 has architectural changes that should greatly improve the large write experience.  If you're still seeing problems, please open a new issue.


Add more content in pointers in array C++

Select the Day of Content
Day 11
What information is missing?
Add more question related to pointers in array. As pointers in array is very important so more questions should be add here for reference. More questions means people can practice more and that will enhance website a lot. People will visit website more and practice more. This will also improve ranking of the website.

I want to work on this issue under GSSOC '24. Please assign it to me.

@subhadipbhowmik is this issue assigned to me ?
As label is added but I am not assigned.

@subhadipbhowmik my branch is merged but it does not show in leaderboard


Clone Service UI

Need to be able to clone a service like how we can clone machine and a container.

Closing this.  Clone of #825


[Bug]: Query Pipeline with Async/Parallel Execution Broken

Bug Description
I'm running into an issue with my query pipeline. I'm trying to run the join on the output of worker_llms (llms run in parallel) but the join always seems to run right after worker_query and before the worker_llms.  When I visualize the DAG it looks correct.
It works through version 1.10.46 and breaks in version 1.10.47.  Here is the Discord thread where I go over the issue with Logan.

Version
1.10.47
Steps to Reproduce
This LlamaIndex example.
Relevant Logs/Tracbacks
No response

can confirm this. still broken.

Any update on this one? Still seems to be broken as of 0.10.65


I'd like to use your code but I won't do it because of missing license.

Hi Jason,
I have a question about the project's license since I am working for a bigger client and I don't like to use code from the internet that isn't clearly licensed with let's say "MIT" or anything similar.
At first I really appreciate what you've done so far. Dynamics CRM web services are pretty hard to deal with if you ask me. But after some adaptions of your code for Symfony2 it works like a charm in my project.
But to break down the small-talk a bit… ;-)
I can't see any license for your code. According to GitHub Licensing information that means "nobody else may reproduce, distribute, or create derivative works from your work" which is a pity.
I would be happy if you could either add an appropriate license to CRMSoapAuthPHP or if you would explicitly allow me to use and change it a bit for my client project.
Thanks in advance and best regards from Hamburg, Germany!

Is Apache 2.0 good enough?

It's up to you, I think. ;-) Best is MIT, of course. Not sure right now if Apache license is okay for my client's requirements. In the end the choice is yours. :-)

MIT it is :)

Wonderful! Thanks a lot. :+1:


docs(Storybook): switch @storybook/addon-options to dev dependency

Closes IBM/carbon-components-react#1259
@storybookaddon-options was added as a regular dependency when it should have been a dev dependency.
Changelog
Changed

@storybook/addon-options from dependencies to devDependencies

Agreed @vpicone, although luckily this isn't something that gets updated often. Just have to remember we need to run prettier before merging in the changes to issue templates.


feat: move kyc to events

Resolves #848
This PR moves the kyc and new terms and conditions to the events committee portal.
Relates to 144
We need to update the front end together witht the indexer and contract changes.
TODO

[x] Update the contract and deploy
[x] Deploy the newest indexer
[x] Add github action to deploy front end

@race-of-sloths include

@Tguntenaar Thank you for your contribution! Your pull request is now a part of the Race of Sloths!
You are true leader! Other sloths hot on your heels, keep moving!

Current status: waiting for scoring
We're waiting for maintainer to score this pull request with @race-of-sloths score [0,1,2,3,5,8,13] command
What is the Race of Sloths

Race of Sloths is a friendly competition where you can participate in challenges and compete with other open-source contributors within your normal workflow
For contributors:

Tag @race-of-sloths inside your pull requests
Wait for the maintainer to review and score your pull request
Check out your position in the Leaderboard
Keep weekly and monthly streaks to reach higher positions
Boast your contributions with a dynamic picture of your Profile

For maintainers:

Score pull requests that participate in the Race of Sloths
Engage contributors with fair scoring and fast responses so they keep their streaks
Promote the Race to the point where the Race starts promoting you
Grow the community of your contributors

Feel free to check our website for additional details!

Bot commands

For contributors

Include a PR: @race-of-sloths include to enter the Race with your PR

For maintainers:

Assign points: @race-of-sloths score [1/2/3/5/8/13] to award points based on your assessment.
Reject this PR: @race-of-sloths exclude to send this PR back to the drawing board.
Exclude repo: @race-of-sloths pause to stop bot activity in this repo until @race-of-sloths unpause command is called

@race-of-sloths score 3

🌟 Score recorded!
@Megha-Dev-19, thank you for scoring this pull request in the Race of Sloths!

It seems like a test failed after the main branch got merged into this branch. Both branches didn't have any tests failing but I will revert the merge.

✅ PR is finalized!
Your contribution is much appreciated with a final score of 3!
You have received 30 Sloth points for this contribution
We would appreciate your feedback or contribution idea that you can submit here

@race-of-sloths score 3

⏰ Scoring closed
24 hours have already passed since the merge


This file breaks the demuxer

https://tempfile.io/en/mGU5snoiT6XkAs8/file
        if doc_type != "matroska" && doc_type != "webm" {
            return Err(DemuxError::InvalidEbmlHeader(format!(
                "unsupported DocType: {}",
                doc_type
            )));
        }

p doc_type
(alloc::string::String) doc_type = "webm {
  [0] = 'w'
  [1] = 'e'
  [2] = 'b'
  [3] = 'm'
  [4] = '\0'
}

Researching a bit more here,
Null bytes are allowed by the spec:
https://github.com/ietf-wg-cellar/ebml-specification/blob/master/specification.markdown#string-element
String::from_utf8() does not trim
And lastly Strings in Rust are not null-terminated (I did not know that!) : https://github.com/rust-lang/rust/issues/39295

You could just trim the end of the str before we compare it:
https://doc.rust-lang.org/std/primitive.str.html#method.trim_end
PR is welcome.

Fix released with v0.5.0

Hi @hasenbanck
Sorry, I've been OOO these past few days.
I just tested v0.5.0 and it works just fine. It also does not regress on any of the libvpx test files. Thank you for the fix.