[BUG]: AVFoundationErrorDomain on iOS when playing .mp3 file

Version
v6 (Beta)
also happened on v0 (Beta)
What platforms are you having the problem on?
iOS
Architecture
New architecture with interop layer
What happened?
We are receiving numerous Sentry alerts indicating there is an error loading / playing the video.
The error is as follows:
{
  "error": {
    "code": -11800,
    "domain": "AVFoundationErrorDomain",
    "localizedFailureReason": "An unknown error occurred (-66637)",
    "localizedDescription": "The operation could not be completed",
    "localizedRecoverySuggestion": ""
  },
  "target": 6499
}

The error seems to be specific to iOS, regardless of model or iOS version.
It does not happen to everyone, but seems to almost happen randomly
Reproduction
Unable to provide specific steps to reproduce as the exact source of the problem is yet to be found, but this is a sample of the code we use:
interface RecordSilentVideoProps {
	updateTimer: () => void
}

export const SILENT_AUDIO = require(':/sounds/1-minute-of-silence.mp3')
export const BACKGROUND_TIMER_UPDATE_INTERVAL = isAndroid() ? ONE_SEC_MS * 2 : ONE_SEC_MS

/**
* Update the workout timer when the app goes into the background
* using the <Video> component.
*/
const updateTimer = useCallback(() => {
  if (!isInForeground && isCountdownRunning) {
	  countdownTimer.updateTime()
  } else if (!isInForeground && !isInactive) {
	  updateTimerBackground()
	  if (isIOSDevice) {
		  refreshLiveActivity()
	  }
  }
}, [
  countdownTimer,
  isCountdownRunning,
  isIOSDevice,
  isInForeground,
  isInactive,
  refreshLiveActivity,
  updateTimerBackground,
])

const RecordSilentVideo = ({ updateTimer }: RecordSilentVideoProps) => {
	const videoRef = useRef<VideoRef>(null)

	const handleStateChange = useCallback((state: OnPlaybackStateChangedData) => {
		// if for any reason the video playback stops, force resume it
		if (!state.isPlaying) {
			videoRef.current?.resume()
		}
	}, [])

	const handleError = useCallback((e: OnVideoErrorData) => {
		log.error('ROD: Android Video Error', e)
	}, [])

	const handleUpdateTimer = useCallback(() => {
		updateTimer()
	}, [updateTimer])

	return (
		<Video
			style={{ height: SPACING.s2, width: SPACING.s2 }}
			ref={videoRef}
			source={SILENT_AUDIO}
			repeat
			paused={false}
			rate={1.0}
			controls={false}
			mixWithOthers={MixWithOthersType.MIX}
			disableFocus
			focusable={false}
			disableDisconnectError
			playWhenInactive
			muted
			playInBackground
			preventsDisplaySleepDuringVideoPlayback
			ignoreSilentSwitch={IgnoreSilentSwitchType.IGNORE}
			bufferConfig={{
				minBufferMs: 0,
				maxBufferMs: 0,
				bufferForPlaybackMs: 0,
				bufferForPlaybackAfterRebufferMs: 0,
			}}
			progressUpdateInterval={BACKGROUND_TIMER_UPDATE_INTERVAL}
			onProgress={handleUpdateTimer}
			onPlaybackStateChanged={handleStateChange}
			onError={handleError}
		/>
	)
}

export default RecordSilentVideo

The error reported to Sentry is being invoked by handleError.
Any suggestions to find the root of this problem will be much appreciated - thanks in advance!

Hey, I tried to reproduce it, but I was unsuccessful 😐 - I guess without stack trace there is nothing we can do

