don't suppress exception on aexit

With #216 the "early out on disconnected" code was move from the function __aexit__ to disconnect. The disconnect function is called inside a try/except block in the function __aexit__, which suppresses the disconnected exception. This results in that the context manager exits without exception also when there was a disconnect-exception.
Example:

start mqtt broker
run a similar code:

async with Client("localhost") as client:
    async with client.messages() as messages:
        await client.subscribe("humidity/#")
        async for message in messages:
            print(message.payload)

shutdown broker

expection: I get some sort of exception
actual: no exception, only a log entry.
This bug was found on the upgrade from 0.16.1 to 1.0.0. Afterwards the following test was failing https://github.com/DeebotUniverse/client.py/blob/3d7467e3dcf338e9d848dd5fb3ad32a5ee7fab8e/tests/test_mqtt_client.py#L76C1-L76C1
The test test the described example above.

For tests I would wait until https://github.com/guillotinaweb/pytest-docker-fixtures/pull/33 is merged, than we have a moquitto docker container for tests. This would also fix #224
Are you fine to merge it without tests? So I can upgrade my lib to the new version and get rid of the log message about the rename

Hi Robert, I'll ping @frederikaalund here; Maybe this got lost 😉
As a quick fix to getting rid of the log message about the rename you could restrict the version of asyncio-mqtt to <= 0.16.1. Version 0.16.1 is exactly the same as 0.16.2 apart from the log message.

Thanks for the ping, @empicano. Been a busy week at work due to technical issues. :)
In any case, this PR now looks good to me. :+1: Sorry about the delay in my response.

For tests I would wait until https://github.com/guillotinaweb/pytest-docker-fixtures/pull/33 is merged, than we have a moquitto docker container for tests. This would also fix https://github.com/sbtinstruments/aiomqtt/issues/224
Are you fine to merge it without tests? So I can upgrade my lib to the new version and get rid of the log message about the rename

Yes, that's completely fine with me.
Thank you for your contribution to aiomqtt.


DesktopDemo does not work in android

System information
OS Platform and Distribution (e.g., Linux Ubuntu 20.04): Windows 10
Target Platform: Android ARM64
Mobile Device (if the target is Android or iOS): HONOR 9X
MediaPipeUnityPlugin version or commit id:
Bazel version:
GCC/G++ version:
Android NDK version (if the target platform is Android):  ndk-r19
Describe the current behavior
hello.
I have built package for android arm64 successfully with docker. and now i have a mediapipe_android.aar file in Packages\com.github.homuler.mediapipe\Runtime\Plugins\Android . but when I build DesktopDemo for android and run it on my phone nothing shows up on the screen. it detects my cameras in the drop down list and even when i select the front camera, it pups up (it's a pupup camera) but nothing shows up on the screen.
Steps to reproduce the issue
I connected my device via usb cable to the computer and select build and run. i added the logs from my device below.
Full logs
System memory in use before: 115.7 MB.
System memory in use after: 115.2 MB.

Unloading 224 unused Assets to reduce memory usage. Loaded Objects now: 3386.
Total: 454.095900 ms (FindLiveObjects: 0.390900 ms CreateObjectMapping: 0.113000 ms MarkObjects: 452.877200 ms  DeleteObjects: 0.711900 ms)

DisplayProgressNotification: Build Successful
Unloading 67 Unused Serialized files (Serialized files now loaded: 0)
Loaded scene 'Temp/__Backupscenes/0.backup'
	Deserialize:            15.297 ms
	Integration:            128.097 ms
	Integration of assets:  3.833 ms
	Thread Wait Time:       24.482 ms
	Total Operation Time:   171.709 ms
System memory in use before: 113.3 MB.
System memory in use after: 113.6 MB.

Unloading 0 unused Assets to reduce memory usage. Loaded Objects now: 3660.
Total: 451.681100 ms (FindLiveObjects: 0.372900 ms CreateObjectMapping: 0.147600 ms MarkObjects: 451.141000 ms  DeleteObjects: 0.017600 ms)

Build completed with a result of 'Succeeded' in 122 seconds (121502 ms)
UnityEngine.StackTraceUtility:ExtractStackTrace ()
UnityEngine.DebugLogHandler:LogFormat (UnityEngine.LogType,UnityEngine.Object,string,object[])
UnityEngine.Logger:Log (UnityEngine.LogType,object)
UnityEngine.Debug:Log (object)
UnityEditor.BuildPlayerWindow/DefaultBuildMethods:BuildPlayer (UnityEditor.BuildPlayerOptions)
UnityEditorStartup/<>c:<.cctor>b__0_0 (UnityEditor.BuildPlayerOptions) (at Assets/Mediapipe/Editor/BuildProcessor.cs:9)
UnityEditor.BuildPlayerWindow:CallBuildMethods (bool,UnityEditor.BuildOptions)
UnityEditor.BuildPlayerWindow:BuildPlayerAndRun (bool)
UnityEditor.BuildPlayerWindow:BuildPlayerAndRun ()

(Filename: Assets/Mediapipe/Editor/BuildProcessor.cs Line: 9)

Autoconnected Player Loading player data from assets/bin/Data/data.unity3d

Autoconnected Player PlayerInitEngineNoGraphics OK

Autoconnected Player AndroidGraphics::Startup window =  0x77f3362010

Autoconnected Player [EGL] Attaching window :0x77f3362010

Autoconnected Player [EGL] Request: ES 3.2 RGB0 000 0/0

Autoconnected Player [EGL] Checking ES 3.2 support...

Autoconnected Player [EGL] ES 3.2 support detected

Autoconnected Player [EGL] Found: ID[5] ES 3.2 RGB16 565 0/0

Autoconnected Player GfxDevice: creating device client; threaded=1

Autoconnected Player [EGL] Request: ES 3.2 RGB0 000 0/0

Autoconnected Player [EGL] Found: ID[5] ES 3.2 RGB16 565 0/0

Autoconnected Player [EGL] Request: ES 3.0 RGBA32 8888 0/0

Autoconnected Player [EGL] Found: ID[1] ES 3.0 RGBA32 8888 0/0

Autoconnected Player ANativeWindow: (1080/2340) RequestedResolution: (0/0) RenderingResolution: (0/0) EGLSurface: (1080/2340)

Autoconnected Player Renderer: Mali-G51

Autoconnected Player Vendor:   ARM

Autoconnected Player Version:  OpenGL ES 3.2 v1.r18p0-01rel0.45b959fde16a8b02f26811a2873c604f

Autoconnected Player GLES:     3

Autoconnected Player OPENGL LOG: Creating OpenGL ES 3.2 graphics device ; Context level  <OpenGL ES 3.2> ; Context handle 17920896

Autoconnected Player [EGL] Attaching window :0x77f3362010

Autoconnected Player Requested framebuffer: resolution[1080x2340], rgba[8/8/8/8], depth+stencil[on], samples[1]

Autoconnected Player Created framebuffer: resolution[1080x2340], rgba[8/8/8/8], depth+stencil[24/8], samples[0]

Autoconnected Player [EGL] Attaching window :0x77f3362010

Autoconnected Player Initialize engine version: 2020.2.5f1 (e2c53f129de5)

Autoconnected Player PlayerInitEngineGraphics OK

Autoconnected Player Found 17 native sensors

Autoconnected Player Sensor :        Accelerometer ( 1) ; 0.000010 / 0.00s ; accelerometer-bmi160 / BOSCH

Autoconnected Player Sensor :        Accelerometer ( 1) ; 0.000010 / 0.00s ; accelerometer-bmi160 / BOSCH

Autoconnected Player SetWindow 0 0x77f3362010

Autoconnected Player [EGL] Attaching window :0x77f3362010

[00:00:00] Enlighten: Finished 1 Bake Ambient Probe job (0.00s execute, 0.00s integrate, 0.06s wallclock)
Autoconnected Player UnloadTime: 2.681771 ms

Autoconnected Player Sensor :        Accelerometer ( 1) ; 0.000010 / 0.00s ; accelerometer-bmi160 / BOSCH

Autoconnected Player Choreographer available: Enabling VSYNC timing

Autoconnected Player Graph Changed: Face Detection
GraphSelectorController:OnValueChanged(Dropdown)

Autoconnected Player Sensor :        Accelerometer ( 1) ; 0.000010 / 0.00s ; accelerometer-bmi160 / BOSCH

Autoconnected Player Sensor :        Accelerometer ( 1) ; 0.000010 / 0.00s ; accelerometer-bmi160 / BOSCH

Autoconnected Player Choreographer available: Enabling VSYNC timing

Autoconnected Player WebCamDevice Changed: Camera 0
WebCamDeviceSelectorController:OnValueChanged(Dropdown)
<Start>d__2:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player WebCamTexture Graphics Format: 88
<ResetScreen>d__16:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
SceneDirector:ResetCamera(Nullable`1)
SceneDirector:ChangeWebCamDevice(Nullable`1)
WebCamDeviceSelectorController:OnValueChanged(Dropdown)
<Start>d__2:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player face_detection_front is saved to /storage/emulated/0/Android/data/com.dc.pr/files/Cache/face_detection_front.bytes (length=229032)
Mediapipe.AssetBundleManager:WriteCacheFile(TextAsset, String, Boolean)
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player Loaded dependent assets
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player MediaPipeException: MediaPipe Aborted, refer glog files for more details
  at Mediapipe.MpReturnCodeExtension.Assert (Mediapipe.MpReturnCode code) [0x00000] in <00000000000000000000000000000000>:0
  at Mediapipe.CalculatorGraph..ctor (System.String textFormatConfig) [0x00000] in <00000000000000000000000000000000>:0
  at DemoGraph.Initialize () [0x00000] in <00000000000000000000000000000000>:0
  at SceneDirector+<RunGraph>d__24.MoveNext () [0x00000] in <00000000000000000000000000000000>:0
  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0

Unloading 35 Unused Serialized files (Serialized files now loaded: 0)
System memory in use before: 163.2 MB.
System memory in use after: 163.8 MB.

Unloading 0 unused Assets to reduce memory usage. Loaded Objects now: 3687.
Total: 461.667100 ms (FindLiveObjects: 0.459500 ms CreateObjectMapping: 0.129100 ms MarkObjects: 461.050900 ms  DeleteObjects: 0.024500 ms)

Autoconnected Player Graph Changed: Iris Tracking
GraphSelectorController:OnValueChanged(Dropdown)
UnityEngine.Events.UnityAction`1:Invoke(T0)
UnityEngine.Events.UnityEvent`1:Invoke(T0)
UnityEngine.UI.Dropdown:OnSelectItem(Toggle)
UnityEngine.Events.UnityAction`1:Invoke(T0)
UnityEngine.Events.UnityEvent`1:Invoke(T0)
UnityEngine.EventSystems.EventFunction`1:Invoke(T1, BaseEventData)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()

Autoconnected Player /storage/emulated/0/Android/data/com.dc.pr/files/Cache/face_detection_front.bytes already exists
IrisTrackingGraph:PrepareDependentAssets()
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player face_landmark is saved to /storage/emulated/0/Android/data/com.dc.pr/files/Cache/face_landmark.bytes (length=2439276)
Mediapipe.AssetBundleManager:WriteCacheFile(TextAsset, String, Boolean)
IrisTrackingGraph:PrepareDependentAssets()
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player iris_landmark is saved to /storage/emulated/0/Android/data/com.dc.pr/files/Cache/iris_landmark.bytes (length=2640568)
Mediapipe.AssetBundleManager:WriteCacheFile(TextAsset, String, Boolean)
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player Loaded dependent assets
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player MediaPipeException: MediaPipe Aborted, refer glog files for more details
  at Mediapipe.MpReturnCodeExtension.Assert (Mediapipe.MpReturnCode code) [0x00000] in <00000000000000000000000000000000>:0
  at Mediapipe.CalculatorGraph..ctor (System.String textFormatConfig) [0x00000] in <00000000000000000000000000000000>:0
  at DemoGraph.Initialize () [0x00000] in <00000000000000000000000000000000>:0
  at SceneDirector+<RunGraph>d__24.MoveNext () [0x00000] in <00000000000000000000000000000000>:0
  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0

Autoconnected Player Graph Changed: Face Mesh
GraphSelectorController:OnValueChanged(Dropdown)
UnityEngine.Events.UnityAction`1:Invoke(T0)
UnityEngine.Events.UnityEvent`1:Invoke(T0)
UnityEngine.UI.Dropdown:OnSelectItem(Toggle)
UnityEngine.Events.UnityAction`1:Invoke(T0)
UnityEngine.Events.UnityEvent`1:Invoke(T0)
UnityEngine.EventSystems.EventFunction`1:Invoke(T1, BaseEventData)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
UnityEngine.EventSystems.StandaloneInputModule:Process()

Autoconnected Player /storage/emulated/0/Android/data/com.dc.pr/files/Cache/face_detection_front.bytes already exists
FaceMeshGraph:PrepareDependentAssets()
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player /storage/emulated/0/Android/data/com.dc.pr/files/Cache/face_landmark.bytes already exists
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player Loaded dependent assets
DemoGraph:Initialize()
<RunGraph>d__24:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

Autoconnected Player MediaPipeException: MediaPipe Aborted, refer glog files for more details
  at Mediapipe.MpReturnCodeExtension.Assert (Mediapipe.MpReturnCode code) [0x00000] in <00000000000000000000000000000000>:0
  at Mediapipe.CalculatorGraph..ctor (System.String textFormatConfig) [0x00000] in <00000000000000000000000000000000>:0
  at DemoGraph.Initialize () [0x00000] in <00000000000000000000000000000000>:0
  at SceneDirector+<RunGraph>d__24.MoveNext () [0x00000] in <00000000000000000000000000000000>:0
  at UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) [0x00000] in <00000000000000000000000000000000>:0