We seem to have a couple of error codes commonly coming through:
-11819 (mediaServicesWereReset) https://developer.apple.com/documentation/avfoundation/averror/code/mediaserviceswerereset/
-11800 (unknown)
https://developer.apple.com/documentation/avfoundation/averror/code/unknown/
This is one of our stack traces. Hopefully it is helpful
{
  "error": {
    "domain": "AVFoundationErrorDomain",
    "localizedFailureReason": "An unknown error occurred (-66637)",
    "localizedDescription": "The operation could not be completed",
    "localizedRecoverySu...
  at customTransport(src/utils/logger.ts:15:27)
  at this._sendToTransport(node_modules/react-native-logs/dist/index.js:141:32)
  at this._log(node_modules/react-native-logs/dist/index.js:115:45)
  at handleError(src/components/RecordSilentVideo/RecordSilentVideo.tsx:29:12)
  at onVideoError(node_modules/react-native-video/src/Video.tsx:284:16)
  at apply(native)
  at invokeGuardedCallbackImpl(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:22:15)
  at apply(native)
  at invokeGuardedCallback(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:40:34)
  at apply(native)
  at invokeGuardedCallbackAndCatchFirstError(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:53:30)
  at executeDispatch(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:73:42)
  at executeDispatchesAndReleaseTopLevel(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1125:24)
  at call(native)
  at forEachAccumulated(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:361:63)
  at anonymous(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1160:25)
  at batchedUpdatesImpl(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:8457:14)
  at batchedUpdates(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1106:30)
  at _receiveRootNodeIDEvent(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1137:17)
  at <object>.receiveEvent(node_modules/react-native/Libraries/Renderer/implementations/ReactNativeRenderer-prod.js:1178:28)
  at apply(native)
  at <object>.__callFunction(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:433:34)
  at anonymous(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:113:26)
  at <object>.__guard(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:368:11)
  at <object>.callFunctionReturnFlushedQueue(node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js:112:17)

Without additionnal information, we cannot do anytrhing for this issue...
can you provide a sample mp3 url ?
did you try with the basic sample included in the repo ?

Hey, I understand it's a difficult one to debug as we have such limited information on it. It's proven very difficult to test ourselves too, as we are unable to reproduce it too. It only seems to be coming in on a whim with no obvious trend.
We received this error stack trace come through for an Android user:
{
  "error": {
    "errorStackTrace": "androidx.media3.exoplayer.ExoPlaybackException: MediaCodecAudioRenderer error, index=1, format=Format(null, null, null, audio/mpeg, null, -1, null, [-1, -1, -1.0, null], [1, 8000]), format_supported=YES\n\tat androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:601)\n\tat android.os.Handler.dispatchMessage(Handler.java:102)\n\tat android.os.Looper.loopOnce(Looper.java:233)\n\tat android.os.Looper.loop(Looper.java:344)\n\tat android.os.HandlerThread.run(HandlerThread.java:67)\nCaused by: androidx.media3.exoplayer.audio.AudioSink$InitializationException: AudioTrack init failed 0 Config(8000, 4, 5184) Format(null, null, null, audio/raw, null, -1, null, [-1, -1, -1.0, null], [1, 8000])\n\tat androidx.media3.exoplayer.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:2109)\n\tat androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrack(DefaultAudioSink.java:1019)\n\tat androidx.media3.exoplayer.audio.DefaultAudioSink.buildAudioTrackWithRetry(DefaultAudioSink.java:997)\n\tat androidx.media3.exoplayer.audio.DefaultAudioSink.initializeAudioTrack(DefaultAudioSink.java:789)\n\tat androidx.media3.exoplayer.audio.DefaultAudioSink.handleBuffer(DefaultAudioSink.java:875)\n\tat androidx.media3.exoplayer.audio.MediaCodecAudioRenderer.processOutputBuffer(MediaCodecAudioRenderer.java:712)\n\tat androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1940)\n\tat androidx.media3.exoplayer.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:816)\n\tat androidx.media3.exoplayer.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:1047)\n\tat androidx.media3.exoplayer.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:522)\n\t... 4 more\n\tSuppressed: androidx.media3.exoplayer.audio.AudioSink$InitializationException: AudioTrack init failed 0 Config(8000, 4, 5184) Format(null, null, null, audio/raw, null, -1, null, [-1, -1, -1.0, null], [1, 8000])\n\t\t... 14 more\n\tCaused by: java.lang.UnsupportedOperationException: Cannot create AudioTrack\n\t\tat android.media.AudioTrack$Builder.build(AudioTrack.java:1308)\n\t\tat androidx.media3.exoplayer.drm.FrameworkMediaDrm$$ExternalSyntheticApiModelOutline0.m(Unknown Source:0)\n\t\tat androidx.media3.exoplayer.audio.DefaultAudioSink$Configuration.createAudioTrackV29(DefaultAudioSink.java:2158)\n\t\tat androidx.media3.exoplayer.audio.DefaultAudioSink$Configuration.createAudioTrack(DefaultAudioSink.java:2136)\n\t\tat androidx.media3.exoplayer.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:2101)\n\t\t... 13 more\nCaused by: java.lang.UnsupportedOperationException: Cannot create AudioTrack\n\tat android.media.AudioTrack$Builder.build(AudioTrack.java:1308)\n\tat androidx.media3.exoplayer.drm.FrameworkMediaDrm$$ExternalSyntheticApiModelOutline0.m(Unknown Source:0)\n\tat androidx.media3.exoplayer.audio.DefaultAudioSink$Configuration.createAudioTrackV29(DefaultAudioSink.java:2158)\n\tat androidx.media3.exoplayer.audio.DefaultAudioSink$Configuration.createAudioTrack(DefaultAudioSink.java:2136)\n\tat androidx.media3.exoplayer.audio.DefaultAudioSink$Configuration.buildAudioTrack(DefaultAudioSink.java:2101)\n\t... 13 more\n",
    "errorCode": "25001",
    "errorException": "androidx.media3.exoplayer.ExoPlaybackException: MediaCodecAudioRenderer error, index=1, format=Format(null, null, null, audio/mpeg, null, -1, null, [-1, -1, -1.0, null], [1, 8000]), format_supported=YES",
    "errorString": "ExoPlaybackException: ERROR_CODE_AUDIO_TRACK_INIT_FAILED"
  }
}

which looks as if it's attempted to load a .mp3 file as an mpeg.
For our next release I've changed the source loading to use the uri with type object, forcing it to load as an mp3 instead of mpeg. I'm not sure it will make a huge difference but you never know!
If there's anything else in that error trace which might be useful, please let me know.
It's just a local file which is loaded (see attached):
export const SILENT_AUDIO = require(':/sounds/1-minute-of-silence.mp3')
You can see in the screenshot the file properties.

This is still happening


Card icon is not displayed in Viva Connections Mobile (Teams app)

The fluent UI icon is displayed in the dashboard when using the desktop browser but not when using the Teams app on the phone.
It displays a cloud instead:
DESKTOP:

MOBILE:

CODE SAMPLE:
protected get iconProperty(): string {
	return 'AlertSolid';
}

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

ID: 85245633-6fa2-0c62-7d63-17a6245a3da2
Version Independent ID: 85245633-6fa2-0c62-7d63-17a6245a3da2
Content: Known issues for Adaptive Cards in Viva Connections Mobile
Content Source: docs/spfx/viva/known-issues-adaptive-cards.md
Product: sharepoint
Technology: sharepoint-framework
GitHub Login: @VesaJuvonen
Microsoft Alias: vesaj

Currently only a subset of the fluent UI Icons are supported in the mobile app.  The current workaround is to include the icon itself in the solution vs. referencing it by name.  We will get a list of the supported icons published (although you can see what is supported by using the "URL Card" and viewing the icons from the picker.)


Removing vendored in google.cloud.streaming.

Done simply via:
$ git rm -fr core/google/cloud/streaming/
$ git rm -fr core/tests/unit/streaming/

Towards #1998.

This LGTM - if any test failures arise can we address those in separate PRs and rebase this one along?

Also this won't run system tests - can we verify system tests for impact packages?

@jonparrott I just pushed https://github.com/GoogleCloudPlatform/google-cloud-python/tree/remove-streaming so we can run system tests.
FWIW the "first run" after merging #3555 failed due to BigQuery timeouts (no idea why).

OK https://circleci.com/gh/GoogleCloudPlatform/google-cloud-python/2515 and https://circleci.com/gh/GoogleCloudPlatform/google-cloud-python/2511 have failed in the same way, but at HEAD, the system tests continue to pass on my local machine (even when setting CIRCLE_BUILD_NUM).
I added a "nonsense" commit to force pytest to emit native Python tracebacks (I have never gotten used to pytest tracebacks)

As a small solace, the unit tests are all good:
https://circleci.com/gh/GoogleCloudPlatform/google-cloud-python/tree/pull%2F3654

I think the BigQuery issue is just some intermittent failures in BigQuery. The latest build (https://circleci.com/gh/GoogleCloudPlatform/google-cloud-python/2518) only failed in 3.6 and only on one test case.

Merge. Let's re-validate system tests before release.
On Fri, Jul 21, 2017, 4:02 PM Danny Hermes<EMAIL_ADDRESS>wrote:

I think the BigQuery issue is just some intermittent failures in BigQuery.
The latest build (
https://circleci.com/gh/GoogleCloudPlatform/google-cloud-python/2518)
only failed in 3.6 and only on one test case.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/google-cloud-python/pull/3654#issuecomment-317131665,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPUc90zyN13jES8E4zlyxrnIJOIRyhzks5sQS4bgaJpZM4Of7Pp
.

Haha OK!

As suspected, BigQuery unit tests are back to passing: https://circleci.com/gh/GoogleCloudPlatform/google-cloud-python/2520
Though those logging tests seem determined to never pass

You mean system tests?
On Fri, Jul 21, 2017, 4:52 PM Danny Hermes<EMAIL_ADDRESS>wrote:

As suspected, BigQuery unit tests are back to passing:
https://circleci.com/gh/GoogleCloudPlatform/google-cloud-python/2520
Though those logging tests seem determined to never pass
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/google-cloud-python/pull/3654#issuecomment-317137036,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPUcwmKMnyi0GA9ibhoUEG4LPKRrk_qks5sQTnCgaJpZM4Of7Pp
.

I do mean system tests, thank you

Good deal. Thanks.
On Fri, Jul 21, 2017, 5:00 PM Danny Hermes<EMAIL_ADDRESS>wrote:

I do mean system tests, thank you
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/google-cloud-python/pull/3654#issuecomment-317137829,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPUc2lk5ZCI6AZ-rAI9GtQ_apNP2Gciks5sQTuHgaJpZM4Of7Pp
.


[Upgrade] support vue3

[Upgrade] support vue3

[X] Install dependencies for build vue3 version
[X] Refactoring code Clamp.js to Clamp.js composition API style of vue3

@Justineo  Hi can you consider my PR for vue3?

Thank you for the PR! Ideally I want to support both Vue 2/3 with the same source code (with the help of vue-demi) and planned to refactor source code into TypeScript. But we can temporarily create a Vue 3 compatible branch and ship this.


How do you debug or visualize the database?

Hello,
I was wondering if there is a solution to "visualize" and debug the database tables (and the content)?
Maybe something like PhpMyAdmin or like the browser inspector for indexedDB.
Thank you for your help!

I found a solution, I don't know if it's the more effective:

download and install this extension: https://chromewebstore.google.com/detail/acndjpgkpaclldomagafnognkcgjignd?hl=fr
it give you the possibility to download the .sqlite3 file
then use a webapp or an app to display the content of the file. Here are some apps I found : (https://inloop.github.io/sqlite-viewer/, https://sqliteviewer.app/, https://sqlitebrowser.org/)

Let me know if you have a lighter solution :)

Yeah, that's exactly what I would have recommended.


Failed at the<EMAIL_ADDRESS>install script..

After upgarding my Raspi Zero (headless) and upgrading npm to the latest I cannot run npm install usb successfully:
root@zero0:/home/pi# npm install usb

><EMAIL_ADDRESS>install /home/pi/node_modules/usb
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download: https://github.com/tessel/node-usb/releases/download/1.2.0/usb_bindings-v1.2.0-node-v48-linux-arm.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for<EMAIL_ADDRESS>and<EMAIL_ADDRESS>(node-v48 ABI) (falling back to source compile with node-gyp)
gyp WARN EACCES user "root" does not have permission to access the dev dir "/root/.node-gyp/6.9.1"
gyp WARN EACCES attempting to reinstall using temporary dev dir "/home/pi/node_modules/usb/.node-gyp"
make: Entering directory '/home/pi/node_modules/usb/build'
make: *** No rule to make target '../.node-gyp/6.9.1/include/node/common.gypi', needed by 'Makefile'.   System Linux 4.4.50+
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--module=/home/pi/node_modules/usb/src/binding/usb_bindings.node" "--module_name=usb_bindings" "--module_path=/home/pi/node_modules/usb/src/binding"
gyp ERR! cwd /home/pi/node_modules/usb
gyp ERR! node -v v6.9.1
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok
node-pre-gyp ERR! build error
node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/home/pi/node_modules/usb/src/binding/usb_bindings.node --module_name=usb_bindings --module_path=/home/pi/node_modules/usb/src/binding' (1)
node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/home/pi/node_modules/usb/node_modules/node-pre-gyp/lib/util/compile.js:83:29)
node-pre-gyp ERR! stack     at emitTwo (events.js:106:13)
node-pre-gyp ERR! stack     at ChildProcess.emit (events.js:191:7)
node-pre-gyp ERR! stack     at maybeClose (internal/child_process.js:877:16)
node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)
node-pre-gyp ERR! System Linux 4.4.50+
node-pre-gyp ERR! command "/usr/local/bin/node" "/home/pi/node_modules/usb/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"
node-pre-gyp ERR! cwd /home/pi/node_modules/usb
node-pre-gyp ERR! node -v v6.9.1
node-pre-gyp ERR! node-pre-gyp -v v0.6.30
node-pre-gyp ERR! not ok
Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --module=/home/pi/node_modules/usb/src/binding/usb_bindings.node --module_name=usb_bindings --module_path=/home/pi/node_modules/usb/src/binding' (1)
npm WARN enoent ENOENT: no such file or directory, open '/home/pi/package.json'
npm WARN pi No description
npm WARN pi No repository field.
npm WARN pi No README data
npm WARN pi No license field.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR<EMAIL_ADDRESS>install: `node-pre-gyp install --fallback-to-build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-pre-gyp install --fallback-to-build'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the usb package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-pre-gyp install --fallback-to-build
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs usb
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls usb
npm ERR! There is likely additional logging output above.

npm ERR!  It works now when I install it with the pi user.
But at the beginning I still read
...
><EMAIL_ADDRESS>install /home/pi/node_modules/usb
> node-pre-gyp install --fallback-to-build

node-pre-gyp ERR! Tried to download: https://github.com/tessel/node-usb/releases/download/1.2.0/usb_bindings-v1.2.0-node-v48-linux-arm.tar.gz
node-pre-gyp ERR! Pre-built binaries not found for<EMAIL_ADDRESS>and<EMAIL_ADDRESS>(node-v48 ABI) (falling back to source compile with node-gyp)

But I tested the usb module, and it works fine.


Storage: Resumable uploads should retry on 400

Under some race conditions, the server may return HTTP 400 for PUT uploads. We should retry on this case.
Changes will be needed in the handwritten layer of Storage and in Google.Apis.Upload.ResumableUpload.

Closing, as per internal discussion this doesn't affect our client library.


Target .net standard 2.1

Don't need to explicitly target .net core 3 since supporting .net standard 2.0 is good enough to allow its use.
Targeting .net standard will allow for implementing newer parts of the ado specification. e.g. issue #100 (async api)


Add deferred example

Add deferred shading example.
It demonstrates the use of render targets and uniform buffers.

Thanks @serpis, looking forward to it!


Update tailwindcss to 0.5.2

Closes #23
IMHO It'd make maintenance easier just shipping a slightly modified version of the default config from tailwind init instead of separating everything into submodules. Thoughts?
✨ 🚀

@jpadilla thank you so much for this PR!
I agree maintenance is tougher with the submodules, but I think it really improves the dev experience... I use +P then type "weights" to pull open the font weights module for example.
If it becomes too crazy we could have the generator crawl the default config and create the submodule files programmatically. Just a thought.
Thanks again!

This will be a breaking change, so we'll bump to v0.5 right? What are the upgrade steps?

@samselikoff thanks for merging! Bumping up to v0.5 makes sense. Upgrading will probably only require running generator again.

If it becomes too crazy we could have the generator crawl the default config and create the submodule files programmatically. Just a thought.

☝  I'd love to help with that.


refactor(mercury): Optimize decoding time by skipping renaming

In the save_to_file function of cache_object.rs, we previously written data to a temporary file and then renamed it to the final path. This process introduced additional I/O overhead due to the creation and renaming of temporary files (see the flamegraph).

This change modifies the function to write directly to the target file. By doing so, we eliminate the need for temporary files and the renaming operation, reducing I/O operations and improving performance.
It can be observed that decoding time of the test test_pack_decode_with_large_file_with_delta_without_ref reduced from ~26s to ~21s (~20% improvement) on a Macbook Air M2 device.

Thank you for your contribution. In fact, the previous version was designed to use a technique known as “atomic writes” to prevent partially written files from being read. (On most Unix systems, mv/rename is an atomic operation. )By first writing to a temporary file and then renaming it to the target path, we ensure that readers only access fully written files, avoiding issues with incomplete data reads and potential race conditions.
Additionally, the execution time of test_pack_decode_with_large_file_with_delta_without_ref is actually quite variable due to the complex concurrent calls and scheduling at higher levels. In reality, the rename operation itself doesn’t significantly impact performance.
We appreciate your insights and analysis. If you have further suggestions or alternative ideas for optimizing performance while maintaining atomicity, we’d be glad to discuss them.

Thank you for the clarification on the atomic writes. Now I see that data races may occur if the file is read before it is completely written. I will close this PR and propose a new one when I have a better idea for optimization. I thought in-memory atomic data structures or file locks could be utilized.

Besides, I'm current on a student project which is related to the mega project, more specifically, the mercury crate. However, the instructions for contributing to this crate are not clear to me (for instance, the README file is empty and there are few to no related issues). @Hou-Xiaoxuan @genedna Could you please provide me with some guidance on what can be done to contribute to this crate?
Thanks in advance.

@el-ev  Mercury serves as a foundational module within the project rather than an entry point. Broadly speaking, it contains basic data structures and functionalities related to Git, such as the encoding and decoding functions for git index file. Currently, there are some performance issues with the decoding function, as noted in Issue #600, for which there is a temporary but suboptimal solution. If you’re interested in optimizations, you could look into implementing a more efficient diff algorithm, though this is quite challenging.
Alternatively, if you’re open to contributing beyond the Mercury module, the Libra module might be a good option. Libra is a Rust-based implementation of Git, with some commands yet to be implemented. Additionally, it has more comprehensive documentation and contribution guidelines.


Push notifications not playing default sound

I am facing an issue where push notifications successfully arrive to the user, but no default OS notification sound is played.
Notifications themselves work fine and the phone is not in silent mode. Is any additional setup needed, to make the default OS sound work?

Hi @karel-suchomel-ed please check payload of your Push.
There should be
{
    "to" : "DEVICE-TOKEN",
    "notification" : {
      "body"  : "NOTIFICATION BODY",
      "title" : "NOTIFICATION TITILE",
      "sound" : "default"
    }
  }

"default" value in sound.

Hi @adam1929 thank you for your feedback, unfortunately, the issue still persists. I'm testing notifications through the Bloomreach admin and even if I specify the sound parameter as "default" I still don't get any sound or vibration.
This is what it looks like in a builder:
{
    "title": "Notification title",
    "action": "app",
    "actions": [],
    "message": "Message",
    "sound": "default"
}

@adam1929  I am facing the same issue. Triggering notification from bloomreach dashboard and setting sound to default.
My payload looks like this. But still no notification sound in iOS.
{
action = deeplink;
aps =     {
alert =         {
body = "test push";
title = "Notification title";
};
"mutable-content" = 1;
};
sound = default;
};

Hi @karel-suchomel-ed is this issue still occuring?
Your notification data payload seems valid. We are not able to reproduce issue. There could be another limitation given by system especially for notification importance: https://developer.android.com/develop/ui/views/notifications#importance
If issue peersists, please contact support with application logs.
Thank you

Hi @karel-suchomel-ed were you able to simulate issue on latest SDK? Or did you contact support? Thank you

HI @adam1929 i missed the first message sorry. It is resolved and working, I managed to fix it back then but I don't remember what was the cause :D


Event Title Duplication Prevention

Resolves: MWPW-NUMBER Pending
Test URLs:

Before: https://dev--ecc-milo--adobecom.hlx.page/
After: https://event-duplication-check--ecc-milo--adobecom.hlx.page/

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 67.36%. Comparing base (13516fc) to head (0385643).
Report is 62 commits behind head on dev.

Additional details and impacted files
@@            Coverage Diff             @@
##              dev     #200      +/-   ##
==========================================
+ Coverage   67.22%   67.36%   +0.13%
==========================================
  Files           2        2
  Lines         238      239       +1
==========================================
+ Hits          160      161       +1
  Misses         78       78

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

looks like there is conflict... after resolving it, this can get merged


Add IterTools PHP to Architectural section

Added IterTools PHP - A library that provides functionality for working with iterable entities (similar to itertools library in Python).

Seems equivalent to https://github.com/nikic/iter !

@llaville, thanks for feedback!
PHP iterTools is similar to iter but not equivalent because it provides a lot more functionality. Please look at the documentation in the README of the project.

Functions provided by iter (41):

all
any
apply
chain
chunk
chunkWithKeys
count
drop
dropWhile
enumerate
filter
flatMap
flatten
flip
fromPairs
isEmpty
isIterable
join
keys
map
mapKeys
mapWithKeys
product
range
recurse
reduce
reductions
reindex
repeat
search
slice
split
take
takeWhile
toArray
toArrayWithKeys
toIter
toPairs
values
zip
zipKeyValue

Methods provided by IterTools PHP (78 excluding steam functionality):

allMatch
anyMatch
arePermutations
arePermutationsCoercive
asort
chain
choice
chunkwise
chunkwiseOverlap
coinFlip
compress
compressAssociative
count
cycle
distinct
dropWhile
exactlyN
filter
filterFalse
filterKeys
filterTrue
flatMap
flatten
groupBy
intersection
intersectionCoercive
isPartitioned
isReversed
isSorted
limit
map
noneMatch
number
pairwise
partialIntersection
partialIntersectionCoercive
percentage
readCsv
readLines
reindex
repeat
repeat
reverse
rockPaperScissors
runningAverage
runningDifference
runningMax
runningMin
runningProduct
runningTotal
same
sameCount
slice
sort
string
symmetricDifference
symmetricDifferenceCoercive
takeWhile
tee
toArray
toAssociativeArray
toAverage
toCount
toFirst
toFirstAndLast
toIterator
toLast
toMax
toMin
toMinMax
toProduct
toRange
toString
toSum
toValue
zip
zipEqual
zipLongest

iter provides 41 functions.
IterTools PHP provides 78 methods excluding stream functionality.

Here is a comparison:

IterTools PHP
iter

Multi::chain
chain

Multi::zip
zip

Multi::zipEqual
-

Multi::zipLongest
-

-
zipKeyValue

Single::chunkwise
chunk

Single::chunkwiseOverlap
-

-
chunkWithKeys

Single::compress
-

Single::compressAssociative
-

-
drop

Single::dropWhile
dropWhile

-
enumerate, toPairs (equivalents of each other, but not equivalents of Single::pairwise)

Single::filter
filter

Single::filterTrue
-

Single::filterFalse
-

Single::filterKeys
-

Single::flatMap
flatMap

Single::flatten
flatten

-
flip

Single::groupBy
-

-
keys

Single::limit
-

Single::map
map

-
mapKeys

-
mapWithKeys

Single::pairwise
-

-
product

Single::reindex
reindex

Single::repeat
repeat

Single::reverse
-

-
recurse

Single::slice
slice

Single::string
split

-
take

Single::takeWhile
takeWhile

Infinite::count
range

Infinite::cycle
-

Infinite::repeat
-

Random::choice
-

Random::coinFlip
-

Random::number
-

Random::percentage
-

Random::rockPaperScissors
-

Math::runningAverage
-

Math::runningDifference
-

Math::runningMax
-

Math::runningMin
-

Math::runningProduct
-

Math::runningTotal
-

Set::distinct
-

Set::intersection
-

Set::intersectionCoercive
-

Set::partialIntersection
-

Set::partialIntersectionCoercive
-

Set::symmetricDifference
-

Set::symmetricDifferenceCoercive
-

Sort::asort
-

Sort::sort
-

File::readCsv
-

File::readLines
-

-
fromPairs

Transform::tee
-

Transform::toArray
toArray

Transform::toAssociativeArray
toArrayWithKeys

Transform::toIterator
toIter

Summary::allMatch
all

Summary::anyMatch
any

Summary::arePermutations
-

Summary::arePermutationsCoercive
-

Summary::exactlyN
-

-
isEmpty

-
isIterable

Stream::callForEach
apply

Summary::isPartitioned
-

Summary::isSorted
-

Summary::isReversed
-

Summary::noneMatch
-

Summary::same
-

Summary::sameCount
-

-
reductions

-
search

Reduce::toAverage
-

Reduce::toCount
count

Reduce::toFirst
-

Reduce::toFirstAndLast
-

Reduce::toLast
-

Reduce::toMax
-

Reduce::toMin
-

Reduce::toMinMax
-

Reduce::toProduct
-

Reduce::toRange
-

Reduce::toString
join

Reduce::toSum
-

Reduce::toValue
reduce

-
values

@Smoren thanks for compare report

BTW, IterTools PHP is mentioned in PHP Annotated february 2023 by JetBrains.

@ziadoz thank you for merging this PR!


Concurrent conditional creates results in duplicate data

Describe the bug
When doing two conditional creates simultaneously (or near simultaneously) for the same resource, both are created, causing duplicate data to be stored in the system
FHIR Version?
Stu3/R4
Data provider?
CosmosDB/SQL Server
To Reproduce
Steps to reproduce the behavior:
Following are the steps the customer is following
1 Delete all existing  patient data from their instance.
2. Make concurrent ‘Create Patient’ requests with ‘If-None-Exist:’ with a patient Identifier as  a header parameter.
Expected behavior
Receive the 412 response for the 2nd create patient request that hits the Azure API for FHIR instance.
Actual behavior
2nd patient is created as a duplicate

AB#76902 and AB#76903 to address in SQL and Cosmos

I have just ran into the same issue. I can see there was a PR to fix it: #1386.
@brendankowitz,  what was the reason it has been closed and not merged?

AB#87262

We have noticed the same issue with conditional creates in our environment. A quick python script to recreate the issue is attached - please note this is "flaky" as the server sometimes does only create one resource!
Is there any way of configuring the system or sending a request so that the server will apply a "stronger" uniqueness condition ?
We have also noticed that the issue occurs much more frequently if the server is under more load, and especially when the CosmosDB is reaching the throttled/configured RU limit. Does anyone have any recommended mitigations for this issue?
FHIR Version?
R4
Data provider?
CosmosDB
Recreate script
# requirements
# pip install requests fhir.resources==6.1.0

# Recreate conditional create issue with Azure API for FHIR.
# tested with
#   python 3.9
#   Azure API for FHIR: fhir-R4, CosmosDB (1000 RUs)

import time
import uuid

from datetime import datetime, timezone
from concurrent.futures import ThreadPoolExecutor
from urllib.parse import urlencode

import requests

from fhir.resources.bundle import Bundle
from fhir.resources.identifier import Identifier
from fhir.resources.patient import Patient

# configure environment and auth
FHIR_SERVER_ADDRESS = ''
AZURE_TENANT_ID = ''
OAUTH_CLIENT_ID = ''
OAUTH_CLIENT_SECRET = ''

# configure request flooding
NUM_SIMULTANEOUS_CREATE_ATTEMPTS = 5
NUM_TOTAL_CREATE_ATTEMPTS = 5

# simple OAuth2 client-credentials flow to get a bearer token for the test lifetime
# replace this with your auth of choice
oauth_response = requests.post(
    url=f'https://login.microsoftonline.com/{AZURE_TENANT_ID}/oauth2/v2.0/token',
    headers={
        'Accept': 'application/json',
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    data={
        'client_id': OAUTH_CLIENT_ID,
        'client_secret': OAUTH_CLIENT_SECRET,
        'grant_type': 'client_credentials',
        'scope':  f'{FHIR_SERVER_ADDRESS}/.default'
    }
)
oauth_response.raise_for_status()
authorization_header = f"Bearer {oauth_response.json()['access_token']}"

resource_to_spam = Patient(
    identifier=[
        Identifier(system="conditional_create_test",
                   value=str(uuid.uuid4()))
    ],
    # some other random properties, not important
    active=True,
    deceasedBoolean=False,
)

def attempt_resource_create(resource):
    request_started_at = datetime.now(timezone.utc)
    response = requests.post(
        url=f"{FHIR_SERVER_ADDRESS}/{resource.resource_type}",
        data=resource.json(),
        headers={
            'Authorization': authorization_header,
            'If-None-Exist': urlencode({'identifier': f'{resource.identifier[0].system}|{resource.identifier[0].value}'}),
            'Content-Type': 'application/fhir+json',
        }
    )
    request_finished_at = datetime.now(timezone.utc)
    return response, request_started_at, request_finished_at

def warm_up_threadpool(threadpool, num_worker_threads):
    # use a sleep task to force the threadpool implementation to pre-spawn all the worker threads
    # this removes the thread creation overhead when checking for race conditions over HTTP
    def _dummy_task():
        time.sleep(1)

    for task in [threadpool.submit(_dummy_task) for _ in range(2 * num_worker_threads)]:
        _ = task.result()

with ThreadPoolExecutor(max_workers=NUM_SIMULTANEOUS_CREATE_ATTEMPTS) as threadpool:
    warm_up_threadpool(threadpool, NUM_SIMULTANEOUS_CREATE_ATTEMPTS)
    attempt_create_tasks = [
        threadpool.submit(attempt_resource_create, resource_to_spam)
        for _ in range(NUM_TOTAL_CREATE_ATTEMPTS)
    ]

# give the server a little break to sync before checking result
# this should not be required, but given this script is recreating a race condition ... let's be safe
time.sleep(2)

search_response = requests.get(
    url=f"{FHIR_SERVER_ADDRESS}/{resource_to_spam.resource_type}",
    params={'identifier': f'{resource_to_spam.identifier[0].system}|{resource_to_spam.identifier[0].value}'},
    headers={
        'Authorization': authorization_header,
        'Accept': 'application/json',
    }
)
search_response_bundle = Bundle.parse_raw(search_response.text)
print(f"Attempted create {NUM_TOTAL_CREATE_ATTEMPTS} times, created {len(search_response_bundle.entry or [])} resources.")
print(f"Resource ids:")
for entry in search_response_bundle.entry or []:
    print(f"{entry.resource.resource_type}/{entry.resource.id} created at {entry.resource.meta.lastUpdated}")

print("Request Summary")
for task in attempt_create_tasks:
    response, request_started_at, request_finished_at = task.result()
    print(f"Response {response.status_code} between {request_started_at} and {request_finished_at}")

Example output:
Attempted create 5 times, created 4 resources.
Resource ids:
Patient/b3dad015-cffc-449e-aaed-3359e9f389ee created at 2023-06-23 06:53:23.859000+00:00
Patient/2b174187-b446-44db-8a8c-01181214b2cb created at 2023-06-23 06:53:23.860000+00:00
Patient/410a5cc7-d16b-4ee9-ba59-7f20399df623 created at 2023-06-23 06:53:23.861000+00:00
Patient/b3e7ea02-b536-434b-a6c2-f172e33253c5 created at 2023-06-23 06:53:23.861000+00:00
Request Summary
Response 201 between 2023-06-23 06:53:30.451094+00:00 and 2023-06-23 06:53:30.621145+00:00
Response 201 between 2023-06-23 06:53:30.451094+00:00 and 2023-06-23 06:53:30.633846+00:00
Response 200 between 2023-06-23 06:53:30.452072+00:00 and 2023-06-23 06:53:30.622115+00:00
Response 201 between 2023-06-23 06:53:30.452072+00:00 and 2023-06-23 06:53:30.626023+00:00
Response 201 between 2023-06-23 06:53:30.452072+00:00 and 2023-06-23 06:53:30.616253+00:00

This is still an issue for us, could this be looked at, please?

Thanks for raising the issue and we will look into the same.
549359380


Add metadata check for all the API

Context
This PR makes all our endpoints sure that
a) they all handle metadata correctly, and
b) they share behaviour where appropriate (eg error responses)
Changes proposed in this pull request
Uses a class for metadata to handle the validations
Guidance to review
Start from the specs
Link to Trello card
https://trello.com/c/0MMZ89jv/1084-support-metadata-and-error-responses-across-all-api-endpoints

OK, did some fixing up:

rename BadRequestBody to UnprocessableEntity bc that's what it is and it maps exactly to 422
extracted the valid_meta definition to the VendorApiSpecHelper's request method
started rendering multiple validation errors in error responses (props Al D)
fixed a couple of typos and redundancies

It looks good to me, but I cannot accept it 😄


Crash while serializing request URI (ubuntu only)

Bugs
If you find a bug, please submit a pull request with a failing test case displaying the bug or just create an issue with as much information as possible.

*** Error in `.build/debug/App': corrupted double-linked list: 0x00007f3864027f60 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7f387c7827e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x7e6f8)[0x7f387c7896f8]
/lib/x86_64-linux-gnu/libc.so.6(+0x813be)[0x7f387c78c3be]
/lib/x86_64-linux-gnu/libc.so.6(__libc_malloc+0x54)[0x7f387c78e5d4]
/home/xxx/.swiftenv/versions/3.1/usr/lib/swift/linux/libFoundation.so(+0x32a9d4)[0x7f387e2d39d4]
/home/xxx/.swiftenv/versions/3.1/usr/lib/swift/linux/libFoundation.so(CFCharacterSetAddCharactersInString+0x144)[0x7f387e2cdb64]
/home/xxx/.swiftenv/versions/3.1/usr/lib/swift/linux/libFoundation.so(CFCharacterSetCreateWithCharactersInString+0x159)[0x7f387e2cdfc9]
/home/xxx/.swiftenv/versions/3.1/usr/lib/swift/linux/libFoundation.so(+0x36d330)[0x7f387e316330]
/home/xxx/.swiftenv/versions/3.1/usr/lib/swift/linux/libdispatch.so(dispatch_once_f+0x3b)[0x7f387f48c00b]
/home/xxx/.swiftenv/versions/3.1/usr/lib/swift/linux/libFoundation.so(_CFURLComponentsGetURLQueryAllowedCharacterSet+0x2a)[0x7f387e3140fa]
/home/xxx/.swiftenv/versions/3.1/usr/lib/swift/linux/libFoundation.so(_TZFC10Foundation14NSCharacterSetg15urlQueryAllowedVS_12CharacterSet+0xc)[0x7f387e5f329c]
call is coming from Request at let encoded = q.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
Not really sure what to do about this, since it's probably a swift bug. Does anyone have a reference to a reported bug or a workaround?
The query string that is crashing :
▿ 5 elements
  ▿ 0 : 2 elements
    - key : "legal_entity[type]"
    - value : "company"
  ▿ 1 : 2 elements
    - key : "managed"
    - value : true
  ▿ 2 : 2 elements
    - key : "metadata[id]"
    - value : "28"
  ▿ 3 : 2 elements
    - key : "email"
    - value<EMAIL_ADDRESS>  ▿ 4 : 2 elements
    - key : "country"
    - value : "US"

which version of the engine package are you using?

1.3.12

Hmm. Definitely seems like a Swift bug. Try upgrading to Swift 3.1 if you can. If it continues to be an issue we can look into workarounds / using vapor/core methods instead.

Closing due to inactivity. Feel free to reopen if you have any updates. Thanks!


Optical Flow demo error.

First of all, I would like to thank the creator of this project for his excellent work :)
Along with this, I have been testing the "Optical Flow" demo using Google Chrome v.108.0.5359.125 (Official Build) (64 bits), and when  I click over a person in the video the demo stops, showing the following error on the console :
Uncaught TypeError: Cannot read properties of undefined (reading 'x')
at renderFlowVectors (optical-flow.html:307:41)
at render(optical-flow.html:219:17)
What could be happening? It seems that this problem does not occur in Mozilla Firefox..
Regards,
Milko.

Hi Milko,
Thank you for your compliment. I appreciate it.
I will look into it.


Flow of Control

A Flow of Control need to be added in Readme to help user understand how to use the website and various functionalities of it.

Please assign me this issue and add tags iwoc and easy/medium/hard.
I received this on my mail.


Building from source caused uint issue + suggested fix

Hi,
I was on torchao 0.1. When I used pip install --upgrade torchao, it kept me on 0.1 for some reason.
So I built from source, but wanted to let you know I encountered this error initially:
D:\ao\torchao\csrc\cuda\sparse_marlin\base.h(47): error: identifier "uint" is undefined

  using FragM = Vec<uint, 1>;
                    ^

I asked Claude to review, and it gave me a working solution:

1. Contact the package maintainers:
If this is a public package, you could report this issue to the maintainers of the torchao package. They might need to update their code to use unsigned int instead of uint, or properly include the necessary header that defines uint.

2. Modify the source code:
Open the file D:\ao\torchao\csrc\cuda\sparse_marlin\base.h
Find line 47 (or thereabouts)
Change uint to unsigned int

Just making you aware in case that change should be made for all.
Thank you!

cc @EnragedAntelope
Thanks for flagging, could you open a PR to make those changes? Feel free to tag me for review :)