Additional context
every time that I changed the camera from dropdown list it gave me this error .
'''MediaPipeException: MediaPipe Aborted, refer glog files for more details'''
but when I change the graph there was no error.
I also built the DesktopDemo without the the mediapipe_android.aar package to see if the logs change.
and they did. it gave me this error as soon as i started the application.
Unable to load DLL 'mediapipe_jni': The specified module could not be found.
sorry for poor language

i success build android but run android apk
using adb get android log
06-26 14:46:35.793 E/Unity   (29706): DllNotFoundException: mediapipe_jni
06-26 14:46:35.793 E/Unity   (29706):   at (wrapper managed-to-native) Mediapipe.SafeNativeMethods.mp__SetCustomGlobalPathResolver__P(Mediapipe.ResourceManager/PathResolver)
06-26 14:46:35.793 E/Unity   (29706):   at Mediapipe.ResourceManager..ctor () [0x0000c] in <06c70f6e5e524f8b98615dfc8fcbf151>:0
06-26 14:46:35.793 E/Unity   (29706):   at Mediapipe.AssetBundleManager..ctor () [0x00000] in <06c70f6e5e524f8b98615dfc8fcbf151>:0
06-26 14:46:35.793 E/Unity   (29706):   at AssetBundleLoader.Start () [0x00000] in <b0729000190847c88c667d6811a1f8c7>:0

well, fortunately, I succeeded in running DesktopDemo on android. the problem was useGPU. it wasn't selected at first but when I selected it there was no error.  apparently, you can't run DesktopDemo without useGPU selected on android.

i success build android but run android apk
using adb get android log
06-26 14:46:35.793 E/Unity   (29706): DllNotFoundException: mediapipe_jni
06-26 14:46:35.793 E/Unity   (29706):   at (wrapper managed-to-native) Mediapipe.SafeNativeMethods.mp__SetCustomGlobalPathResolver__P(Mediapipe.ResourceManager/PathResolver)
06-26 14:46:35.793 E/Unity   (29706):   at Mediapipe.ResourceManager..ctor () [0x0000c] in <06c70f6e5e524f8b98615dfc8fcbf151>:0
06-26 14:46:35.793 E/Unity   (29706):   at Mediapipe.AssetBundleManager..ctor () [0x00000] in <06c70f6e5e524f8b98615dfc8fcbf151>:0
06-26 14:46:35.793 E/Unity   (29706):   at AssetBundleLoader.Start () [0x00000] in <b0729000190847c88c667d6811a1f8c7>:0

I had this problem too. but I was using an older version of MediaPipeUnityPlugin. there was a compiler error at SceneDirector.cs that GetCurrentContext is not defined. so I commented this section.
    if (IsGpuEnabled()) {
      PluginCallback callback = GetCurrentContext;

      var fp = Marshal.GetFunctionPointerForDelegate(callback);
      GL.IssuePluginEvent(fp, 1);
    }
#endif

in the new version GetCurrentContext its replaced with UNITY_ANDROID && !UNITY_EDITOR_OSX && !UNITY_EDITOR_WIN
either way, the section does not run on windows. I don't know if it has anything to do with the problem but when I used the latest version and enabled useGPG, it worked for me.
the only thing that's bothering me now is when I start the app on phone it takes about 10 seconds to start running. and it's a little slower than pc.


Support Docusaurus (v2)

Summary
Support TinaCMS usage with Docusaurus
Basic example
Supporting the most basic Docusaurus site
npx @docusaurus/init@next init my-website classic

...add Tina
Motivation
Docusaurus is growing in popularity as a solution for docs. It would be wonderful to support it as well!
P.S. - I would be interested in contributing to help make this happen!

I'm going to close this issue because the maintainers don't have this planned for the foreseeable future. We can revisit this issue if anyone has interest in moving it along.

Would love to see this support added!

Is Docusaurus support coming anytime soon?


Date step 100 years makes steps of... 10 years

Bug description
When selecting time steps of 100 years (in the date selector), it makes steps of 10 years and not 100 years.
The animation of rendering the map should make steps of 100 years according to the user selection.
Repro Steps
Select "100 years" in the selector.
Launch the animation
Check the current date : it make : 1000, 1009, 1019, 1029, ... etc
Additionnal request :
Steps of 10 years should not make steps of 9,9 years. The date should show 01/01/1000, then 01/01/1010, and not 31/12/1009. There should be there an issue with the computation of date+interval that does not round correctly. Perhaps modifying the year with +100 instead of adding days (or seconds) in the script should help.
Same remark for steps of 100 years should not make steps of 99,9 years.
**Screenshots & URL

**

I think this has to do with the "Set" or "Definir" button on the form. It looks like that was not pressed before you hit the forward/back button. I can tell because it turns white instead of blue once the form has been submitted.
Here's a screencast showing the 100 year interval working as expected:
https://recordit.co/xC4FOFFK7d


Warning for using include or require

Issue #66
Check if include(_once) or require(_once) is used, and issue a warning to see if get_template_part() or locate_template() is more appropriate.

please close this as I sent to the wrong place :)

You can close it yourself ;)

closing pull request


Different result sets depending on no index, index and arrayindex

OS: Linux Arch x86_64
ArangoDB: 2.8.0-beta2
Description
I noticed some IMO weird behaviour when playing around with array indices.
First of all AQL does not return what I actually expect it to, coming from other database systems :)
Secondly, queries 3 & 5 (see below) return different result sets depending on what indices is in the collection. Is this a bug?
Test
Full test script can be found here
db._create('test');
db.test.save({ _key: "1", value: "foo" });
db.test.save({ _key: "2", value: [ "foo", "bar" ] });

Notice that the expected result is what I personally would expect.

Result
Testing without indices;

FOR t IN test RETURN t._key

PASSED -- expect: 1,2 actual: 1,2

FOR t in test FILTER t.value IN [ "foo" ] RETURN t._key

FAILED -- expect: 1,2 actual: 1

FOR t in test FILTER "foo" IN t.value RETURN t._key

FAILED -- expect: 1,2 actual: 2

FOR t in test FILTER t.value[*] IN [ "foo" ] RETURN t._key

FAILED -- expect: 1,2 actual:

FOR t in test FILTER "foo" IN t.value[*] RETURN t._key

PASSED -- expect: 1,2 actual: 1,2

Testing with index; value

FOR t IN test RETURN t._key

PASSED -- expect: 1,2 actual: 1,2

FOR t in test FILTER t.value IN [ "foo" ] RETURN t._key

FAILED -- expect: 1,2 actual: 1

FOR t in test FILTER "foo" IN t.value RETURN t._key

FAILED -- expect: 1,2 actual:

FOR t in test FILTER t.value[*] IN [ "foo" ] RETURN t._key

FAILED -- expect: 1,2 actual:

FOR t in test FILTER "foo" IN t.value[*] RETURN t._key

PASSED -- expect: 1,2 actual: 1,2

Testing with index; value value[*]

FOR t IN test RETURN t._key

PASSED -- expect: 1,2 actual: 1,2

FOR t in test FILTER t.value IN [ "foo" ] RETURN t._key

FAILED -- expect: 1,2 actual: 1

FOR t in test FILTER "foo" IN t.value RETURN t._key

FAILED -- expect: 1,2 actual:

FOR t in test FILTER t.value[*] IN [ "foo" ] RETURN t._key

FAILED -- expect: 1,2 actual:

FOR t in test FILTER "foo" IN t.value[*] RETURN t._key

FAILED -- expect: 1,2 actual: 2

Without indexes
2: Your query is wrong if you want to check if "foo" is in t.value. What it does is search for documents whose t.value attribute is contained in ["foo"] and ["foo", "bar"] is not. Document 2 would match if you queried FOR t IN test FILTER t.value IN [["foo", "bar"]], but you would probably rather write it as t.value == ["foo", "bar"].
3: Your query checks if "foo" is contained in t.value, and for document 2 it is true (it is actually an array with a string element "foo"). Document 1 does not match, because t.value is not an array. It would match if you stored it like value: ["foo"]. In Python, it would result in the following pseudo-condition for document 1: "foo" IN ["f", "o", "o"]. In AQL however, there is no iteration over the string. Thus, even "f" IN t.value won't match. You achieve the desired result, ensure that t.value is an array: FOR t IN test FILTER "foo" IN TO_ARRAY(t.value) RETURN t._key.
4: t.value[*] is ["foo"] for doc 1 and ["foo", "bar"] for doc 2. The latter is not contained in ["foo"], see my number 2 above.
5: Because [*] turns "foo" into ["foo"] in case of document 1, the query actually works - and it's an alternative to my suggestion in 3 (TO_ARRAY).
With indexes
Quite interesting that query 3 returns a different result if there are indexes. I think I have a rough idea how this happens, but either the regular index or the array index should make it return the correct result still...
Query 5 with an array index might fail, because t.value[*] doesn't cast t.value to an array, because [*] has a different meaning/purpose in presence of an array index. Maybe it's a bad idea to rely on the casting behavior and use an explicit cast TO_ARRAY() instead as mentioned earlier. But then the array index might not be (fully?) utilized. Your best option is to change your data model, so the value attribute is always an array: value: ["foo"]. The array index will then include it and can be used to speed up the query.