Thank you. I tried and I would love to move it forward to you but I can't believe how much personal information it wants me to populate... have not encountered this before for a simple PR.


vrouter in redundant mode acquire guest ips from first ip of the tier

Description
Vrouter in redundant mode actually acquire guest ips in a tier in a random mode.
This is painful when you use terraform or other systems to acquire specific IP because vrouter can take the one selected.
It looks like a bug more than an intended behaviour.
With this PR vrouter in redundant mode will now take first available ips in the tier which can be predicted
Types of changes

[ ] Breaking change
[ ] New feature
[x] Bug fix
[x] Enhancement
[ ] Cleanup

How Has This Been Tested?
This is tested against production which works great.
There is no unit test as it looks like there is no in this part of the code, it also not breaking anything and can be considered as a bug fix.

@ArthurHlt you use redundant vrouter? which hypervisor?

@svenvogel tnaks for reaching me. yes we use redundant vrouter on xenserver hypervisors.

@blueorangutan package

@andrijapanicsb a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✖centos6 ✔centos7 ✔debian. JID-530

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✖centos6 ✔centos7 ✔debian. JID-764

@blueorangutan test

@andrijapanicsb a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

@weizhouapache it's actually ip inside vpc tiers created by cloudstack when you set redundant mode.
There is nothing about vip or vlan context, it's only inside vpc.
By the way, when you are not in redundant mode, vrouter take the first ip in tiers.

@weizhouapache it's actually ip inside vpc tiers created by cloudstack when you set redundant mode.
There is nothing about vip or vlan context, it's only inside vpc.
By the way, when you are not in redundant mode, vrouter take the first ip in tiers.
But maybe I missed something here

@ArthurHlt when you create a vpc tier, the gateway ip can be any ip in the cidr (.1, .254, .XX).
if vr is not redundant, the ip of guest nic in VR will be set to gateway ip.

@DaanHoogland @weizhouapache That's all make sense to me.
Well i want to pursue the PR for adressing these changes you have requested. I'm just wondering how to add parameters like this ? If a gentleman can give me some code to look at for adding this, i will be very pleased

@ArthurHlt if you promise never to call me a gentleman again; in the IpAddressManager that you added your new method in, you can see an example of a ConfigKey in the beginning of the interface. in IpAddressManagerImpl search for it being used (and further advertised on runtime). GuestNetworkGuru has similar config items, you can choose to put them in any Configurable.

Trillian test result (tid-928)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 39367 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr3587-t928-kvm-centos7.zip
Smoke tests completed. 79 look OK, 0 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

@blueorangutan package

@rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✖centos6 ✔centos7 ✔debian. JID-815

ping @ArthurHlt Are you going to make this for 4.14?

@blueorangutan test

@rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

ping - where do we stand on this?

ping @ArthurHlt

@weizhouapache @andrijapanicsb @DaanHoogland let's move this to next milestone if author is unable to work on it?

@weizhouapache @andrijapanicsb @DaanHoogland let's move this to next milestone if author is unable to work on it?

@rhtyd ok.

@rhtyd I want to humour authors as much as possible so let's decide on the last possible moment.

For now, i have not that much time to work on it. Looks like today can be possible for me to work on. But don't block the current milestones on it

just ping when you have an update. we don't consider it a blocker and can always update the milestone even after the release is made.

ping any update @ArthurHlt ?

I've added param for let user chose placement, let me know what you think about

@blueorangutan package

@DaanHoogland a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✖centos6 ✔centos7 ✔debian. JID-1025

@blueorangutan test

@DaanHoogland a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

Trillian test result (tid-1213)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 37389 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr3587-t1213-kvm-centos7.zip
Intermittent failure detected: /marvin/tests/smoke/test_kubernetes_clusters.py
Smoke tests completed. 83 look OK, 0 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

@weizhouapache can you give this a second look, please?

@weizhouapache thanks for the catch, i've totally forget it.
I've reworked all enum and config that i've made to be able to retrieve configkey value in router package. This actually now look more clean inside but I'm stilling feeling bad to do this in router package: https://github.com/apache/cloudstack/pull/3587/files#diff-2df46c6f8af49cedaa2a089ace159b03R890

@weizhouapache thanks for the hint, this is a better way to handle this. What's your opinion now ?

ping @weizhouapache - any chance to get it in today?

@andrijapanicsb I will test it.

@ArthurHlt can you remove some unused import ?

@weizhouapache done

@andrijapanicsb tested with isolated networks and vpc with redundant VRs. both work fine.
It is ready for merge I think.

@blueorangutan package

@andrijapanicsb a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✖centos6 ✔centos7 ✔debian. JID-1050

@blueorangutan test

@DaanHoogland a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests

nothing outstanding, LGTM*2 and tested. let's merge when the monkey agrees.

Will merge if tests are finished with no errors, despite the freeze date, as everything else is OK atm (manul test, approvals, no conflicts)

Trillian test result (tid-1243)
Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
Total time taken: 33319 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr3587-t1243-kvm-centos7.zip
Smoke tests completed. 83 look OK, 0 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File


Extension Bug — publisher:"small"

code-server version:  code-server v1.1119-vsc1.33.1
OS Version:  Ubuntu 18
Extension:
https://marketplace.visualstudio.com/items?itemName=small.php-ci

Description