Thank you for a good response @CoDEmanX!
In regards to the different result sets, depending on index, I think an index purpose is only to speed things up and should never ever change the way the result is returned. In a perfect system (where indices are still needed) the indices are created automagically when the system itself has concluded that one is needed, depending on various thing. Would you not agree?
I thought the arrayindex would be able to enable and speed up queries where i.e. you want to return documents where tags CONTAINS SOME value(s) from another array.
After running some more tests, with an array only data model, it seems the arrayindex is only used in FILTER "foo" IN tags. Using TO_ARRAY, INTERSECTION or LET <sub-query> works for some scenarios but the arrayindex is not used so that does not help speed things up.
Maybe we need SOME more AQL functions for these kind of things?

I agree that the DBMS shouldn't let you run into situations easily, in which an index makes the result set incomplete. I do understand the technical reasons, why this can happen, but I'm not particularly happy about it.
AFAIK array indexes are meant to find one element in the bowl of all individually indexed array elements (or rather the containing documents), e.g. "foo" in an attribute value, which must be an array with zero, one or multiple elements. In which position an array element "foo" occurs in the documents doesn't matter.
Without array index, every value needs to be checked (individual comparison of the array elements), whereas Arango can figure out the right documents by only looking at the index if there is one for arrays. Everything that isn't added to the index (non-array elements) cannot be found if the index is used.
Related:
http://stackoverflow.com/a/27938317/2044940 (see my comment)
https://github.com/arangodb/arangodb/issues/1502
I think there is one more discussion around how to check if (at least) the elements of array A are also in array B.

I agree that the existence or non-existence of an index should not change the result set returned by the server (that is, apart from result set order if a query does not specify the SORT explicitly).
Regarding the queries, I think @CoDEmanX has answered it already, but I repeat what the expected behavior is (expected from the viewpoint of how the operators work in AQL):

FOR t in test FILTER t.value IN [ "foo" ] RETURN t._key: this should only return the document with _key 1, as "foo" IN [ "foo" ] is true, but [ "foo", "bar" ] IN [ "foo" ] is not.
FOR t in test FILTER "foo" IN t.value RETURN t._key: this should return the document with key 2, as "foo" IN "foo" is false, but "foo" IN [ "foo", "bar" ] is true.
FOR t in test FILTER t.value[*] IN [ "foo" ] RETURN t._key: this should return no documents, as "foo"[*] IN [ "foo" ] is false, and [ "foo", "bar" ][*] IN [ "foo" ] is also false.
FOR t in test FILTER "foo" IN t.value[*] RETURN t._key: this should return just document with _key 2, as "foo" IN "foo"[*] is false, but "foo" IN [ "foo", "bar" ][*] is true.

The are a few things here that were probably confusing here are:

we spotted an inconsistent behavior for the [*] operator between using it in indexes and elsewhere in AQL. For example, "foo"[*] produced [ "foo" ] when not used in conjunction with an index, but when using it for an index definition it produced an empty array ([ ]) and thus no index entries. That behavior was unified in latest 2.8 so it's consistent: using the [*] operator on a non-array value will now always produce an empty array, and not automagically convert the value to an array. That inconsistency was also the reason for why queries returned different values depending on whether indexes were defined or not. This should be fixed in latest 2.8 and devel.