Can't find the extension in marketplace.
Steps to Reproduce
Search the extension, it wouldn't be found.
Thanks for your help.

Requesting further information. Failure to reply means it was fixed in your end and I'll close this automatically after 3 days.

So I think this is because our marketplace currently doesn't handle all
types of queries and querying by publisher name is one thing that
doesn't work yet.

Actually maybe we just haven't added it yet.

@code-asher Confirm this was already added?

@sr229 I checked and it does seem to be added. However, searching with the publisher: prefix doesn't work so we should fix that.

Keeping it open till that's fixed.


[Password Recovery] "Mapped attribute cannot be found for claim" error when trying to recover password and the recovery mail not received

Describe the issue:
When a user tries to recover password from console, Mapped attribute cannot be found for claim error is logged and the recovery email is not received
How to reproduce:

Setup email configs in deployment.toml and restart IS
Setup a valid email address in a user's profile (tried with admin and a new user)
Try 'Forgot password' option in the console login screen

Outcome:

$subject (refer comment-1 for error details)
However, front-end shows a message which states the password recovery email has been sent

Expected behavior:

Receive password recovery email notification

Environment information (Please complete the following information; remove  any unnecessary fields) :

Product Version: IS 5.12 Alpha 13
OS: Windows 10
Database: H2/ MySQL
Userstore: JDBC

Optional Fields
Related issues:

Suggested labels:

Error log:
[2f889543-64ef-4afa-b0ae-4f28fff5e358] ERROR {org.wso2.carbon.identity.recovery.password.NotificationPasswordRecoveryManager} - Error occurred while checking user's local credential availability. Error message: org.wso2.carbon.user.core.UserStoreException: Mapped attribute cannot be found for claim : http://wso2.org/claims/identity/localCredentialExists in user store : PRIMARY

I could able to receive emails.

But could see below error logs in the backend
[2022-03-14 13:27:11,878] [16ed93c2-1449-4fa5-aa47-89c5beb2a990] ERROR {org.wso2.carbon.identity.recovery.password.NotificationPasswordRecoveryManager} - Error occurred while checking user's local credential availability. Error message: org.wso2.carbon.user.core.UserStoreException: Mapped attribute cannot be found for claim : http://wso2.org/claims/identity/localCredentialExists in user store : PRIMARY
https://github.com/wso2-extensions/identity-governance/blob/master/components/org.wso2.carbon.identity.recovery/src/main/java/org/wso2/carbon/identity/recovery/password/NotificationPasswordRecoveryManager.java#L276

Re-tested the scenario and the email was received as expected. Notifications from the original test execution were sent to the spam in Gmail.


Add prometheus metrics for health check results.

Closes: DNE
What's Changed
Exposes metrics for the health check results under /metrics as follows:
# HELP health_check_database_info Multiprocess metric
# TYPE health_check_database_info gauge
health_check_database_info 1.0
# HELP health_check_cache_ops_redis_info Multiprocess metric
# TYPE health_check_cache_ops_redis_info gauge
health_check_cache_ops_redis_info 0.0
# HELP health_check_redis_backend_info Multiprocess metric
# TYPE health_check_redis_backend_info gauge
health_check_redis_backend_info 1.0

I have defaulted to enabling the metrics endpoint in the development configuration. I am happy to change this back if you want.
I have explicitly added
# Custom prometheus metrics
prometheus-client = "~0.14.1"

to pyproject.toml. This is a transitive dependency through django-prometheus, so it is not technically a new dependency,
TODO

[x] Explanation of Change(s)
[x] Added change log fragment(s) (for more information see the documentation)
[x] Attached Screenshots, Payload Example
[ ] Unit, Integration Tests
[ ] Documentation Updates (when adding/changing features)
[x] Outline Remaining Work, Constraints from Design

For some reason the cache ops health check always seems to fail, but that health check is not included in the (default) /health endpoint anyway, possibly its broken?

For some reason the cache ops health check always seems to fail, but that health check is not included in the (default) /health endpoint anyway, possibly its broken?

Well we are ripping out Cacheops in 2.0 and it's already been disabled by default for new installs in 1.5.
What is the intended consumer of the /metrics endpoint?

What is the intended consumer of the /metrics endpoint?

Prometheus/Telegraf for telemetry purposes.


Switching cluster while in Apps & Marketplace takes me back to Cluster Explorer

Steps:

Have two clusters deployed
Go to Apps & Marketplace
From the cluster drop-down, switch clusters

Results:  Takes me back to Cluster Explorer.  Should leave me in Apps & Marketplace.

Duplicate of https://github.com/rancher/dashboard/issues/834


Segmentation fault (core dumped)