IN in ArangoDB compares the left-hand operand against each member of the right-hand array operand. It requires its right-hand operand to be an array. If the right-hand operand is a non-array, then the result of IN is always false. This is the case e.g. for "foo" IN "foo" (= false), which only works when written as "foo" IN [ "foo" ]. Vice versa, [ "foo" ] IN [ "foo" ] is also false, because the left-hand value [ "foo" ] is not a member of the right-hand array (it equals the right-hand value, but the IN operator` compares the left-hand value to each member of the right-hand value).

it may be different elsewhere (e.g. MongoDB), where searching for { value: "foo" } will find both { value: "foo" } and { value: [ "foo", "bar" ] }.

Because the array index relies on [*], it will only include values from an array attribute value, and will not index other values (e.g. simple string values such as "foo".
An array index will not be used for filter conditions such as FILTER doc.value == @value or FILTER doc.value IN @value. The only filter variant that can make use of the array index is FILTER @value IN doc.value.
For non-array hash and skiplist indexes, the triggering variants are still FILTER @value IN doc.value and FILTER @value operator doc.value AND FILTER doc.value operator @value.
I think the behavior of the operators is now consistent, so that queries return the same values regardless of (array) indexes are present or not.
What would be helpful in order to support more queries and use cases are probably some operators that compare the values of two arrays, e.g.

[ "foo", "bar" ] ANY IN [ "foo", "baz" ]: could compare all elements from the left-hand array against all elements from the right-hand array and returns true if there's at least one match, false otherwise. That's the same as the CONTAINS operator mentioned above by @defvoid. We probably cannot name an operator CONTAINS because there is already an AQL function of the same name, but the idea is the same.
[ "foo", "bar" ] ALL IN [ "foo", "baz" ]: could compare all elements from the left-hand array against all elements from the right-hand array and returns true if there's at least one match, false otherwise.

And maybe the optimizer could make use of array indexes in more cases than it does now.
Any suggestions for that and the operators are highly welcome!

The operators ANYand ALL would be great, although I think you mean ALL would return true if all elements in the left-hand array exists in the right-hand array(?).
How about checking if none in the left-hand array is in the right-hand array?

<array> [NOT] ANY|ALL IN <array>
<array> ANY|ALL [NOT] IN <array>
[NOT] <array> ANY|ALL IN <array>
ANY|ALL <array> [NOT] IN <array>
<array> ANY|ALL|NONE IN <array>

I think number four is the most appealing when I look at it.

@defvoid : you're right, I made a mistake in my explanation of ALL and your correction of it is what I had intended to write.
A quick test with the grammar reveals that variants 1, 2, 3, and 5 do work parser-wise. For variant 5 there would need to be an extra NONE keyword of course.
Variant 4 is causing reduce-reduce conflicts, so it would need refactoring of the grammar.

Cool! I figured 4 would involve more work (since I liked that one, haha). Runner ups are 2 and 5, IMO.
Which one do you guys (users of ArangoDB) prefer?

Theme drift. Since the bug is fixed meanwhile, relabeling.

NONE IN is actually equivalent to NOT ANY IN / ANY NOT IN, but by far more natural and understandable. The inversion of ANY IN is a bit of a brain twister. A Borat-style variant would be funny though: <array> ANY IN <array> ... NOT!. Slightly better, but still worse than NONE IN: <array> ANY NOT IN <array>.
NOT ALL IN is a bit tricky: "not all in" might be misread as "one or more in" (=ANY IN), which is contrary to a logical negation of all in. It needs to be read as not(all in) (one or more in, but not all). Another potential fallacy is to think that NOT ALL IN would be equal to NONE IN, because all and none are antonyms:

[1,2,3] ... IN
[1,2,3]
[2,4]
[5]
Comment

ALL
true
false
false

NOT ALL
false
true
true

NONE
false
false
true
behavior different compared to NOT ALL

NOT ANY
false
false
true
same as NONE

ANY
true
true
false

NOT NONE
true
true
false
same as ANY

Conclusion: the negations NOT ANY IN and NOT NONE IN are hard to understand and redundant, and don't really need to be supported. On the other hand, there's no alternative to NOT ALL IN behavior-wise, and thus this negation needs to be supported.
So there are 4 possible operations, to test if...

all of the elements in array A are included in array B (array B may contain more elements though)
any of the elements (one or more) in array A are included in array B
none of the elements in array A is contained in array B
array B does not contain all elements, that array A has (NOT ALL IN; array B may optionally contain more elements though)

Another possible operation a user might want perform is to test if array B has all elements array A has, but not any others. Examples:
[1,2,3] -> [1,2,3] = true
[1,2,3] -> [1,2,3,4] = false
[1,2,3] -> [1,2,4] = false
[1,2,3,1] -> [1,2,1,2,3] = true

This can be achieved by <arrayA> ALL IN <arrayB> AND <arrayB> ALL IN <arrayB>. A shorthand ONLY IN could be introduced: <arrayA> ONLY IN <arrayB>. It may not be a common use case however. Even lesser NOT ONLY IN to check if array B contains all elements of array A and at least one additional element.
Yet another operation I can think of: "n out of m", for example [1,2,3] 2 IN [1,2,4,5] == true (two out of three elements of array A are included in array B). Because array A and B may have a varying numbers of elements, support for relative amounts could be useful: [1,2,3,4] 75% IN [...] (here: at least 3 elements of array A must be contained in array B). If one additionally introduced weighting for the array elements, we would enter the field of fuzzy sets and sophisticated information retrieval. But I guess such scoring is beyond the scope of (vanilla) AQL.

Array operators landed in devel:

added AQL array comparison operators
All AQL comparison operators now lso exist in an array variant. In the
array variant, the operator is prefixed with one of the keywords ALL, ANY
or NONE. Using one of these keywords changes the operator behavior to
execute the comparison operation for all, any, or none of its left hand
argument values. It is therefore expected that the left hand argument
of an array operator is an array.
Examples:
[ 1, 2, 3 ] ANY IN [ 4, 5, 6 ]   // false
[ 1, 2, 3 ] ANY IN [ 1, 42 ]     // true
[ 1, 2, 3 ] ALL IN [ 2, 3, 4 ]   // false
[ 1, 2, 3 ] ALL IN [ 1, 2, 3 ]   // true
[ 1, 2, 3 ] NONE IN [ 3 ]        // false
[ 1, 2, 3 ] NONE IN [ 23, 42 ]   // true
[ 1, 2, 3 ] ANY == 2             // true
[ 1, 2, 3 ] ANY == 4             // false
[ 1, 2, 3 ] ANY > 0              // true
[ 1, 2, 3 ] ANY <= 1             // true
[ 1, 2, 3 ] ALL > 2              // false
[ 1, 2, 3 ] ALL > 0              // true
[ 1, 2, 3 ] ALL >= 3             // false
[ 1, 2, 3 ] NONE < 99            // false
[ 1, 2, 3 ] NONE > 10            // true
["foo", "bar"] ALL != "moo"      // true
["foo", "bar"] NONE == "bar"     // false

As you can see, it's not only possible to compare two arrays, but also to compare the elements of an array to a single string, number etc.
Negations a la NOT ALL IN are not supported. Something like NOT([1,2,3] ALL IN [...]) does work however. If you leave out the parens, NOT negates [1,2,3] (!true, so false) and filters out all documents, giving you an empty result - probably not what you want. So keep that in mind.


Status not available in client mode

When ghostunnel is started in client mode, with following parameters:
ghostunnel client --listen localhost:8080 --target localhost:8443 --disable-authentication --status=localhost:8000

The expected status endpoint is not available it seems.
ghostunnel logs (with small debug message added to make sure client cert auth is disabled):
[602066] 2019/10/18 08:39:36.410078 starting ghostunnel in client mode
[602066] 2019/10/18 08:39:36.473869 using target address localhost:8443
[602066] 2019/10/18 08:39:36.474298 network not unix and can serve
ClientAuth is: '0'
[602066] 2019/10/18 08:39:36.474319 listening for connections on localhost:8080
[602066] 2019/10/18 08:41:11.982907 http: TLS handshake error from <IP_ADDRESS>:41186: tls: certificate private key (<nil>) does not implement crypto.Signer

Curl logs:
$ curl -v -s -k https://localhost:8000/_status
*   Trying ::1:8000...
* TCP_NODELAY set
* connect to ::1 port 8000 failed: Connection refused
*   Trying <IP_ADDRESS>:8000...
* TCP_NODELAY set
* Connected to localhost (<IP_ADDRESS>) port 8000 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS alert, internal error (592):
* error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error
* Closing connection 0

Or am I doing something wrong here?
I also checked if it has something to do with target server, but ghostunnel is not even attempting to connect to it while requesting status.

Looks like when trying with TLS1.2, error message is slightly different:
[604451] 2019/10/18 11:06:00.933898 http: TLS handshake error from <IP_ADDRESS>:42148: tls: no cipher suite supported by both client and server

$ curl -v -s -k https://<IP_ADDRESS>:8000 --tls-max 1.2
*   Trying <IP_ADDRESS>:8000...
* TCP_NODELAY set
* Connected to <IP_ADDRESS> (<IP_ADDRESS>) port 8000 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS alert, handshake failure (552):
* error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
* Closing connection 0

$ curl --version
curl 7.66.0 (x86_64-pc-linux-gnu) libcurl/7.66.0 OpenSSL/1.1.1d zlib/1.2.11 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh2/1.8.2 nghttp2/1.39.2
Release-Date: 2019-09-11
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets

$ ./ghostunnel --version
rev master built with go1.13.1

Yep, that's a bug! Can you try this fix? https://github.com/square/ghostunnel/pull/269

Hey @csstaub, thans for quick response. On latest master (19170c27911d1a417b70d2ca99d03d5b54f94816), the issue still persists, but now the error message is different:
$ curl -v -s -k https://localhost:8000/_status/prometheus --tls-max 1.2
*   Trying ::1:8000...
* TCP_NODELAY set
* connect to ::1 port 8000 failed: Connection refused
*   Trying <IP_ADDRESS>:8000...
* TCP_NODELAY set
* Connected to localhost (<IP_ADDRESS>) port 8000 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
* Closing connection 0

$ curl -v -s -k https://localhost:8000/_status
*   Trying ::1:8000...
* TCP_NODELAY set
* connect to ::1 port 8000 failed: Connection refused
*   Trying <IP_ADDRESS>:8000...
* TCP_NODELAY set
* Connected to localhost (<IP_ADDRESS>) port 8000 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
* Closing connection 0

And now ghostunnel is not logging anything.

You need to use HTTP (not HTTPS), since you're running it in client mode without a certificate (--disable-authentication) it can't serve HTTPS traffic.

You need to use HTTP (not HTTPS), since you're running it in client mode without a certificate (--disable-authentication) it can't serve HTTPS traffic.

Oops, I could've check that :smile:
It indeed works now over HTTP, thanks for fixing it! Closing.

@csstaub could we have a release with this fixed?

Yes, I want to bump some deps (pull in fixes in letsencrypt/pkcs11key v4) and then we can release a new build on Go 1.13 with TLS 1.3 enabled as well.

This is in release v1.5.2


[cpuinfo] Fix cpuid-dump is not generated with x86-windows

Describe the pull request

What does your PR fix?
Fixes https://github.com/microsoft/vcpkg/issues/24713

Modify portfile.cmake to pass the correct values.
Add a condition to make the option to use the value passed by portfile.cmake under windows.

Can you explain what this patch does? Has upstream been notified?
(Normally I wouldn't have questions like that about what look like relatively simple build system changes, but this port is literally cpuinfo so it likely cares a lot about the specific CPU it wants to target)

I added this patch to make following part set in portfile.cmake take effect in cmakelist.txt of source:
set(CPUINFO_TARGET_PROCESSOR_param "")
if(VCPKG_TARGET_IS_WINDOWS)
    # NOTE: arm64-windows is unsupported for now;
    # see https://github.com/pytorch/cpuinfo/pull/82 for updates
    # NOTE: arm-windows is unsupported
    if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
        set(CPUINFO_TARGET_PROCESSOR_param "-DCPUINFO_TARGET_PROCESSOR=i386")
    elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
        set(CPUINFO_TARGET_PROCESSOR_param "-DCPUINFO_TARGET_PROCESSOR=AMD64")
    elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
        set(CPUINFO_TARGET_PROCESSOR_param "-DCPUINFO_TARGET_PROCESSOR=ARM")
    elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
        set(CPUINFO_TARGET_PROCESSOR_param "-DCPUINFO_TARGET_PROCESSOR=ARM64")
    endif()
endif()

If the target is windows, CPUINFO_TARGET_PROCESSOR_param will be passed as an option to CMakeLists.txt of source by vcpkg_cmake_configure(), this option sets different values for CPUINFO_TARGET_PROCESSOR under different architectures.
But CMakeLists.txt of source have following content:
SET(CPUINFO_TARGET_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
This causes the value of CPUINFO_TARGET_PROCESSOR always be ${CMAKE_SYSTEM_PROCESSOR} even if the target is window.
If cpuinfo install with x86-windows, the value of ${CMAKE_SYSTEM_PROCESSOR} will be x86, this leads to a false result in the following judgment in CMakeLists.txt of source:
  IF(CPUINFO_TARGET_PROCESSOR MATCHES "^(i[3-6]86|AMD64|x86_64)$")
    ADD_EXECUTABLE(cpuid-dump tools/cpuid-dump.c)
    CPUINFO_TARGET_ENABLE_C99(cpuid-dump)
    CPUINFO_TARGET_RUNTIME_LIBRARY(cpuid-dump)
    TARGET_INCLUDE_DIRECTORIES(cpuid-dump BEFORE PRIVATE src)
    TARGET_INCLUDE_DIRECTORIES(cpuid-dump BEFORE PRIVATE include)
    INSTALL(TARGETS cpuid-dump RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
  ENDIF()

This is also the reason why cpuid-dump is not generated under x86-windows.
To solve this problem, I originally planned two scenarios:

Modify the part of the copy tool in the portfile.cmake so that it does not copy cpuid-dump under x86.
Modify the value of CPUINFO_TARGET_PROCESSOR to i386 when triplet is x86-windows, and add judgment to make CPUINFO_TARGET_PROCESSOR use the value passed by vcpkg_cmake_configure instead of ${CMAKE_SYSTEM_PROCESSOR}.

Because there is no documentation that cpuid-dump is not available under x86, I used scheme 2.

@LilyWangLL My point about upstream needing to be involved stands. However, I did my own digging here and am proposing a competing resolution here, which upstream has already OK'd: https://github.com/microsoft/vcpkg/pull/25258

Dup to https://github.com/microsoft/vcpkg/pull/25258


Configmap and secrets

At first, great project you started! It looks very promissing in supporting us to deploy to kubernetes faster 💯
But right now, I struggle with a sidecar container which is mainly used for kerberos.
This container uses a keytab file which is stored as a secret. This is then mounted as a volume.
Same with some kerberos configurations which are coming from configmaps in kubernetes and then are mounted as a volume.
Are there any plans to support this cases within tye or should we stick/plan to the classic way of deploying to kubernetes.
Than that will mean, we can not use tye completely to build and deploy and we are better of with the classic way,
Altough I realy like the easy configuration and containerization of our projects. And the ability to build from a repo

Than that will mean, we can not use tye completely to build and deploy and we are better of with the classic way,

You should still be able to use tye to build and push docker images with tye. tye push would still be useful. However, you would need to modify your kubernetes manifests to set the right environment variables in these manifests.
We'll probably add a feature for secrets in the future though.

For my Blazor app, I store dynamic endpoints in appsettings.json and then do a ConfigMap to update those values dependant on the environment deployment.
For example,
kind: ConfigMap
metadata:
  name: websettings
apiVersion: v1
data:
  appsettings.json: |-
    {
        "API_ENDPOINT": "${API_ENDPOINT}",
        "FUNCTIONS_ENDPOINT": "${FUNCTIONS_ENDPOINT}"
    }

If Blazor doesn't support ConfigMap, then I will need to do a kubectl to apply these values.
This is part of Epic WRT Blazor support.
Related: #582
azsdke2e


h264enc and hevcenc: Modify IDR interval and key period parameters se…

…tting.
tests: Add "idrinterval" setting for encoder to indicate how many I frames between two IDRs.
tests: Change "keyperiod" option name to "intraperiod" to be consistent with its feature.

+1

merged as c9d7380f4a15f3419cedff92d2a96d2f7bf5333c

thanks xiaoxia


Corrected docs for asset helpers

[ci skip]
The instructions for using asset helpers were reversed, so the docs told you to replace the new expression ('image-url') with the old one ('url') instead of the other way around. I made the same correction in the Rails asset pipeline guide yesterday.

Closed this one because I forgot to use [ci skip] in the commit message, sorry!


Merge Topic Changes

resolves #___
Summary of proposed changes:

Merge Topic Changes to local master

No Longer require this changes


Replace deprecated Buffer constructor

new Buffer(...) is deprecated and unsafe. Could Buffer.from(...) be used in these places instead?

IMHO I think it sounds as a good idea. Can you make a PR?


What is the implementation logic of MATCH in sql

SELECT rowid, distance FROM vec_examples
WHERE sample_embedding MATCH '[0.890, 0.544, 0.825, 0.961, 0.358, 0.0196, 0.521, 0.175]'
order by distance
limit 2;

Hello, What does the SQL statement MATCH do in the above example. Where does distance come from, Does it calculate the Euclidean distance?

SELECT rowid, distance FROM vec_examples WHERE sample_embedding MATCH '[0.890, 0.544, 0.825, 0.961, 0.358, 0.0196, 0.521, 0.175]' order by distance limit 2;
Hello, What does the SQL statement MATCH do in the above example. Where does distance come from, Does it calculate the Euclidean distance?

I asked @asg017 over discord and here is the answer:

by default it's L2 distance, can be configured to something else with distance_metric:
create virtual table vec_items using vec0(
   contents_embedding float[768] distance_metric=cosine
)


Jacob Brake

Not working in 1.51?

works perfectly on version 1.51

Good day to all!!!
I don't know where to write about the plugin, but I'll write here.
The plugin seems to work after the update, but not correctly, when you drive in the truck cabin, the sound is as if you are standing in a tunnel or under a bridge, but when you drive from a third person, the plugin sound is more or less.
Maybe someone will help this and solve this problem.
Thanks to everyone...

I found for my elf to that it's not even recognizing the g29 foot pedals in the options to assign a button in ATS settings so when you lift off your throttle the Jake works.  So we got some issues for sure  i also posted on another thread but shred here also


Quickstart drawer dissapears when you change the page

When you open one quickstart drawer  (for example: "Give access to a cluster template") and you change the page, you lost the quickstart drawer and you don't know in which step you were.
https://github.com/stolostron/cluster-templates-operator/assets/11390125/e68c6dcd-5075-4886-935c-1f088cbc06ea

Resolved in frontend
https://github.com/stolostron/cluster-templates-console-plugin/pull/53


[BUG] LB IP does not release when IPAM change

Pool LB IP does not release when change IPAM to DHCP, and vice versa.

IPAM Pool -> DHCP

IPAM DHCP -> Pool

Environment

Harvester

Version: v1.4.0-dev-20240918
Profile: Single node QEMU/KVM
ui-source: Auto

Prerequisite

 STEP

Steps

 Create an IPPool w/ 3 IPs

 Create 3 LBs (IPAM Pool), 3 LBs gets IP

 :x: Change lb1's IPAM from Pool to DHCP, address should be release and reallocated.

Change IPAM to DHCP

IP not release

 :x: Delete lb1 and lb4 should get IP

Supportbundle
supportbundle_IpNotReleaseWhenChangeIPAM_2024-10-01T08-23-23Z.zip

As LB can be created as a placeholder and easily re-created.
We will add a webhook check to deny the change of IPAM from IPPool to DHCP and vice versa, to avoid possible address leaking. User may delete and create a new LB to get the purpose.

Please note that #1834 is not fully implemented yet.

This issue can be validated with the coming harvester-v1.4.0-rc4 release, which has the new LB image tag bumped via PR https://github.com/harvester/harvester/pull/6833.

Validation Description
Follow original post to reproduce. It blocks requests from DHCP to Pool or from Pool to DHCP.

 🟢 From Pool to DHCP
GUI

YAML of GUI

kubectl

 🟢 From DHCP to Pool
GUI

YAML of GUI

kubectl

Environment

Single Node harvester-v1.4.0-rc4


Update deploy-apps-microsoft-teams-landing-page.md

Please consider the following edits...

Hi @RomanMSFT, thank you for your feedback.
Next time, please use the "Send feedback about this page" button instead of "Edit this document" to provide feedback/comments about the article.
"Edit this document" is to propose a direct update to the article.
Thanks!

Hi @RomanMSFT , pinged you internally on Teams to talk about this doc update request. Trying to understand what's required + what's available.

Hi @RomanMSFT , I am checking the exact answers with the PM team. I hope to have some answers next week. I shall make the doc updates as soon as I hear any answers.
Thanks for your patience.

Hi @RomanMSFT - Hope all is well. Wanted to check if there is an update here? Thanks.

Looks like the last action was on Ashish....
Hi @RomanMSFThttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FRomanMSFT&data=05|01|romanma%40microsoft.com|31409b4166cd4f58ff9208da8cf844f5|72f988bf86f141af91ab2d7cd011db47|1|0|637977295182793299|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=6eq2VsvPsx1fJ4M9A0j8YVJkc6eD9IRp1W1H40n5zcY%3D&reserved=0 , I am checking the exact answers with the PM team. I hope to have some answers next week. I shall make the doc updates as soon as I hear any answers.
From: Manuela Scanu @.>
Sent: Wednesday, November 30, 2022 1:11 PM
To: MicrosoftDocs/OfficeDocs-SkypeForBusiness @.>
Cc: Roman Maddox @.>; Mention @.>
Subject: Re: [MicrosoftDocs/OfficeDocs-SkypeForBusiness] Update deploy-apps-microsoft-teams-landing-page.md (PR #8922)
Hi @RomanMSFThttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FRomanMSFT&data=05|01|romanma%40microsoft.com|53b148390d6a490d1fcb08dad306a692|72f988bf86f141af91ab2d7cd011db47|1|0|638054322796362747|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=22NtjDddAgxob0Ez52jaKe6uozAN89AxRWTigZoI1ho%3D&reserved=0 - Hope all is well. Wanted to check if there is an update here? Thanks.

Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2FOfficeDocs-SkypeForBusiness%2Fpull%2F8922%23issuecomment-1332614528&data=05|01|romanma%40microsoft.com|53b148390d6a490d1fcb08dad306a692|72f988bf86f141af91ab2d7cd011db47|1|0|638054322796362747|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=ObtG%2BS9oyL%2FhfJE3G9H8X6d2XlJdN8mWGZGGeMPDDjg%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAII4NSMZGTK3MPDDDPWHSRLWK6RFDANCNFSM5XFAISVA&data=05|01|romanma%40microsoft.com|53b148390d6a490d1fcb08dad306a692|72f988bf86f141af91ab2d7cd011db47|1|0|638054322796362747|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=eoVp%2FfRxNaEBSpebwRJktGZo%2FJHO3K6vP5gnWrZkBp0%3D&reserved=0.
You are receiving this because you were mentioned.Message ID: @.***>

Hi @RomanMSFT , I took it up internally with the PM owner. We are of a strong opinion that we should document the entire list.  (reference to "all these shoudl be spelled out here.")
Also, getting the license-wise mapping of exact apps will take ample effort to collect. What is the ROI of documenting this? Is this purely for info? Folks who have a particular license can already see the Core apps that are available to them. I believe that most customers won't be looking for a list of apps available by default in the docs.
Hence, my conclusion is to document a list of potential Core apps that are available by default. But not split the list based on licenses and not explicit provide details that the list is exhaustive/comprehensive. There may be a few more apps than documented that may be available and the customers can easily check it in their Teams client.
What do you think of this approach? Feedback is welcome, please.
CC @scanum

Any feedback on the approach, @RomanMSFT ?

Hi @RomanMSFT
Following up on this issue. Please let me know if there are any updates. Thanks!

Hence, my conclusion is to document a list of potential Core apps that are available by default. But not split the list based on licenses and not explicit provide details that the list is exhaustive/comprehensive.

We've done the above and the article is updated. Closing this PR.


Terraform (Error: Inconsistent conditional result types) when passing var.linux_parameters

Description
Terraform returns the error "Inconsistent conditional result types" when passing var.linux_parameters.

[X] ✋ I have searched the open/closed issues and my issue is not listed.

Versions

Module version [Required]: 5.7.0

Terraform version: 1.6.4

Provider version(s): aws v5.25.0

Reproduction Code [Required]
provider "aws" {
  region = local.region
}

data "aws_availability_zones" "available" {}

locals {
  region = "eu-west-1"
  name   = "ex-${basename(path.cwd)}"

  vpc_cidr = "<IP_ADDRESS>/16"
  azs      = slice(data.aws_availability_zones.available.names, 0, 3)

  container_name = "ecsdemo-frontend"
  container_port = 3000

  tags = {
    Name       = local.name
    Example    = local.name
    Repository = "https://github.com/terraform-aws-modules/terraform-aws-ecs"
  }
}

################################################################################
# Cluster
################################################################################

module "ecs" {
  source = "../../"

  cluster_name = local.name

  # Capacity provider
  fargate_capacity_providers = {
    FARGATE = {
      default_capacity_provider_strategy = {
        weight = 50
        base   = 20
      }
    }
    FARGATE_SPOT = {
      default_capacity_provider_strategy = {
        weight = 50
      }
    }
  }

  services = {
    ecsdemo-frontend = {
      cpu    = 1024
      memory = 4096

      # Container definition(s)
      container_definitions = {

        fluent-bit = {
          cpu       = 512
          memory    = 1024
          essential = true
          image     = nonsensitive(data.aws_ssm_parameter.fluentbit.value)
          firelens_configuration = {
            type = "fluentbit"
          }
          memory_reservation = 50
        }

        (local.container_name) = {
          cpu       = 512
          memory    = 1024
          essential = true
          image     = "public.ecr.aws/aws-containers/ecsdemo-frontend:776fd50"
          port_mappings = [
            {
              name          = local.container_name
              containerPort = local.container_port
              hostPort      = local.container_port
              protocol      = "tcp"
            }
          ]

          # Example image used requires access to write to root filesystem
          readonly_root_filesystem = false

          dependencies = [{
            containerName = "fluent-bit"
            condition     = "START"
          }]

          enable_cloudwatch_logging = false
          log_configuration = {
            logDriver = "awsfirelens"
            options = {
              Name                    = "firehose"
              region                  = local.region
              delivery_stream         = "my-stream"
              log-driver-buffer-limit = "2097152"
            }
          }

          linux_parameters = {
            capabilities = {
              drop = [
                "NET_RAW"
              ]
            }
          }

          memory_reservation = 100
        }
      }

      service_connect_configuration = {
        namespace = aws_service_discovery_http_namespace.this.arn
        service = {
          client_alias = {
            port     = local.container_port
            dns_name = local.container_name
          }
          port_name      = local.container_name
          discovery_name = local.container_name
        }
      }

      load_balancer = {
        service = {
          target_group_arn = module.alb.target_groups["ex_ecs"].arn
          container_name   = local.container_name
          container_port   = local.container_port
        }
      }

      tasks_iam_role_name        = "${local.name}-tasks"
      tasks_iam_role_description = "Example tasks IAM role for ${local.name}"
      tasks_iam_role_policies = {
        ReadOnlyAccess = "arn:aws:iam::aws:policy/ReadOnlyAccess"
      }
      tasks_iam_role_statements = [
        {
          actions   = ["s3:List*"]
          resources = ["arn:aws:s3:::*"]
        }
      ]

      subnet_ids = module.vpc.private_subnets
      security_group_rules = {
        alb_ingress_3000 = {
          type                     = "ingress"
          from_port                = local.container_port
          to_port                  = local.container_port
          protocol                 = "tcp"
          description              = "Service port"
          source_security_group_id = module.alb.security_group_id
        }
        egress_all = {
          type        = "egress"
          from_port   = 0
          to_port     = 0
          protocol    = "-1"
          cidr_blocks = ["<IP_ADDRESS>/0"]
        }
      }
    }
  }

  tags = local.tags
}

module "ecs_disabled" {
  source = "../../"

  create = false
}

module "ecs_cluster_disabled" {
  source = "../../modules/cluster"

  create = false
}

module "service_disabled" {
  source = "../../modules/service"

  create = false
}

################################################################################
# Supporting Resources
################################################################################

data "aws_ssm_parameter" "fluentbit" {
  name = "/aws/service/aws-for-fluent-bit/stable"
}

resource "aws_service_discovery_http_namespace" "this" {
  name        = local.name
  description = "CloudMap namespace for ${local.name}"
  tags        = local.tags
}

module "alb" {
  source  = "terraform-aws-modules/alb/aws"
  version = "~> 9.0"

  name = local.name

  load_balancer_type = "application"

  vpc_id  = module.vpc.vpc_id
  subnets = module.vpc.public_subnets

  # For example only
  enable_deletion_protection = false

  # Security Group
  security_group_ingress_rules = {
    all_http = {
      from_port   = 80
      to_port     = 80
      ip_protocol = "tcp"
      cidr_ipv4   = "<IP_ADDRESS>/0"
    }
  }
  security_group_egress_rules = {
    all = {
      ip_protocol = "-1"
      cidr_ipv4   = module.vpc.vpc_cidr_block
    }
  }

  listeners = {
    ex_http = {
      port     = 80
      protocol = "HTTP"

      forward = {
        target_group_key = "ex_ecs"
      }
    }
  }

  target_groups = {
    ex_ecs = {
      backend_protocol                  = "HTTP"
      backend_port                      = local.container_port
      target_type                       = "ip"
      deregistration_delay              = 5
      load_balancing_cross_zone_enabled = true

      health_check = {
        enabled             = true
        healthy_threshold   = 5
        interval            = 30
        matcher             = "200"
        path                = "/"
        port                = "traffic-port"
        protocol            = "HTTP"
        timeout             = 5
        unhealthy_threshold = 2
      }

      # Theres nothing to attach here in this definition. Instead,
      # ECS will attach the IPs of the tasks to this target group
      create_attachment = false
    }
  }

  tags = local.tags
}

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "~> 5.0"

  name = local.name
  cidr = local.vpc_cidr

  azs             = local.azs
  private_subnets = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 4, k)]
  public_subnets  = [for k, v in local.azs : cidrsubnet(local.vpc_cidr, 8, k + 48)]

  enable_nat_gateway = true
  single_nat_gateway = true

  tags = local.tags
}

Steps to reproduce the behavior:
I have added the following to your "complete" example above.
          linux_parameters = {
            capabilities = {
              drop = [
                "NET_RAW"
              ]
            }
          }

This returns the following:
╷
│ Error: Inconsistent conditional result types
│
│   on ../../modules/container-definition/main.tf line 20, in locals:
│   20:   linux_parameters = var.enable_execute_command ? merge({ "initProcessEnabled" : true }, var.linux_parameters) : var.linux_parameters
│     ├────────────────
│     │ var.enable_execute_command is false
│     │ var.linux_parameters is object with 1 attribute "capabilities"
│
│ The true and false result expressions must have consistent types. The 'true' value includes object attribute "initProcessEnabled", which is absent in the 'false' value.
╵

I cloned your repo, added the lines to your complete example, ran init then plan. No prior cache, no integrations such as workspaces.

Expected behavior
I expect to be allowed to pass linux_parameters map.

Actual behavior
Inconsistent values result.

Terminal Output Screenshot(s)

Additional context
Likely introduced in https://github.com/terraform-aws-modules/terraform-aws-ecs/pull/127
If I'm using var.linux_parameters wrong in my example (which is entirely possible) it might be worth adding that to your "complete" example.

This issue has been resolved in version 5.7.2 :tada:


Unexpected error  "undefined "(Not Found) updating tweets

I'm receiving the error "Unexpected error agonyclite/lists/awesome-people/statuses: "undefined"(Not Found) updating tweets." whenever I attempt to load two of the lists that I have. The error doesn't occur with every list, however. The lists are most certainly still there; in fact, I created a new one to solve the issue of the old one not showing up, only to have the new one cause an error as well.
I'm using Chrome 24.0.1312.27 beta-m on Windows 7 64-bit, if that helps at all.

This extension solves this issue: https://github.com/studioddtonline/Silverbird-M
It's a fork of the Silver Bird extension. Lists work fine in it.


feat: extension for MakesHttpRequests

[x] Added or updated tests
[ ] Documented user facing changes
[ ] Updated CHANGELOG.md

Changes
Adds an extension called TestCaseMakesHttpRequestsExtension and renames TestCaseExtension to TestCaseMockeryExtension.
The purpose of TestCaseMakesHttpRequestsExtension is to apply the return type of Illuminate\Testing\TestResponse to HTTP request testing methods such as get, getJson and post etc.
At current, these methods will return a mixed type meaning PHPStan can't process tests using these methods effectively.
I'm new to making changes to PHPStan codebases and rules so if there's a better way of doing this or something I've missed in the PR, please feel free to guide me in the best way of handling this.
Breaking changes
None

Hi,
Thanks for the PR!
But I do not understand why is this needed. If I look at the types for the get method for example, it looks fine to me: https://github.com/laravel/framework/blob/9.x/src/Illuminate/Foundation/Testing/Concerns/MakesHttpRequests.php#L300-L307

I also believed this to be the case, but it is not. I built a demo repo you can try out https://github.com/peterfox/rector-status-rule-demo. If you use it with Larastan or not, it won't work because for some reason the return type found by PHPStan on those methods is mixed and not TestResponse.

I just cloned your example repository, and made the following changes:
diff --git a/phpstan.neon b/phpstan.neon
index f04455f..4578715 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -5,6 +5,7 @@ parameters:

     paths:
         - app/
+        - tests

     # Level 9 is the highest level
     level: 5
diff --git a/tests/Feature/ExampleTest.php b/tests/Feature/ExampleTest.php
index 1eafba6..b377872 100644
--- a/tests/Feature/ExampleTest.php
+++ b/tests/Feature/ExampleTest.php
@@ -16,6 +16,8 @@ public function test_the_application_returns_a_successful_response()
     {
         $response = $this->get('/');

+	\PHPStan\dumpType($response);
+
         $response->assertStatus(200);
     }
 }

Then when I run ./vendor/bin/phpstan the result is:
------ ----------------------------------------------
  Line   tests/Feature/ExampleTest.php
 ------ ----------------------------------------------
  19     Dumped type: Illuminate\Testing\TestResponse
 ------ ----------------------------------------------

Also, tested the same thing in another project. Same result. I can't produce getting mixed as the dumped type 🤷🏽♂

Also if I run Rector on your repo:
1 file with changes
===================

1) tests/Feature/ExampleTest.php:17

    ---------- begin diff ----------
@@ @@

 	\PHPStan\dumpType($response);

-        $response->assertStatus(200);
+        $response->assertOk();
     }
 }
    ----------- end diff -----------

Applied rules:
 * AssertStatusToAssertMethodRector

so looks like it works correctly.

@canvural thank you for showing me that technique to perform a debug. I can confirm that you're right PHPStan is dumping the correct type as you've demonstrated with your code.
It looks rector is still failing for me which is a bit of a head scratcher.
Would you be able to just provide me what versions you're using for Larastan, PHPStan, Rector and PHP if possible?

I just did composer install on your repo. So the latest version of everything.

Larastan 2.2.9 and your dev-feature/testcase-return-types branch
PHPStan 1.9.3
Rector 0.15.0
PHP 8.2

But I also realized your repo uses your branch for the Larastan. I changed it to 2.2.9, still the same result though.

Thank you, it does appear we're on the same versions, I wasn't sure if maybe it was a PHP version missmatch.
To check, you might want to run ./vendor/bin/rector --clear-cache as I find it can often cache things in a way you don't realise is affecting stuff after the change of the Larastan version.
Thank you for helping with this by the way. I greatly appreciate this goes beyond a maintainer's normal workflow.

Yeah when I ran ./vendor/bin/rector --clear-cache it didn't change the file when Larastan 2.2.9 is installed. But PHPStan still dumps the correct type 🤷🏽♂

😆 well, I'm glad it's not just me then, though I hoped it was just something dumb I'd done. This might be a bug in rector somehow.
The next step is to find out if that's the case, I guess. Are you okay with this PR staying open in the meantime?

Honestly I don't think this PR will be the solution. The extension here kinda doesn't make sense.
If you really find an issue later, you can open a new one. Hope you understand.
PS. I'll also take a look at this issue, because it's interesting.

@canvural totally understand 👍 . Please let me know if you find something or if I can help. Thank you for taking the time to sanity-check my PR at least.


Not work with wdk

Hi,  i have a question, I use wdk to develop windows driver ,but when i export the database . It not contain any driver header or marco..
`
[
{
"directory": "E:/OneDrive/Knowledge_System/Windows/Driver/FileFilter/nullFilter/",
"command": ""C:/Program Files/LLVM/bin/clang++.exe" -x c "E:/OneDrive/Knowledge_System/Windows/Driver/FileFilter/nullFilter/nullFilter.c" -Wall -fms-compatibility-version=19.10 -Wmicrosoft -Wno-invalid-token-paste -Wno-unknown-pragmas -Wno-unused-value -fsyntax-only "-D_MT" "-D_DLL" "-D_DEBUG_FUNCTIONAL_MACHINERY" -isystem"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/include" -isystem"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/atlmfc/include" -isystem"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Auxiliary/VS/include" -isystem"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/ucrt" -isystem"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/um" -isystem"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/shared" -isystem"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/winrt" -isystem"C:/Program Files (x86)/Windows Kits/10/Include/10.0.22000.0/cppwinrt"",
"file": "E:/OneDrive/Knowledge_System/Windows/Driver/FileFilter/nullFilter/nullFilter.c"
}
]
`
it not contain:  C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\km

Hi,
Thank you for reporting this issue, can you activate verbose mode and give us the resulted log when you export database?

Best regards,
Marina

log.txt
Sure ,  but this is a Chinese development environment, so some debug info is not english

@mariru27 Hi, Is this a bug or an unimplemented feature?

Hi,
Sorry for the delayed answer, we do not support this currently, but you can add the path manually

Kind regards,
Marina

@mariru27 I find a way to solve it :

buf if a sln project have many sub project, it's look like a "global setting"
Is possibly apply it to specific project?
Such as

I want apply it to project DeviceMonitor, NetMonitor and SystemMonitor only.
By the way , according to log,  seems the program crashed.


proposal: eager loading support

We open this task in order to get feedback for the generated-code API of eager loading.
The 3 requirements (maybe there are more) we thought about are:

Allow filter edges/relations (using .Where)
Get nested edges/relations
Limit/offset capabilities

A few examples here for what we thought about:
Add a With<EdgeName> method to the builder:
client.User.
  Query().
  Where(...).
  WithPets().                   // populate all user pets.
  WithGroups(group.HasAdmin()). // filter out groups without admin.
  All(ctx)

This example gets all users under a condition + their pets + their groups (with an admin).

What about getting all users + their groups (limit to X) + their admins (eager-loading with depth 2)?
I'm not sure how common this scenario, so I think either disable this, or add a With<Edge>Fn option for more flexible loading:
client.User.
  Query().
  Where(...).
  WithGroupsFn(func(q *ent.GroupQuery) {
    q.Where(...).Limit(X).WithAdmin()
  }).
  All(ctx)

Maybe we can change With<Edge> to behave like With<Edge>Fn and make the function to be an optional parameter.

The return type for eager loading:
We were thinking about the 2 options:

Add the schema edges as public fields in the generated struct (e.g. ent.User), and then populate the result into these fields.

Add another struct type (struct) for holding the schema edges. For example:
  type UserEdges struct {
     Pets []*Pet
     // ...
  }

I'm not sure how this is supposed to handle nested eager-loading (User->Pets->Friends)?

Update:
After a discussion between @alexsn and I, the suggested changes to the API are:

Add a field named Edges to the generated type that will holds all type edges. For example:type User struct {
    // user fields.

    // preloaded edges.
    Edges UserEdges {
      Pet []*Pet
      Card *Card
      // ...
    }
}

Add a With<Edge>(<Edge>QueryFunc...) to each builder to preload edges. For example:// PetQueryFunc is a function type that applied on the PetQuery.
type PetQueryFunc func(*PetQuery)

 client.User.
     Query().
     // "groups" is an edge of a user.
     WithGroups().
     // "pets" is an edge of a user.
     WithPets(func (q *ent.PetQuery) {
             q.Where(pet.HasFriends()).Limit(5)
     })
     // nested eager loading.
     WithFriends(func (q *ent.UserQuery) {
             q.WithPets()
     }).
     All(ctx)

This way, reusable options can be shared.func Limit(n int) PetQueryFunc { return func (q *ent.UserQuery) { q.Limit(n) } }
func Offset(n int) PetQueryFunc { return func (q *ent.UserQuery) { q.Offset(n) } }

// ..
WithPets(Limit(5), Offset(5))
// ..

Will it be implemented with JOIN?

Yes.

Will it be implemented with JOIN?

Like @alexsn said, JOINs will be used for eager loading. But, in cases of loading multiple and nested relations, additional queries will be executed as well.
For Gremlin, we didn't figure out yet what is the "best" way for doing this.

By the same token, if I get a user and all of his/her cars in one eager query, will the return value have both the user's columns as well as the cars?
Right now, graph traversals only return the last edge but not the edges you've visited along the way.

By the same token, if I get a user and all of his/her cars in one eager query, will the return value have both the user's columns as well as the cars?
Yes, as an example:

users, err := client.User.
     Query().
     // eagerly load cars along with users
     WithCars().
     All(ctx)
if err != nil {
     // handle error
}
for _, user := range users {
    for _, car := range user.Edges.Cars {
        // do something with car
    }
}

@a8m this is awesome 👏 👏 👏  -- gonna give it a try this week

Multiple database queries for a single ent query means multiple database round trips and increased latency. Microsoft Entity framework 3 is now generating only one sql query for each LINQ query. Previously they were using ent approch but they had to change it due to performance and data consistency issues, https://www.youtube.com/watch?v=PXdgyPpfaz4&list=PLReL099Y5nRd04p81Q7p5TtyjCrj9tz1t&index=14&t=899s

Thanks for the reference @ansarizafar, I'll go over it.
I just want to mention that the development is never done, there's always room for performance improvements. We just discussed between us on how we can use JOIN in some specific cases to improve performance.
We have a working solution now (better state than before), we'll improve it gradually, and we'll be able to compare the performance in each iteration.

@a8m Please also take a look at Fauna Query Language https://docs.fauna.com/fauna/current/api/fql/

@a8m This go project is can translate GraphQL queries into a single fast SQL query. We can use the same method for eager loading in ent.


In React Native, the Slider can't be dragged, it can only be clicked.

Expectation
Slider can be dragged and moved

This is fixed in the latest version, please check.


⚠ ClamAV has degraded performance

In 566fff6, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 72 ms

Resolved: ClamAV performance has improved in 67a3d98 after 5 minutes.


deleteObject not working - returns 'object not found'

Seems like the api endpoint is getting the bucket_slug instead of the object slug and that's why it is returning 'Object not found'.
In line 272 bucket_config contains slug.
After changing that line to something like this return axios.delete(endpoint, { data: Object.assign(bucket_config, {slug: params.slug}) }) deleting was working. Probably it would also work if bucket slug is removed from config before adding it to data.

Thanks for the find @AWolf81!  This is now fixed in the latest version (3.2.3)


Tell dependabot not to bump major versions

Why?
Major versions may contain breaking changes, so we'll want to do those bumps manually

@dskamiotis this is for dependabot config https://github.com/guardian/commercial/pull/1434


Sound spamming as of Sound refactor (#1589)

Describe the bug
I'm getting spamming of the chimePrompt sound after this change.
How to reproduce or log data
In a sharp curve, the steer torque isn't sufficient. As the car wobbles as the curve straightens out, the sound continues to play over and over (sometimes without ever finishing before stopping the current one and then playing the next one).
Expected behavior
Sound should not repeat until the duration of the (sound) event has ended.
Device/Version information (please complete the following information):

Device: comma two
Dongle ID: 95e637a323d6e9fc
Version: based on master-ci (f42af10b943400b617c4744cb0469db35920b451)
Car make/model: 2017 Civic Hatchback

Fixed in 78b428e53441da339f8d13b78bfcf1f5ca192d6f


Downgrade tool to netcoreapp1.0

.NET Core tools are still netcoreapp1.0 so using dotnet-script as a tool today will fail during restore
Example this csproj
<Project Sdk="Microsoft.NET.Sdk">
 <PropertyGroup>
   <TargetFramework>netcoreapp1.1</TargetFramework>
 </PropertyGroup>
   <ItemGroup>
      <DotNetCliToolReference Include="Dotnet.Script" Version="0.12.0-beta" />
    </ItemGroup>
</Project>

will fail wit the error
+ > dotnet restore .\hello.csproj --source C:\temp\dev\gh\devlead\dotnet-script\nuget
-  error NU1202: Package Dotnet.Script 0.12.0-beta is not compatible with netcoreapp1.0 (.NETCoreApp,Version=v1.0).
-  Package Dotnet.Script 0.12.0-beta supports: netcoreapp1.1 (.NETCoreApp,Version=v1.1)

Adjusting the tool target framework seems to do the trick (tested with dotnet build/test/pack to local folder and that folder used as source)
+ > dotnet restore .\hello.csproj --source C:\temp\dev\gh\devlead\dotnet-script\nuget
+   Restoring packages for C:\temp\dotnet-script-test\hello.csproj...
+   Restoring packages for C:\temp\dotnet-script-test\hello.csproj...
+   Installing Dotnet.Script 0.13.0.
+   Generating MSBuild file C:\temp\dotnet-script-test\obj\hello.csproj.nuget.g.props.
+   Restore completed in 814,17 ms for C:\temp\dotnet-script-test\hello.csproj.
+   Restore completed in 862,33 ms for C:\temp\dotnet-script-test\hello.csproj.
+ C:\temp\dotnet-script-test> dotnet script .\hello.csx
+ Hello

We are actually looking into targeting netcoreapp2.0 in an effort to solve a couple of runtime dependency problems we are seeing on Linux. The way we will integrate with the dotnet cli is by putting the dotnet-script.cmd/dotnet-script.sh on the PATH rather than explicitly having the tool reference. References to NuGet packages are being done inline like explained in these release notes.
https://github.com/filipw/dotnet-script/releases/tag/0.11.0-beta

Ah I see, so bootrapping will not use the dotnet cli for more than execution of the tool if already in place in path?
I get the nuget references for script dependencies, but how do I obtain the dotnet cli command script without using the .NET CLI? Is the intent here to use something custom?

Ah I see, so bootrapping will not use the dotnet cli for more than execution of the tool if already in place in path?

Yes, we integrate using PATH-based extensibility according to these docs
https://docs.microsoft.com/en-us/dotnet/core/tools/extensibility

I get the nuget references for script dependencies, but how do I obtain the dotnet cli command script without using the .NET CLI? Is the intent here to use something custom?

Once the dotnet-script.cmd/sh file is in the path you can invoke it just as you would with any other cmd/sh file or you can invoke it through the dotnet cli (dotnet script).

I'll go ahead and close this PR then.
So basically curl the nuget package, unzip and add to path is the recommended way?

Hi Mattias, thanks a lot for the PR.
The error you are seeing is only visible if you use 1.0.x SDK for .NET Core. If you use .NET Core 2.0.0 SDK the problem is already fixed.
By the way, there is a way to force the external tool to run under different CLI runtimes. Here is the example
https://github.com/dotnet/cli/tree/rel/1.0.0/TestAssets/TestPackages/dotnet-prefercliruntime
Perhaps it's something we should do on this package, although I'm not convinced it's necessary (yet), especially as we'll like switch the whole thing to .NET Core 2.
The mentioned above way of integrating into .NET CLI will be the recommended way going forward, yes. Now, it won't work by grabbing the nuget package, because you will need to have things like runtimeconfig resolved and so on - that happens normally on dotnet restore. I personally think the easiest would be to point to the github release and unzip that.

Perhaps a dotnet-script.portable Chocolatey package it could contain everything the release does, then you could choco install or just curl&unzip, and that way still get the advantage of NuGet server side bits and pieces.


Fix Socket ID Storage for Players

Currently, if a player refreshes the page, it looks like they connect with a new socket id. The player's socket id stored in the database should be updated every time a refresh happens, so it reflects the most recent connection.
I believe this should happen in the onPlayerLoad function, in the playerHandler.ts file.

https://github.com/hto-projects/friendpardy/pull/106


Reduce k8s resource count exporter app name

What this PR does / why we need it
This reduces the etcd-kubernetes-resources-count-exporter appName that was causing the default-apps installation to fail in clusters having longer names.
Towards https://github.com/giantswarm/giantswarm/issues/28911
Checklist

[ ] Update changelog in CHANGELOG.md.

Trigger e2e tests

/run cluster-test-suites


[Feature] Reset consumer group offset

Is your proposal related to a problem?
Sometimes it is useful to manipulate offsets for a consumer group.
Kafka provides the command to reset the offset for a specific consumer group on a specific topic.
Describe the solution you'd like
A solution might be a "Reset Offset" button in the Consumer group page, one for each topic.
Describe alternatives you've considered
N/A
Additional context
This documentation might be useful:
https://gist.github.com/marwei/cd40657c481f94ebe273ecc16601674b

Hey,
thanks for reaching out!
This feature is actually present. Once you click on a consumer group, there's gonna be a sandwich menu with three dots in the top right corner with "Reset offset" button there.
Isn't this behaviour clear? How can we improve this?

My bad, actually I haven't noticed the sandwich menu.
An improvement might be to make that command more visible, but it is just a matter of UI.
Thank you for your help!

We'll consider something else if we'll get more questions about it L)


Implement usage of save_method patch and delete (based on #312)

(Base on PR by @loan75)

Renamed back method in PolicyStoreClient (we use it in other code)
Extracted code that calls the Policy Store to a method
Added a str base class to HttpMethodsAllowed enum

I guess that tests need to be updated and test also PATCH and DELETE save_method.


feat: add build cache settings

Description

tried adding the cache settings for the website

Related issue(s)

#843

can you explain what you added and why and basing on what docs?
also, why we need netlify cli in the dependencies ?

can you explain what you added and why and basing on what docs?

I went through the netlify blogs and found that we need to install the plugins for nextjs site deployed on netlify to enable caching
https://github.com/netlify/next-runtime#use-with-next-export

also, why we need netlify cli in the dependencies ?
Sorry I forgot to mention I need to check the deploy status so needed to install it .I will remove it before the final merge

cache is working
this is build info from your PR. First one, and logs were saying no cache found - which makes sense

then this is a rerun, and logs mentioned cache is use

so we have 1min improvement. Looks like it works. So please just answer the questions to the PR

@derberg PTAL

@derberg all the things are done by side ,
Should we check that the cache is working or not once more?

@derberg My concern over the implementation is that aren't we targeting the posts.json content to cache it inside website? With the current implementation inside this PR, I can't figure what content are we caching inside Netlify?

@akshatnema this PR and related issue is focused on build cache, not website cache. It is not focused on website performance after deployment but the build performance and its speed. In other words, this PR enables cache inside Netlify build cache, to cache not only posts.json but also other source files, to speed up website rebuild.
So website is not faster thanks to this PR. What is faster is the rebuild of for example preview in the PRs and contribution flow is improved

@derberg Yeah, I completely understand that it is not building in any cache inside website runtime, but it should build cache for posts.json and shouldn't run the build of the posts.json every time the build has been initiated.
Also, I see the following error regarding the npm packages:

So, probably, we have to upgrade the node version of the Netlify.

@sambhavgupta0705 the change needs to be done in netlify.toml file
@akshatnema regarding posts.json, I don't think there is any specific solution that we can add that will enable that. Building posts.json is a custom script, so what you are suggesting is like adding if into script, that in case for example there were no changes in docs detected, then docs script should basically not run. Or did you have some other idea?

@derberg For now, I can't able to find anything in the Netlify docs to cache any existing files. Hope we had any CMS or DB for the posts in future so that we can set some caching regarding those in future. So approved ✅

@sambhavgupta0705 Kindly resolve the conflicts.

@akshatnema done 👍🏻

/rtm

/bounty


task/Remove old HCL workflow file and write new ones in YML

Migrating over from old HCL syntax to .yml syntax.
Should do the same things as before.
One thing to note is that I created two files: one for "test" and one for "test and deploy". I didn't see a clear way of doing this without creating two files, but if there is one, feel free to suggest it.
Also added a badge (👮) to the README! If the deploy fails, it should turn red. 🛑
A good reference for this are the ones in here:

https://github.com/cds-snc/cra-alpha/tree/master/.github/workflows

Gonna merge since everything looks good over here.


Enhance lookup for IdTokens/AppMetadata

This PR:

adds filter based lookup for idTokens and appMetadata (in lieu of respecting environment aliases)
Checks for undefined objects while retrieving in cache

Coverage decreased (-0.09%) to 82.299% when pulling 11f6f98bce306d0781c7a3040caadb91beabf822 on silent-flow-fix-node into fef918b8cdbff3dc82aea3ca41118a0130ac1d40 on dev.


Improve Performance

As per discussed here, there is a performance impact when playing sounds at a really fast rate (like 2 per second). We need to take a look at what's causing this.

This was fixed on 0.7.0. Now you can change the releaseMode to STOP in order for it to not be release. Then you can load the asset once with setUrl and then use resume to play as needed (this fixes @matejthetree problem with performance on the first sound played on flame), using something like this:
    // setup
    AudioPlayer player = new AudioPlayer();
    player.setReleaseMode(ReleaseMode.STOP); // this will not release the player when finished
    player.setUrl('...url...'); // this will prepare the player and leave it ready

    // play
    player.resume(); // instantly plays the sound

    // dispose (after game/stage finishes)
    player.release();


Add facts to report outdated / vulnerable packages

When applicable, new facts where inspired by pupeptlabs-apt's facts:

apt_has_updates     -> pkg_has_updates     (Boolean)
apt_updates         -> pkg_updates         (Integer)
apt_package_updates -> pkg_package_updates (Array[String])

Since pkg-audit(8) can report vulnerabilities in ports without updates, it's not possible to have a strict equivalent to apt_security_updates. So I created a bunch of facts to report vulnerable packages the same way outdated packages are reported:

pkg_has_vulnerabilities (Boolean)
pkg_vulnerabilities     (Integer)
pkg_package_vulnerables (Array[String])

Sample output, on a system with 1 update and 2 vulnerable packages:
pkg_has_updates => true
pkg_has_vulnerabilities => true
pkg_package_updates => [
  "phantomjs-2.1.1"
]
pkg_package_vulnerables => [
  "OpenEXR-2.2.0_7",
  "oniguruma5-5.9.6_1"
]
pkg_updates => 1
pkg_vulnerabilities => 2

Sample output on a system up to date with no known vulnerabilities:
pkg_has_updates => false
pkg_has_vulnerabilities => false

:warning: Words and pluralization looks odd to me, but as a non-native English speaker, I could not find anything better (vulnerable vs. vulnerabilities vs. with_vulnerabilities) :confused:.  If you think some words are more suitable than these, please tell me and I'll update this pull-request!

Code coverage information seems to get lost between two fact unit tests :disappointed:
As a result, the coverage directory only has coverage information for the last unit test run.

This is great!  Thank you for putting in the effort.  I can see some good use cases for this.
  The one only that sounds odd to me is pkg_package_vulnerables.  Since we listing packages with vulnerabilities, perhaps pkg_vulnerable_packages is clearer.  The same could be said of pkg_package_updates -> pkg_updateable_packages, but as it stands now I think it sounds fine.  Is 'updatedable' even a word?  English is hard.  So I think pkg_package_updates is fine.
If you agree with my assessment above, I'll give some time to make the change, otherwise I'm happy to merge as is.

I quite agree with you for pkg_vulnerable_packages feeling more natural than pkg_package_vulnerables.
Since puppetlab's apt package has an apt_package_updates fact, I tried to build a name similar to it, but maybe it was a bad idea in the first place.  Since the apt module does not have a similar fact at the moment, I propose to keep pkg_package_updates as is (so that it looks like the fact provided by the apt module), and rename pkg_package_vulnerables to pkg_vulnerable_packages as you suggested.

+1 to that.

Just added a commit to rename the fact.
Regarding the code coverage, it seems to be broken by the Facter.clear which is run after each test.
Unfortunately, we can't tests the facts without calling this between tests :frowning_face:

Great, thank you for the PR!


Proxy Version Update

After much much drama, this one should be working for everyone.

The following pipelines have been queued for testing:java - templatejava - template - testsjs - templatenet - templatenet - template - testspython - templatepython - template - tests You can sign off on the approval gate to test the release stage of each pipeline. See eng/common workflow


Disable log on production

Hi,
I noticed  my website once builded still outputs the following log in the console : React Static: Templates Reloaded. Where does this comes from? I think it should not be in production.
Thanks!

It's in packages/react-static/src/browser/index.js. I'll accept a PR, preferably making it optional, but removing it by default.


Update github's syntax highlighting for NNBD

(Not really an analyzer issue, but I'm filing it as an analyzer issue on @aadilmaan's recommendation because we don't really have another good category for it)
We need to update the Atom grammar for Dart (https://github.com/dart-atom/dart/tree/master/grammars) to support NNBD, so that Dart code that shows up in github (and in gists) is properly syntax highlighted.

@devoncarew FYI

What syntax highlighting will we need for NNBD? As I read it, it's regexp-based substring matching for highlighting, not actual parsing, so there are limits to its precision.
There are two new built-in identifiers: required (perhaps only highlight when it occurs after a ( or ,) and late. Those should be recognized.
The remaining grammar changes are the type modifier (type?), expression non-null cast (expr!), and some more null-aware operations (?.., ?.[...], ?.(...)).
The current state is:
// @dart = 2.7
main({required int! z}) {
  late final x = [print("run me now")];
  int? x = 42;
  for (var y in [x!]) {
    print(x?.toString());
    print([x]?.[0])
    print([x]?..[0] = 1);
  }
}

The build-in identifiers obviously need to be recognized.
The ? after the type is already highlighted.
The ! and ? are colored red, but not combined with the following ., so maybe we can even improve that (should ?. have a different color than .?).

Mind if we close this in favor of https://github.com/dart-lang/sdk/issues/41882?

Note that the system-of-record for the syntax highlighting for github has moved to https://github.com/dart-lang/dart-syntax-highlight/blob/master/grammars/dart.json.


Separate adding locations from adding IP addresses

There are two problems with the journey at the moment:

there are multiple places to add IP addresses from, and it’s not clear which one you should use (this adds cognitive load)
adding a new location lets you add 5 IP addresses, but adding to an existing organisation only lets you add one at a time
there’s a <select> control for choosing a location, which we generally try to avoid

This commit simplifies the pages by having one button to add a location, and a button for each location that lets you add IP address
Making this journey simpler makes a bit of room to add some contextual help and hint text that should help people complete these tasks.
I’ve also made the ability to add 5 IP addresses available (not just when you’re adding a location) because it felt useful.
Before

After

Tragic news that is
Chris Hill-Scott writes:

quis commented on this pull request.

@@ -25,6 +29,26 @@ def update
redirect_to(ips_path, notice: 'RADIUS secret key has been successfully rotated')
end

def add_ips
@location = Location.find(params[:location_id])
@location.add_blank_ips(5)
end

def update_ips
@location = Location.find(params[:location_id])
length_of_ips_before = @location.ips.length
if !present_ips.empty? && @location.update(ips_attributes: present_ips)

Apparently ActionController::Parameters have an .empty? method but no .any? method. 😞

Deploying to staging for Steve to sign off


Zoom to Entity

Added a function to move the entity editor's camera to the currently selected entity and looking at it, to easier make your way to whichever entity you'd like.

Can one of the admins verify this patch?


[/] Update Website for CNCF Cloud Native Sustainability Week 2024

Description
We need to update the website for this year's event https://tag-env-sustainability.cncf.io/events/cloud-native-sustainability-week/
Outcome
We have this year's edition live
To-Do

[ ] [Author] Raise the PR & create changes
[ ] [TAG ENV Chair] Review & Feedback from the team
[ ] [TAG ENV] Merge the changes

Code of Conduct

[x] I agree to follow this project's Code of Conduct

Comments
No response

@naonishijima is interested to help for Japanese version.

@sunya-ch  Thanks! I am interested in contributing to this.


edl: 3.52.1-unstable-2024-07-05 -> 3.52.1-unstable-2024-08-27

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for edl is: Qualcomm EDL tool (Sahara / Firehose / Diag)
meta.homepage for edl is: https://github.com/bkerler/edl
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 3.52.1-unstable-2024-08-27 in filename of file in /nix/store/m8hj3dvwfli8qwa3zl4y7r8sfqrcf5i9-python3.12-edl-3.52.1-unstable-2024-08-27

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

edl

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/m8hj3dvwfli8qwa3zl4y7r8sfqrcf5i9-python3.12-edl-3.52.1-unstable-2024-08-27 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A edl https://github.com/r-ryantm/nixpkgs/archive/80ad5d63a16a82248414396cf28b52584a89ff80.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/80ad5d63a16a82248414396cf28b52584a89ff80#edl

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/m8hj3dvwfli8qwa3zl4y7r8sfqrcf5i9-python3.12-edl-3.52.1-unstable-2024-08-27
ls -la /nix/store/m8hj3dvwfli8qwa3zl4y7r8sfqrcf5i9-python3.12-edl-3.52.1-unstable-2024-08-27/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

edl
edl.dist

Maintainer pings
cc @lorenz @xddxdd for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

@NixOS/nixpkgs-merge-bot merge


Question: Is there an easy way to get this kind of information

With the JSON method I can return a json string with all the objects that are inside the PDF.
One of the objects contains the information below.
    "2 0 R": {
      "/Author": "",
      "/CreationDate": "D:20190812073543",
      "/Creator": "ECM Document Services",
      "/ModDate": "D:20190812073543+02'00'",
      "/Producer": "ECM Document Services",
      "/Subject": ""
    },

Is there a way so that I always only get this information back? I want to parse this information out of the json string but I need to find it somehow.

You have to understand the PDF spec to mine information from the JSON in general. For example, this stuff comes from the information dictionary which is the destination of /Info in the trailer dictionary, so the "trailer" entry will have an /Info key with the value "2 0 R". Note that I am changing this around for json v2 which will be more powerful. You will still have to understand the PDF specification to mine the PDF for information using JSON though. Think of it is just a simpler syntax for the semantics.