When I was running the training code, the following error occurred，may I ask how to solve this
python train.py
Training with GPU
Created progress directory to: /remote-home/2210975/cloth/dynamic-cloth-folding/trainings/default-run-0
Popen(['git', 'init'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/mujoco-py, universal_newlines=False, shell=None, istream=None)
Popen(['git', 'cat-file', '--batch-check'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/mujoco-py, universal_newlines=False, shell=None, istream=)
Popen(['git', 'cat-file', '--batch'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/mujoco-py, universal_newlines=False, shell=None, istream=)
Popen(['git', 'init'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/rlkit, universal_newlines=False, shell=None, istream=None)
Popen(['git', 'cat-file', '--batch-check'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/rlkit, universal_newlines=False, shell=None, istream=)
Popen(['git', 'cat-file', '--batch'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/rlkit, universal_newlines=False, shell=None, istream=)
Popen(['git', 'init'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/robosuite, universal_newlines=False, shell=None, istream=None)
Popen(['git', 'cat-file', '--batch-check'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/robosuite, universal_newlines=False, shell=None, istream=)
Popen(['git', 'cat-file', '--batch'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding/submodules/robosuite, universal_newlines=False, shell=None, istream=)
Popen(['git', 'init'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding, universal_newlines=False, shell=None, istream=None)
Popen(['git', 'cat-file', '--batch-check'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding, universal_newlines=False, shell=None, istream=)
Popen(['git', 'cat-file', '--batch'], cwd=/remote-home/2210975/cloth/dynamic-cloth-folding, universal_newlines=False, shell=None, istream=)
2023-06-13 02:32:10.319252 UTC | Variant:
2023-06-13 02:32:10.320003 UTC | {
"algorithm": "SAC",
"title": "default-run-0",
"save_folder": "/remote-home/2210975/cloth/dynamic-cloth-folding/trainings/default-run-0",
"random_seed": 0,
"randomization_kwargs": {
"lights_randomization": true,
"materials_randomization": true,
"camera_position_randomization": true,
"lookat_position_randomization": true,
"lookat_position_randomization_radius": 0.03,
"dynamics_randomization": true,
"albumentations_randomization": true,
"cloth_size": 0.2,
"camera_type": "side",
"camera_config": {
"type": "small",
"fovy_range": [
13,
15
],
"height": 100,
"width": 848
},
"position_perturbation_size": 0.2,
"rotation_perturbation_size": 0.75,
"fovy_perturbation_size": 0.05
},
"value_function_kwargs": {
"fc_layer_size": 512,
"fc_layer_depth": 5
},
"policy_kwargs": {
"input_width": 100,
"input_height": 100,
"input_channels": 1,
"kernel_sizes": [
3,
3,
3,
3
],
"n_channels": [
32,
32,
32,
32
],
"strides": [
2,
2,
2,
2
],
"paddings": [
0,
0,
0,
0
],
"hidden_sizes_aux": [
256,
8
],
"hidden_sizes_main": [
256,
256,
256,
256
],
"init_w": 0.0001,
"aux_output_size": 9
},
"env_kwargs": {
"save_folder": "/remote-home/2210975/cloth/dynamic-cloth-folding/trainings/default-run-0",
"timestep": 0.01,
"success_distance": 0.05,
"robot_observation": "ctrl",
"control_frequency": 10,
"ctrl_filter": 0.03,
"kp": 1000.0,
"frame_stack_size": 1,
"damping_ratio": 1,
"success_reward": 0,
"fail_reward": -1,
"extra_reward": 1,
"output_max": 0.03,
"max_close_steps": 10,
"sparse_dense": true,
"goal_noise_range": [
0.0,
0.03
],
"image_obs_noise_mean": 0.5,
"image_obs_noise_std": 0.5,
"model_kwargs_path": "./data/model_params.csv"
},
"eval_kwargs": {
"save_images_every_epoch": 10,
"num_runs": 20,
"max_path_length": 50,
"additional_keys": "['robot_observation']",
"frame_stack_size": 1,
"save_blurred_images": true,
"save_folder": "/remote-home/2210975/cloth/dynamic-cloth-folding/trainings/default-run-0"
},
"algorithm_kwargs": {
"num_epochs": 100,
"num_trains_per_train_loop": 1000,
"num_expl_steps_per_train_loop": 1000,
"num_train_loops_per_epoch": 20,
"max_path_length": 50,
"save_policy_every_epoch": 1,
"batch_size": 256,
"num_demoers": 0,
"save_folder": "/remote-home/2210975/cloth/dynamic-cloth-folding/trainings/default-run-0"
},
"path_collector_kwargs": {
"additional_keys": "['robot_observation']",
"demo_paths": "['./data/demos.csv']",
"demo_divider": 0.03,
"num_processes": 1
},
"replay_buffer_kwargs": {
"max_size": 100000,
"fraction_goals_rollout_goals": 0.19999999999999996,
"internal_keys": "['image', 'robot_observation']"
},
"trainer_kwargs": {
"discount": 0.99,
"soft_target_tau": 0.005,
"target_update_period": 1,
"policy_lr": 0.0003,
"qf_lr": 0.0003,
"reward_scale": 1,
"use_automatic_entropy_tuning": true,
"corner_prediction_loss_coef": 0.001
}
}
Training started
Segmentation fault (core dumped)

Looks like something is segfaulting on your system. Can you try running with e.g. gdb to see further details?

Looks like something is segfaulting on your system. Can you try running with e.g. gdb to see further details?

I have already resolved it, thank you

Hi @zcswdt, I am having the same problem. Can you share me what you did to resolve it?

I have the same question, Does anyone know how to solve it?

I have the same question, Does anyone know how to solve it?

yes ,i do。

Hi, thank you very much for your reply!
I use wsl2-based ubuntu20.04 on a Windows 11 laptop to test the code.
The device parameters are：
20  12th Gen Intel(R) Core(TM) i7-12700H
[cid:f588b42d-d492-4115-b288-141a24ca1eb3]
I input
python train.py
in the terminal, and I found when the code runs to
experiment(variant)

def experiment(variant):
eval_env = cloth_env.ClothEnv(
**variant['env_kwargs'], randomization_kwargs=variant['randomization_kwargs'])
eval_env = cloth_env.ClothEnv(
**variant['env_kwargs'], randomization_kwargs=variant['randomization_kwargs'])
def capture_images(self, aux_output=None, mask_type="corners")
and will report 'Segmentation fault' and stop the code. Do you know what happened here? and what can I do?
Thank you for your time again!

发件人: zcswdt @.>
发送时间: 2024年1月4日 18:42
收件人: hietalajulius/dynamic-cloth-folding @.>
抄送: QU, Hong [Alumni] @.>; Comment @.>
主题: Re: [hietalajulius/dynamic-cloth-folding] Segmentation fault (core dumped) (Issue #3)
I have the same question, Does anyone know how to solve it?
yes ,i do。
―
Reply to this email directly, view it on GitHubhttps://github.com/hietalajulius/dynamic-cloth-folding/issues/3#issuecomment-1876879527, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ANHJLQD5AEFY3LWE63N7BBLYM2BRPAVCNFSM6AAAAAAZEF7QFGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZWHA3TSNJSG4.
You are receiving this because you commented.Message ID: @.***>
[https://www.polyu.edu.hk/emaildisclaimer/PolyU_Email_Signature.jpg]
Disclaimer:
This message (including any attachments) contains confidential information intended for a specific individual and purpose. If you are not the intended recipient, you should delete this message and notify the sender and The Hong Kong Polytechnic University (the University) immediately. Any disclosure, copying, or distribution of this message, or the taking of any action based on it, is strictly prohibited and may be unlawful.
The University specifically denies any responsibility for the accuracy or quality of information obtained through University E-mail Facilities. Any views and opinions expressed are only those of the author(s) and do not necessarily represent those of the University and the University accepts no liability whatsoever for any losses or damages incurred or caused to any party as a result of the use of such information.

I have the same question, Does anyone know how to solve it?

yes ,i do。

I have the same question, Does anyone know how to solve it?

yes ,i do。

Hi, thank you very much for your reply!
I use wsl2-based ubuntu20.04 on a Windows 11 laptop to test the code.
The device parameters are：
20  12th Gen Intel(R) Core(TM) i7-12700H
 nvcc: NVIDIA (R) Cuda compiler driver
 Copyright (c) 2005-2021 NVIDIA Corporation
 Built on Fri_Dec_17_18:16:03_PST_2021
 Cuda compilation tools, release 11.6, V11.6.55
 Build cuda_11.6.r11.6/compiler.30794723_0

I input
python train.py
in the terminal, and I found when the code runs to
experiment(variant)

def experiment(variant):
eval_env = cloth_env.ClothEnv(
**variant['env_kwargs'], randomization_kwargs=variant['randomization_kwargs'])
eval_env = cloth_env.ClothEnv(
**variant['env_kwargs'], randomization_kwargs=variant['randomization_kwargs'])
def capture_images(self, aux_output=None, mask_type="corners")
and will report 'Segmentation fault' and stop the code. Do you know what happened here? and what can I do?
Thank you for your time again!

I have the same question, Does anyone know how to solve it?

yes ,i do。
Could you share me how you solved it?

I have the same question, Does anyone know how to solve it?

yes ,i do。

Could you share me how to solve it?

I have a new wrong situation here:
after python train.py and I get this error:
UserWarning: Pydantic serializer warnings:
Expected Union[float, tuple[float, float]] but got list - serialized value may not be as expected

could anyone help me?

@zcswdt would you be able to share how you resolved the segfault as others seem to struggle with it as well? Thanks!

I have solved this proble. You could solved it by reinstall mujoco_py with source code.

@zcswdt would you be able to share how you resolved the segfault as others seem to struggle with it as well? Thanks!

I'm really sorry. I just saw your email recently. Later, I still couldn't run the real robot arm experiment, so I gave up the project and switched to the flingbot project. I didn't record how I solved it at that time. I'm really sorry. Thank you for your help.


What do fields in the results from an API call mean?

This call
https://api.opentargets.io/v3/platform/public/association/filter?&disease=EFO_0000305&scorevalue_min=0.999
will return some fields/columns that I'm not too sure what they mean e.g.

is_direct e.g. 3367, 2919
target.gene_info.name e.g. 0, 62, 22
target.gene_info.symbol e.g. 3787, 7092
target.id e.g. 1, 3, 0, 10, 4
--

Could anyone help here please?

@deniseOme trying to answer your questions (so sorry betting back to you so late about this)

is_direct means get associations for that disease but the ones that have at least one evidence linking target and disease directly but not through traversing the ontology
target.gene_info.name it should correspond to the approved HGNC name
target.gene_info.symbol it should correspond to the approved HGNC symbol
target.id an unique identifier and we settled down with the ensembl id (ref one not the version as we also select which ensembl version release to use for the pipeline run see here)

does this help you with your questions?


Improve LinearSequenceGenerator

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (ac6db7a) to head (9f051ca).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #476   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files          138       139    +1
  Lines         4262      4286   +24
  Branches       286       288    +2
=========================================
+ Hits          4262      4286   +24

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Handle vision language model chat templates

Now that mlx-libraries supports vision models (thanks to @davidkoski's Herculean efforts), we should try to support multimodal chat templates. I'll list some models here for reference.

Qwen2-VL
Llama 3.2
Llava v1.6
Molmo
Phi 3.5 Vision

These models have no chat template in tokenizer_config.json:

Paligemma
Pixtral

Thank you for your suggestion. I will follow up on this issue next month, as I've been a bit busy recently.

For reference here is the code from mlx-vlm that generates the messages:

https://github.com/Blaizzy/mlx-vlm/blob/main/mlx_vlm/prompt_utils.py#L45

and the matching code in the swift VLM for Qwen2-VL:

https://github.com/ml-explore/mlx-swift-examples/blob/main/Libraries/MLXVLM/Models/Qwen2VL.swift#L689

The Qwen2-VL chat template expects structured content like this:
[{'role': 'user', 'content': [{'type': 'text', 'text': 'What are these?'}, {'type': 'image'}, {'type': 'image'}, {'type': 'image'}]}]

rather than [[String:String]].


Snaptshot GA

Description
Spring boot 3 version of https://github.com/Azure/azure-sdk-for-java/pull/37470

API change check
APIView has identified API level changes in this PR and created following API reviews.
spring-cloud-azure-appconfiguration-config

@Netyyyy please help check the versions in this PR.

@Netyyyy please help check the versions in this PR.

the new versions are not align with them in version-client.txt

@Netyyyy, These are the newly released versions of the SDK.


fix: Change the default value of images.path to undefined.

Codecov Report

Merging #12 (07412ce) into main (a4670e1) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main      #12   +/-   ##
=======================================
  Coverage   90.52%   90.52%
=======================================
  Files           7        7
  Lines          95       95
  Branches       22       22
=======================================
  Hits           86       86
  Misses          9        9

Impacted Files
Coverage Δ

src/with-split.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


allowing to configure the Cassandra datacenter name

Currently the Cassandra datacenter name is hardcoded with no option to change this. This PR changes this by adding an overridable "CASSANDRA_LOCAL_DATACENTER_NAME" variable.

:+1:


Create better docs with flowchart and all

Hi @Sayak-Bhunia
I want to work on this issue under GSSOC24. Please assign it to me.
Thanks

assigned.
do star the repo.

any updates ?


project.json metadata to DLL version information

When I have "version: " "X.Y.Z" in the project.json file this seems to get inserted into the version information of my main assembly (DLL) which is great. What about other metadata? Intellisense gives me for my project.json things like title, copyright, description, summary, authors but none of these are mapped to version information strings in the DLL.
Would be great if we could handle these informations centrally in project.json, at least CompanyName, ProductName and LegalCopyright (in addition to the already working ProductVersion) and have them appear in the DLL version information.

Is there any news on this subject?

This used to be done by DNX, but that has been replaced with dotnet-cli (https://github.com/dotnet/cli/), so I recommend trying this out using the new system. If you don't see the behavior you want, please log a new issue in that repo for the folks there to consider. Thanks!


Only run unusedCompileDependenciesTest on the JVM

Should help with https://github.com/http4s/http4s/pull/5926.

I'm not sure this will help us. The CI workflow is global to the whole build, not per-project.
What could help is if we added a conditional to this step that only runs if it is a JVM job. But this gets fiddly if we try and account for pure JVM (like the jdk client) or pure JS projects (like dom).

I know it doesn't help us right now, but what we should do is absorb the explicit deps plugin into sbt-typelevel and apply this fix:

https://github.com/cb372/sbt-explicit-dependencies/pull/100

I have a fix incoming.

Oh, I thought this would run only on the JVM, but I did bake in an assumption everything was using cross project, which is probably not right.

#129 is better.


Fixes #244 to point the kserve repo, not website repo

Fixes issue #244
Proposed Changes

/cc @yuzisun
Please review & approve
PFA screenshot

Thanks @paravatha !!
/lgtm
/approve


Fix #294

I cloned your repository and checked out the fix294 branch, then ran make. I still see the same error.

I'm not sure this is needed.

I get a "warning as error" when I try to build without it.

I also get a warning-as-error when I build without it.


SSH into droplet to install everything

We need to install a bunch of pre-requisite packages on the server for this to run. They include the following:

openjdk-8-jre-headless
git
pm2

We also need to install the remote minecraft server:

Clone app
Run with pm2
Generate startup script with pm2 startup and pm2 save

Actually probably going to do this using user_data. Trying it to see if it works.

Yep, using user_data. Closing this issue.


Inventory / Re-design Data Structures which Implement Chunks

We need to take a look at the existing data structures we have (the ones implementing our different "chunk" classes) and see what's good/bad for each. Things will need to be changed for the upcoming chunk hierarchy overhaul, so here goes.
The current data structures we have (in master) are:
Chunk.hs

ConceptChunk

data ConceptChunk = CC String Sentence

instance Eq ConceptChunk where
  c1 == c2 = (c1 ^. name) == (c2 ^. name)
instance Chunk ConceptChunk where
  name f (CC a b) = fmap (\x -> CC x b) (f a)
instance Concept ConceptChunk where
  descr f (CC a b) = fmap (\x -> CC a x) (f b)

DefinedTerm

data DefinedTerm = DCC String Sentence Sentence

instance Eq DefinedTerm where
  c1 == c2 = (c1 ^. name) == (c2 ^. name)
instance Chunk DefinedTerm where
  name f (DCC n t d) = fmap (\x -> DCC x t d) (f n)
instance Concept DefinedTerm where
  descr f (DCC n t d) = fmap (\x -> DCC n x d) (f t)
instance ConceptDefinition DefinedTerm where
  cdefn f (DCC n t d) = fmap (\x -> DCC n t x) (f d)

VarChunk

data VarChunk = VC { vname :: String
                   , vdesc :: Sentence
                   , vsymb :: Symbol}

instance Eq VarChunk where
  c1 == c2 = (c1 ^. name) == (c2 ^. name)
instance Chunk VarChunk where
  name f (VC n d s) = fmap (\x -> VC x d s) (f n)
instance Concept VarChunk where
  descr f (VC n d s) = fmap (\x -> VC n x s) (f d)
instance Quantity VarChunk where
  symbol f (VC n d s) = fmap (\x -> VC n d x) (f s)

Unit.hs

FundUnit

data FundUnit = UD { _vc :: ConceptChunk, _u :: USymb }

instance Chunk FundUnit where
  name = vc . name
instance Concept FundUnit where
  descr = vc . descr
instance Unit FundUnit where
  unit f (UD a b) = fmap (\x -> UD a x) (f b)

DerUChunk

data DerUChunk = DUC { _uc :: FundUnit, _eq :: UDefn }

instance Chunk   DerUChunk where name  = duc . name
instance Concept DerUChunk where descr = duc . descr
instance Unit    DerUChunk where unit  = duc . unit
instance UnitEq DerUChunk where
  uniteq f (DUC a b) = fmap (\x -> DUC a x) (f b)

UnitDefn

data UnitDefn where
  UU :: Unit u => u -> UnitDefn

instance Unit    UnitDefn where unit  = ulens unit
instance Chunk   UnitDefn where name  = ulens name
instance Concept UnitDefn where descr = ulens descr

Eq.hs

QDefinition

data QDefinition = EC
  { uc :: MUChunk
  , equat :: Expr
  }

instance Chunk QDefinition where
  name = ul . name
instance Concept QDefinition where
  descr = ul . descr
instance Quantity QDefinition where
  symbol = ul . symbol
instance Unit' QDefinition where
  unit' = ul . unit'

LC.hs

LCChunk

data LCChunk = LCChunk
  { lcCC :: ConceptChunk
  , lcRelatedModules :: [ModuleChunk]
  }

instance Chunk LCChunk where
  name = cl . name
instance Concept LCChunk where
  descr = cl . descr

MDefinedConcept.hs

MDefinedConcept

data MDefinedConcept where
  DefinedT :: (Concept h, ConceptDefinition h) => h -> MDefinedConcept
  SimpleT :: Concept c => c -> MDefinedConcept

instance Chunk MDefinedConcept where
  name = dclens name
instance Concept MDefinedConcept where
  descr = dclens descr
instance ConceptDefinition' MDefinedConcept where
  cdefn' f (DefinedT h) = fmap (DefinedT . maybe h (\t -> set cdefn t h)) (f $ Just $ h ^. cdefn)
  cdefn' f (SimpleT h) = fmap (SimpleT . maybe h (\_ -> h)) (f $ Nothing)

Method.hs

MethodChunk

data MethodChunk = MeC { cc :: ConceptChunk, mType :: MethodType,
                         input :: [VarChunk], output :: [VarChunk],
                         exc :: [ExcType] }

instance Chunk MethodChunk where
  name = cl . name
instance Concept MethodChunk where
  descr = cl . descr

Module.hs

ModuleChunk

data ModuleChunk = MoC { cc :: ConceptChunk, secret :: Sentence,
  imp :: Maybe ConceptChunk, method :: [MethodChunk], uses :: [ModuleChunk],
  hier :: Maybe ModuleChunk }

instance Chunk ModuleChunk where
  name = cl . name
instance Concept ModuleChunk where
  descr = cl . descr
instance Eq ModuleChunk where
  c1 == c2 = (c1 ^. name) == (c2 ^. name)

MUChunk.hs

MUChunk

data MUChunk where --May have Unit chunk
  Has :: (Quantity h, Unit h) => h -> MUChunk
  HasNot :: Quantity c => c -> MUChunk --Could accidentally add Unital

instance Chunk MUChunk where
  name = mulens name
instance Concept MUChunk where
  descr = mulens descr
instance Quantity MUChunk where
  symbol = mulens symbol
instance Unit' MUChunk where
  unit' f (Has    h) = fmap (Has . maybe h (\t -> set unit t h)) (f $ Just $ h^.unit)
  unit' f (HasNot h) = fmap (HasNot . maybe h (\_ -> h)) (f $ Nothing)

Other.hs

AssumpChunk
Type synonym for ConceptChunk
UCChunk
Type synonym for ConceptChunk

Relation.hs

RelationChunk

data RelationChunk = RC
  { cc :: ConceptChunk
  , relat :: Relation
  }

instance Chunk RelationChunk where
  name = cp . name
instance Concept RelationChunk where
  descr = cp . descr

Req.hs

ReqChunk

data ReqChunk = ReqChunk
  { rCC :: ConceptChunk
  , rRelatedModules :: [ModuleChunk]
  }

instance Chunk ReqChunk where
  name = cl . name
instance Concept ReqChunk where
  descr = cl . descr

Unital.hs

Q (not exported)

data Q where
  Q :: Quantity c => c -> Q

instance Chunk Q where
  name = qlens name
instance Concept Q where
  descr = qlens descr
instance Quantity Q where
  symbol = qlens symbol

UnitalChunk

data UnitalChunk where
  UC :: (Quantity c, Unit u) => c -> u -> UnitalChunk

instance Chunk UnitalChunk where
  name = q . name
instance Concept UnitalChunk where
  descr = q . descr
instance Quantity UnitalChunk where
  symbol = q . symbol
instance Unit UnitalChunk where
  unit = u . unit

Constrained.hs (not currently in use, but includes constrained class as well)

ConstrainedMUC

data ConstrainedMUC = CMUC
  { muc :: MUChunk,
    pc :: [Expr -> Relation], -- physical constraints
    sc :: [Expr -> Relation], --software constraints
    rv :: Expr  -- reasonable value (number?)
  }

instance Chunk ConstrainedMUC where
  name = ul . name
instance Concept ConstrainedMUC where
  descr = ul . descr
instance Quantity ConstrainedMUC where
  symbol = ul . symbol
instance Unit' ConstrainedMUC where
  unit' = ul . unit'
instance Constrained ConstrainedMUC where
  physConstraints f (CMUC a b c d) = fmap (\x -> CMUC a x c d) (f b)
  sfwrConstraints f (CMUC a b c d) = fmap (\x -> CMUC a b x d) (f c)
  reasVal         f (CMUC a b c d) = fmap (\x -> CMUC a b c x) (f d)

DefinedQuantity.hs

DefinedQuantity

data DefinedQuantity =
  DQ { dt :: DefinedTerm
     , sy :: Symbol }

instance Eq DefinedQuantity where
  c1 == c2 = (c1 ^. name) == (c2 ^. name)
instance Chunk DefinedQuantity where
  name = dql . name
instance Concept DefinedQuantity where
  descr = dql . descr
instance ConceptDefinition DefinedQuantity where
  cdefn = dql . cdefn
instance Quantity DefinedQuantity where
  symbol f (DQ a b) = fmap (\x -> DQ a x) (f b)

Note: Extra information for some of these implementations can be found in the files mentioned.
@palmerst if you've created any in your branch that I missed, please add them below!

Much food for thought in here.  I need to get back to this when I have more than 2 minutes.

A couple of names have changed (ConceptChunk -> NamedChunk; DefinedTerm -> ConceptChunk) to make it easier for me to conceptualize some of the things that need to change.

Also added a new data structure in Chunk.hs:

ConVar

data ConVar = CV { _con :: ConceptChunk
                 , _symb :: Symbol
                 , _typ :: Space }

instance Eq ConVar where
  c1 == c2 = (c1 ^. id) == (c2 ^. id)
instance Chunk ConVar where
  id = cvl . id
instance NamedIdea ConVar where
  term = cvl . term
instance Concept ConVar where
  defn = cvl . defn
instance SymbolForm ConVar where
  symbol f (CV c s t) = fmap (\x -> CV c x t) (f s)
instance Quantity ConVar where
  typ    f (CV c s t) = fmap (\x -> CV c s x) (f t)

The UPDATED data structures that we have in master are:
Chunk.hs

NamedChunk

data NamedChunk = CC String Sentence

instance Eq NamedChunk where
  c1 == c2 = (c1 ^. id) == (c2 ^. id)
instance Chunk NamedChunk where
  id f (CC a b) = fmap (\x -> CC x b) (f a)
instance NamedIdea NamedChunk where
  term f (CC a b) = fmap (\x -> CC a x) (f b)

ConceptChunk

data ConceptChunk = DCC String Sentence Sentence

instance Eq ConceptChunk where
  c1 == c2 = (c1 ^. id) == (c2 ^. id)
instance Chunk ConceptChunk where
  id f (DCC n t d) = fmap (\x -> DCC x t d) (f n)
instance NamedIdea ConceptChunk where
  term f (DCC n t d) = fmap (\x -> DCC n x d) (f t)
instance Concept ConceptChunk where
  defn f (DCC n t d) = fmap (\x -> DCC n t x) (f d)

VarChunk

data VarChunk = VC { vid :: String
                   , vdesc :: Sentence
                   , vsymb :: Symbol
                   , vtyp  :: Space }

instance Eq VarChunk where
  c1 == c2 = (c1 ^. id) == (c2 ^. id)
instance Chunk VarChunk where
  id f (VC n d s t) = fmap (\x -> VC x d s t) (f n)
instance NamedIdea VarChunk where
  term f (VC n d s t) = fmap (\x -> VC n x s t) (f d)
instance SymbolForm VarChunk where
  symbol f (VC n d s t) = fmap (\x -> VC n d x t) (f s)

ConVar

data ConVar = CV { _con :: ConceptChunk
                 , _symb :: Symbol
                 , _typ :: Space }

instance Eq ConVar where
  c1 == c2 = (c1 ^. id) == (c2 ^. id)
instance Chunk ConVar where
  id = cvl . id
instance NamedIdea ConVar where
  term = cvl . term
instance Concept ConVar where
  defn = cvl . defn
instance SymbolForm ConVar where
  symbol f (CV c s t) = fmap (\x -> CV c x t) (f s)

Unit.hs

FundUnit

data FundUnit = UD { _vc :: ConceptChunk, _u :: USymb }

instance Chunk FundUnit where
  id = vc . id
instance NamedIdea FundUnit where
  term = vc . term
instance Concept FundUnit where
  defn = vc . defn
instance Unit FundUnit where
  unit f (UD a b) = fmap (\x -> UD a x) (f b)

DerUChunk

data DerUChunk = DUC { _uc :: FundUnit, _eq :: UDefn }

instance Chunk     DerUChunk where id  = duc . id
instance NamedIdea DerUChunk where term = duc . term
instance Concept   DerUChunk where defn = duc . defn
instance Unit      DerUChunk where unit  = duc . unit
instance UnitEq DerUChunk where
  uniteq f (DUC a b) = fmap (\x -> DUC a x) (f b)

UnitDefn

data UnitDefn where
  UU :: Unit u => u -> UnitDefn

instance Chunk     UnitDefn where id   = ulens id
instance NamedIdea UnitDefn where term = ulens term
instance Concept   UnitDefn where defn = ulens defn
instance Unit      UnitDefn where unit = ulens unit

Eq.hs

QDefinition

data QDefinition where
  EC :: (SymbolForm c, Quantity c) => c -> Expr -> QDefinition

instance Chunk QDefinition where
  id = ul . id
instance NamedIdea QDefinition where
  term = ul . term
instance SymbolForm QDefinition where
  symbol = ul . symbol
instance Quantity QDefinition where
  getSymb (EC a _) = getSymb a
  getUnit (EC a _) = getUnit a

LC.hs

LCChunk

data LCChunk = LCChunk
  { lcCC :: NamedChunk
  , lcRelatedModules :: [ModuleChunk]
  }

instance Chunk LCChunk where
  id = cl . id
instance NamedIdea LCChunk where
  term = cl . term

Method.hs

MethodChunk

data MethodChunk = MeC { methcc :: NWrapper, mType :: MethodType,
                         input :: [VarChunk], output :: [VarChunk],
                         exc :: [ExcType] }

instance Chunk MethodChunk where
  id = cl . id
instance NamedIdea MethodChunk where
  term = cl . term

Module.hs

ModuleChunk

data ModuleChunk where
  MoC :: NWrapper -> Sentence -> Maybe NWrapper -> [VarChunk] ->
    [MethodChunk] -> [ModuleChunk] -> Maybe ModuleChunk -> ModuleChunk

instance Chunk ModuleChunk where
  id = cl id
instance NamedIdea ModuleChunk where
  term = cl term
instance Eq ModuleChunk where
  c1 == c2 = (c1 ^. id) == (c2 ^. id)

Other.hs

AssumpChunk
Type synonym for ConceptChunk
UCChunk
Type synonym for ConceptChunk

Relation.hs

RelationChunk

data RelationChunk = RC
  { cc :: NamedChunk
  , relat :: Relation
  }

instance Chunk RelationChunk where
  id = cp . id
instance NamedIdea RelationChunk where
  term = cp . term

Req.hs

ReqChunk

data ReqChunk = ReqChunk
  { rCC :: NamedChunk
  , rRelatedModules :: [ModuleChunk]
  }

instance Chunk ReqChunk where
  id = cl . id
instance NamedIdea ReqChunk where
  term = cl . term

Unital.hs

Q (not exported)

data Q where
  Q :: (Quantity c, Concept c, SymbolForm c) => c -> Q

instance Chunk Q where
  id = qlens id
instance NamedIdea Q where
  term = qlens term
instance SymbolForm Q where
  symbol = qlens symbol
instance Concept Q where
  defn = qlens defn
instance Quantity Q where
  getSymb   = Just . SF
  getUnit _ = Nothing
  typ = qlens typ

UnitalChunk

data UnitalChunk where
  UC :: (Quantity c, Concept c, SymbolForm c, Unit u) => c -> u -> UnitalChunk

instance Chunk UnitalChunk where
  id = q . id
instance NamedIdea UnitalChunk where
  term = q . term
instance SymbolForm UnitalChunk where
  symbol = q . symbol
instance Concept UnitalChunk where
  defn = q . defn
instance Quantity UnitalChunk where
  getSymb uc = getSymb (uc ^. q)
  getUnit uc = Just (uc ^. u)
  typ = q . typ
instance Unit UnitalChunk where
  unit = u . unit

Wrapper.hs

CQSWrapper --Concept Quantity and Symbol

data CQSWrapper where
  CQS :: (SymbolForm c, Quantity c, Concept c) => c -> CQSWrapper

instance Chunk CQSWrapper where
  id = cqslens id
instance NamedIdea CQSWrapper where
  term = cqslens term
instance Concept CQSWrapper where
  defn = cqslens defn
instance SymbolForm CQSWrapper where
  symbol = cqslens symbol
instance Quantity CQSWrapper where
  getSymb = Just . SF
  getUnit (CQS a) = getUnit a
  --FIXME: typ

QSWrapper -- Quantity and Symbol Wrapper

data QSWrapper where
  QS :: (SymbolForm c, Quantity c) => c -> QSWrapper

instance Chunk QSWrapper where
  id = qslens id
instance NamedIdea QSWrapper where
  term = qslens term
instance SymbolForm QSWrapper where
  symbol = qslens symbol
instance Quantity QSWrapper where
  getSymb = Just . SF
  getUnit (QS a) = getUnit a
  --FIXME: typ

NWrapper -- NamedIdea Wrapper

data NWrapper where
  NW :: (NamedIdea c) => c -> NWrapper

instance Chunk NWrapper where
  id = nlens id
instance NamedIdea NWrapper where
  term = nlens term
instance Eq NWrapper where
 a == b = (a ^. id) == (b ^. id)

After attempting to make some updates to the examples, it seems fairly clear to me that UnitalChunk should not be an instance of Unit. This is a relic from the old design. As it stands, Quantities only need NamedIdeas (not Concepts), but Unit forces the requirement that Unitals are Concepts as well, which is not necessarily true (and in the majority of examples, they are not).
Unitals should have a function that returns their unit (ie. they "must have" a unit, not they "are" a unit). This is currently accomplished (for the most part) with the new version of Quantity which introduced "getUnit". The only issue I have with this function is that it gives a Maybe Unit and we know Unitals will always have a Unit by definition.

Right -- Unital (for lack of a better name) should be a sub-class of Quantity that has a Unit.
As far as names go, I think unit in class Unit (from Unit.hs) should be called usymb or unit_symbol.  It is used much less often.  Then that frees Unital (as a new class) to define unit as a getter of the unit.  Unital would be a subclass of Quantity, but which forces Concept.

This issue (overall) is still a work in progress. There have been a couple of passes, but more work is still required. I'll do another pass over it soon, then I think we can close this (version of) this issue (as I'm sure it will come up again over time as we realize we need new knowledge-capture mechanisms).

Just making a few notes to myself here:

NPNC can be removed as it was a temporary hack. It should be replaced with NC (and should NOT be an instance of NounPhrase).
Change CINP to CI and remove deprecated Sentence (term) (see FIXME in CommonIdea.hs)
Concepts should take any NamedIdea (through use of NWrapper?) instead of only NamedChunks
Correct FIXMEs throughout the chunks (except perhaps space hacks, as we still don't have a better design there)

We also need to figure out what to do with LCChunk, ReqChunk, UCChunk, and AssumpChunk, as they seem to be missing information, but that can be done at a later date.

I understand why it's good to close this particular issue - as the things here are largely dealt with.  But overall, this is really still a work in progress.  I looked at the summary of the data-structures, and it still feels like there is quite a bit of consolidation/rationalization that could be done.
It might be worth re-doing the inventory (in a new issue).  Especially now the Theories exist - and that some of the back-end work is taking shape, so that we can get rid of some of the chunks that should not be chunks.
Just so it doesn't get lost, I was thinking:

LCChunk seems obsolete
MethodChunk, ReqChunk and ModuleChunk perhaps shouldn't be chunks at all
RelationChunk seems too crude.  I think a proper decomposition of Theory will take care of that.
Some of the wrappers (CQS, QS) may not be needed anymore?
Looks like Q and QSWrapper are in fact isomorphic?

Makes sense. I'll put up a new issue for the next round of changes. Note: Q and QSWrapper should be isomorphic (and QSWrapper should be removed soon), but that will have to wait until all of the SymbolForm instances (barring those in SymbolForm.hs) are finished being removed from our chunks.


AFHTTPClient Requests Timeout  when flooded with requests

I have been using Afnetworking for one of my application, as per the requirements there could be a scenario when there can be loads of requests at one time. However, while doing that i am getting requests time outs as an error. While searching, i found that by increasing the maxconcurrentoperations value i can resolve the issue. I have done that and it is working fine, but for that i need to add the framework manually and need to do changes manually. I very much like to use cocoapods. Is there any way that i get the maxconcurrentoperations value increased via pods only.TIA
Regards
Anish

Hi @anishguptaios
AFHTTPClient is part of AFNetworking 1.x, and is no longer explicitly supported and there are no plans to provide any further updates to that line. I'd recommend updating to a newer version of AFNetworking if possible.
:beers:


Previous button should disable for 1st page

What happened?
In the home page when we are in home-page of the website we can see the button previous button and next button should be disable when we are in 1st and the last page

How can we reproduce this bug?

Go to the website https://30daysofjs.netlify.app/
Scroll down and see the pages button
see

Desktop Information (Optional)
No response
Urgency (Optional)
Low priority

@upsaurav12 Than you for providing your insight but it is not required as of now.


fix/vpc support get and create default vpc

:tada: This PR is included in version 2.5.12 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[dev] [optimization] 'while i < data.len()' to 'let data_len = data.len()'

To optimize shinigami, we should be using let data_len = data.len(); while i < data_len instead of while i < data.len() when doing loops over a range. So for each instance in the code where a while i < data.len() type loop is used, if possible, we should change them to use let data_len = data.len(); while i < data_len.
References
Example of location to optimize in the code

Hi @b-j-roberts can I work on this?

@b-j-roberts can I work on this

@b-j-roberts can I work on this?

I will like to work on this

@b-j-roberts can I work on this?

Yes, I will assign you and check back in a couple days. Please lmk if you have any questions

@Gift-Naomi Assigned 🚀


How to increase maximumPoolSize while project running?

There is a requirement  that is to increase maximumPoolSize while project running and make it effective.  I see the druidPC provide a menthod to reset the pool size dynamicly withoud restarting the project  .   I wander if HikariCP provider the same method or other optioins ?   thanks a lot.

You should be able to do this by using JMX and HikariConfigMXBean#setMaximumPoolSize see: https://github.com/brettwooldridge/HikariCP/blob/dev/src/main/java/com/zaxxer/hikari/HikariConfigMXBean.java#L150

Correct.


Type system disagrees!!!

Using v5.0.4 with typescript like below and the multi command fails in compilation
const y = [
            ["set", "foo", "bar"],
            ["get", "foo"],
        ];

        const result = await this.redisClient.multi(y)
            .exec();

Error reported build time:(wigly under y in multi method)
No overload matches this call.   Overload 1 of 4, '(options: { pipeline: false; }): Promise<"OK">', gave the following error.     Argument of type 'string[][]' is not assignable to parameter of type '{ pipeline: false; }'.       Property 'pipeline' is missing in type 'string[][]' but required in type '{ pipeline: false; }'.   Overload 2 of 4, '(options: { pipeline: true; }): ChainableCommander', gave the following error.     Argument of type 'string[][]' is not assignable to parameter of type '{ pipeline: true; }'.       Property 'pipeline' is missing in type 'string[][]' but required in type '{ pipeline: true; }'.   Overload 3 of 4, '(commands?: [name: string, ...args: unknown[]][]): ChainableCommander', gave the following error.     Argument of type 'string[][]' is not assignable to parameter of type '[name: string, ...args: unknown[]][]'.       Type 'string[]' is not assignable to type '[name: string, ...args: unknown[]]'.         Source provides no match for required element at position 0 in target.ts(2769)
Where as following works without any issue:
 const result = await this.redisClient.multi([             ["set", "foo", "bar"],             ["get", "foo"],         ])             .exec();
What am i doing wrong ?

Hi @LRagji 👋
You are not doing anything wrong. It's should be a bug on ioredis's TypeScript declaration. Going to fix it in the next version.
For now, there are two workarounds:
const y: [name: string, ...args: string[]][] = [
  ["set", "foo", "bar"],
  ["get", "foo"],
];

const result = await this.redisClient.multi(y).exec();

Or
const result = await this.redisClient.multi([
    ["set", "foo", "bar"],
    ["get", "foo"],
  ])
  .exec();

Thanks @luin for confirming, i am using 3rd option //@ts-ignore 😜

Aha I should have mentioned it. Actually you should use // @ts-expect-error so you can get notified once it's not needed.


runtime cli

As part of the permission based config / executable distribution it would be great to offer a runtime command line interface, similar to what e.g. nginx provides. This might require bundling deepstream with a daemon - we'll need to look into this.
Generally, here's what I'd propose
$ deepstream start
$ deepstream stop
$ deepstream status
$ deepstream reload-permissions //reload permissions on the fly
...more?

We currently have an init.d file for this to work on linux using:
service deepstream start

I suggest we go down the standard console application for when we have the folder structure deployment ( influenced by nginx ):
deepstream  start [-c /path/to/config]
deepstream  stop
deepstream  quit [ this isn't supported by deepstream, and requires us to gracefully close connections and expect a longer closing down period]
deepstream  reload-permissions [-p /path/to/permissions]
deepstream  reload-users [-p /path/to/users]
deepstream install cache redis/latest [-p /path/to/libs]

start, start -d (background),  stop, status is done in #189
intall was already done in #181
The current option to pass the path to the libs is -l or --libPrefix.
BTW: Here is the snippet to use a local domain socket to communicate between different processes: https://gist.github.com/timaschew/278db182a964fde5fb21119fc49c3b3a
It's the server.listen(path[, backlog][, callback]) API:

On UNIX, the local domain is usually known as the UNIX domain. The path is a filesystem path name. It gets truncated to sizeof(sockaddr_un.sun_path) bytes, decreased by 1. It varies on different operating system between 91 and 107 bytes. The typical values are 107 on Linux and 103 on OS X. The path is subject to the same naming conventions and permissions checks as would be done on file creation, will be visible in the filesystem, and will persist until unlinked.
On Windows, the local domain is implemented using a named pipe. The path must refer to an entry in \?\pipe\ or \.\pipe. Any characters are permitted, but the latter may do some processing of pipe names, such as resolving .. sequences. Despite appearances, the pipe name space is flat. Pipes will not persist, they are removed when the last reference to them is closed. Do not forget JavaScript string escaping requires paths to be specified with double-backslashes, such as:

See here for more information: https://nodejs.org/api/net.html#net_server_listen_path_backlog_callback


Better Exceptions in case of invalid operations on mlx.core.array

Regarding a conversation on this PR, there is a requirement for better exception (and error messages) in case of invalid operations on mlx array. For example:
import mlx.core as mx

mx.array([1, 2]) > [1,2] # ValueError: Invalid type  list received in array initialization.

# same thing for '<', '<=', '>=', '%', '*', etc.

while we are not actually initialising anything here! So, the error message should somehow represent that this operation is not valid. I think this will help for better debugging and more meaningful error messages.
Any suggestions?

@awni
Any suggestions on what we throw in these cases? Maybe something like:
Value Error: You should convert operands to mlx.core.array before comparing to (or operating on) an array.

Maybe something like:
Value Error: Cannot <op_name> on an mlx.core.array and <type>.

I don't think we should suggest to cast to array because it's not essential.