Error trying to recognize or register person face

I have followed the instructions in the README, Docker containers start just fine but I get an error whenever I try to recognize or register a person:
failed to retrieve the metadata: [StatusCode.UNAVAILABLE] failed to connect to all addresses; last error: UNKNOWN: ipv4:<IP_ADDRESS>:8081: Failed to connect to remote host: Connection refused
Error getting model info
Not sure how to solve that, spent the last couple of days on that

This will happen when requests are sent to the server before the uvicorn_trt_server:latest image container has started hosting the face detection models with the triton server. Can you check if this image is running and check if the models are properly hosted inside with docker logs NAME_OF_CONTAINER (this case docker logs uvicorn_trt_server_cont)

I see, for some reason it is not able to load the models
I0220 12:03:16.163007 51 server.cc:264] Waiting for in-flight requests to complete.
I0220 12:03:16.163282 51 server.cc:280] Timeout 30: Found 0 model versions that have in-flight inferences
I0220 12:03:16.163726 51 server.cc:295] All models are stopped, unloading models
I0220 12:03:16.163843 51 server.cc:302] Timeout 30: Found 3 live models and 0 in-flight non-inference requests
I0220 12:03:16.165292 51 tensorflow.cc:2729] TRITONBACKEND_ModelInstanceFinalize: delete instance state
I0220 12:03:16.165433 51 tensorflow.cc:2668] TRITONBACKEND_ModelFinalize: delete model state
I0220 12:03:16.166342 51 onnxruntime.cc:2640] TRITONBACKEND_ModelInstanceFinalize: delete instance state
I0220 12:03:16.451797 51 onnxruntime.cc:2586] TRITONBACKEND_ModelFinalize: delete model state
I0220 12:03:16.454315 51 model_lifecycle.cc:579] successfully unloaded 'arcface_resnet18_110' version 1
I0220 12:03:16.587559 51 model_lifecycle.cc:579] successfully unloaded 'facenet_trtserver' version 1
I0220 12:03:17.168129 51 server.cc:302] Timeout 29: Found 1 live models and 0 in-flight non-inference requests
I0220 12:03:17.352380 51 model_lifecycle.cc:579] successfully unloaded 'face_detection_postprocess' version 1
I0220 12:03:18.171294 51 server.cc:302] Timeout 28: Found 0 live models and 0 in-flight non-inference requests
error: creating server: Internal - failed to load all models

You need to post the full logs from the error with docker logs uvicorn_trt_server_cont

I think I found the problem: I am using Mac M1 which doesn't have any Nvidia GPU to use CUDA
W0220 12:27:58.050274 54 pinned_memory_manager.cc:236] Unable to allocate pinned system memory, pinned memory pool will not be available: no CUDA-capable device is detected
I0220 12:27:58.050860 54 cuda_memory_manager.cc:115] CUDA memory pool disabled
I0220 12:27:58.055310 54 model_lifecycle.cc:459] loading: arcface_resnet18_110:1
I0220 12:27:58.055458 54 model_lifecycle.cc:459] loading: face-reidentification-retail-0095:1
I0220 12:27:58.055516 54 model_lifecycle.cc:459] loading: face_detection_0204:1
I0220 12:27:58.055578 54 model_lifecycle.cc:459] loading: face_detection_postprocess:1
I0220 12:27:58.055642 54 model_lifecycle.cc:459] loading: facenet_trtserver:1
E0220 12:27:58.056370 54 model_lifecycle.cc:597] failed to load 'face_detection_0204' version 1: Invalid argument: unable to find 'libtriton_openvino.so' for model 'face_detection_0204', searched: app/triton_server/models/face_detection_0204/1, app/triton_server/models/face_detection_0204, /opt/tritonserver/backends/openvino
E0220 12:27:58.056363 54 model_lifecycle.cc:597] failed to load 'face-reidentification-retail-0095' version 1: Invalid argument: unable to find 'libtriton_openvino.so' for model 'face-reidentification-retail-0095', searched: app/triton_server/models/face-reidentification-retail-0095/1, app/triton_server/models/face-reidentification-retail-0095, /opt/tritonserver/backends/openvino
I0220 12:27:58.066352 54 onnxruntime.cc:2459] TRITONBACKEND_Initialize: onnxruntime
I0220 12:27:58.066396 54 onnxruntime.cc:2469] Triton TRITONBACKEND API version: 1.10
I0220 12:27:58.066399 54 onnxruntime.cc:2475] 'onnxruntime' TRITONBACKEND API version: 1.10
I0220 12:27:58.066402 54 onnxruntime.cc:2505] backend configuration:
{"cmdline":{"auto-complete-config":"true","min-compute-capability":"6.000000","backend-directory":"/opt/tritonserver/backends","default-max-batch-size":"4"}}
/home/triton-server/venv/lib/python3.8/site-packages/pydantic/_internal/fields.py:151: UserWarning: Field "model_name" has conflict with protected namespace "model".
You may be able to resolve this warning by setting model_config['protected_namespaces'] = ().
warnings.warn(
I0220 12:28:00.323930 54 tensorflow.cc:2536] TRITONBACKEND_Initialize: tensorflow
I0220 12:28:00.324065 54 tensorflow.cc:2546] Triton TRITONBACKEND API version: 1.10
I0220 12:28:00.324072 54 tensorflow.cc:2552] 'tensorflow' TRITONBACKEND API version: 1.10
I0220 12:28:00.324076 54 tensorflow.cc:2576] backend configuration:
{"cmdline":{"auto-complete-config":"true","min-compute-capability":"6.000000","backend-directory":"/opt/tritonserver/backends","default-max-batch-size":"4"}}
I0220 12:28:00.324242 54 python_be.cc:1856] TRITONBACKEND_ModelInstanceInitialize: face_detection_postprocess_0 (CPU device 0)
I0220 12:28:00.516557 54 model_lifecycle.cc:694] successfully loaded 'face_detection_postprocess' version 1
I0220 12:28:00.521232 54 onnxruntime.cc:2563] TRITONBACKEND_ModelInitialize: arcface_resnet18_110 (version 1)
I0220 12:28:00.522941 54 onnxruntime.cc:666] skipping model configuration auto-complete for 'arcface_resnet18_110': inputs and outputs already specified
I0220 12:28:00.523689 54 onnxruntime.cc:2606] TRITONBACKEND_ModelInstanceInitialize: arcface_resnet18_110_0 (CPU device 0)
I0220 12:28:00.893132 54 tensorflow.cc:2642] TRITONBACKEND_ModelInitialize: facenet_trtserver (version 1)
I0220 12:28:00.894961 54 model_lifecycle.cc:694] successfully loaded 'arcface_resnet18_110' version 1
2024-02-20 12:28:00.896630: I tensorflow/cc/saved_model/reader.cc:45] Reading SavedModel from: app/triton_server/models/facenet_trtserver/1/model.savedmodel
2024-02-20 12:28:00.992433: I tensorflow/cc/saved_model/reader.cc:89] Reading meta graph with tags { serve }
2024-02-20 12:28:00.994066: I tensorflow/cc/saved_model/reader.cc:130] Reading SavedModel debug info (if present) from: app/triton_server/models/facenet_trtserver/1/model.savedmodel
2024-02-20 12:28:01.036530: E tensorflow/stream_executor/cuda/cuda_driver.cc:265] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
2024-02-20 12:28:01.036597: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (a5543553b3b8): /proc/driver/nvidia/version does not exist
2024-02-20 12:28:01.310714: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:354] MLIR V1 optimization pass is not enabled
2024-02-20 12:28:01.358767: I tensorflow/cc/saved_model/loader.cc:231] Restoring SavedModel bundle.
2024-02-20 12:28:02.613673: I tensorflow/cc/saved_model/loader.cc:215] Running initialization op on SavedModel bundle at path: app/triton_server/models/facenet_trtserver/1/model.savedmodel
2024-02-20 12:28:03.136287: I tensorflow/cc/saved_model/loader.cc:325] SavedModel load for tags { serve }; Status: success: OK. Took 2239755 microseconds.
I0220 12:28:03.429492 54 tensorflow.cc:2691] TRITONBACKEND_ModelInstanceInitialize: facenet_trtserver_0 (CPU device 0)
W0220 12:28:03.430826 54 tensorflow.cc:834] GPU Execution Accelerator will be ignored for model instance on CPU
2024-02-20 12:28:03.430997: I tensorflow/cc/saved_model/reader.cc:45] Reading SavedModel from: app/triton_server/models/facenet_trtserver/1/model.savedmodel
2024-02-20 12:28:03.477543: I tensorflow/cc/saved_model/reader.cc:89] Reading meta graph with tags { serve }
2024-02-20 12:28:03.477623: I tensorflow/cc/saved_model/reader.cc:130] Reading SavedModel debug info (if present) from: app/triton_server/models/facenet_trtserver/1/model.savedmodel
2024-02-20 12:28:03.650165: I tensorflow/cc/saved_model/loader.cc:231] Restoring SavedModel bundle.
2024-02-20 12:28:04.859342: I tensorflow/cc/saved_model/loader.cc:215] Running initialization op on SavedModel bundle at path: app/triton_server/models/facenet_trtserver/1/model.savedmodel
2024-02-20 12:28:05.212270: I tensorflow/cc/saved_model/loader.cc:325] SavedModel load for tags { serve }; Status: success: OK. Took 1781321 microseconds.
I0220 12:28:05.213535 54 model_lifecycle.cc:694] successfully loaded 'facenet_trtserver' version 1
E0220 12:28:05.215350 54 model_repository_manager.cc:487] Invalid argument: ensemble 'ensemble_face_arcface' depends on 'face_detection_0204' which has no loaded version
E0220 12:28:05.215807 54 model_repository_manager.cc:487] Invalid argument: ensemble 'ensemble_face_face_reid' depends on 'face-reidentification-retail-0095' which has no loaded version
E0220 12:28:05.215817 54 model_repository_manager.cc:487] Invalid argument: ensemble 'ensemble_face_facenet' depends on 'face_detection_0204' which has no loaded version
I0220 12:28:05.220091 54 server.cc:563]
+------------------+------+
| Repository Agent | Path |
+------------------+------+
+------------------+------+
I0220 12:28:05.220224 54 server.cc:590]
+-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Backend     | Path                                                            | Config                                                                                |
+-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| onnxruntime | /opt/tritonserver/backends/onnxruntime/libtriton_onnxruntime.so | {"cmdline":{"auto-complete-config":"true","min-compute-capability":"6.000000","backend-directory":"/opt/tritonserver/backends","default-max-batch-size":"4"}} |
| python      | /opt/tritonserver/backends/python/libtriton_python.so           | {"cmdline":{"auto-complete-config":"true","min-compute-capability":"6.000000","backend-directory":"/opt/tritonserver/backends","default-max-batch-size":"4"}} |
| tensorflow  | /opt/tritonserver/backends/tensorflow2/libtriton_tensorflow2.so | {"cmdline":{"auto-complete-config":"true","min-compute-capability":"6.000000","backend-directory":"/opt/tritonserver/backends","default-max-batch-size":"4"}} |
+-------------+-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
I0220 12:28:05.220770 54 server.cc:633]
+-----------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Model                             | Version | Status                                                                                |
+-----------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| arcface_resnet18_110              | 1       | READY                                                                                |
| face-reidentification-retail-0095 | 1       | UNAVAILABLE: Invalid argument: unable to find 'libtriton_openvino.so' for model 'face-reidentification-retail-0095', searched: app/triton_server/models/face-reidentification-retail-0095/1, app/triton_server/models/face-reidentification-retail-0095, /opt/tritonserver/backends/openvino |
| face_detection_0204               | 1       | UNAVAILABLE: Invalid argument: unable to find 'libtriton_openvino.so' for model 'face_detection_0204', searched: app/triton_server/models/face_detection_0204/1, app/triton_server/models/face_detection_0204, /opt/tritonserver/backends/openvino                                           |
| face_detection_postprocess        | 1       | READY                                                                                |
| facenet_trtserver                 | 1       | READY                                                                                |
+-----------------------------------+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
I0220 12:28:05.223044 54 tritonserver.cc:2264]
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Option                           | Value                                                                                |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| server_id                        | triton                                                                                |
| server_version                   | 2.29.0                                                                                |
| server_extensions                | classification sequence model_repository model_repository(unload_dependents) schedule_policy model_configuration system_shared_memory cuda_shared_memory binary_tensor_data statistics trace logging |
| model_repository_path[0]         | app/triton_server/models                                                                                |
| model_control_mode               | MODE_NONE                                                                                |
| strict_model_config              | 0                                                                                |
| rate_limit                       | OFF                                                                                |
| pinned_memory_pool_byte_size     | 268435456                                                                                |
| response_cache_byte_size         | 0                                                                                |
| min_supported_compute_capability | 6.0                                                                                |
| strict_readiness                 | 1                                                                                |
| exit_timeout                     | 30                                                                                |
+----------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
I0220 12:28:05.223066 54 server.cc:264] Waiting for in-flight requests to complete.
I0220 12:28:05.223075 54 server.cc:280] Timeout 30: Found 0 model versions that have in-flight inferences
I0220 12:28:05.223317 54 server.cc:295] All models are stopped, unloading models
I0220 12:28:05.223326 54 server.cc:302] Timeout 30: Found 3 live models and 0 in-flight non-inference requests
I0220 12:28:05.223921 54 onnxruntime.cc:2640] TRITONBACKEND_ModelInstanceFinalize: delete instance state
I0220 12:28:05.224416 54 tensorflow.cc:2729] TRITONBACKEND_ModelInstanceFinalize: delete instance state
I0220 12:28:05.224479 54 tensorflow.cc:2668] TRITONBACKEND_ModelFinalize: delete model state
I0220 12:28:05.392863 54 onnxruntime.cc:2586] TRITONBACKEND_ModelFinalize: delete model state
I0220 12:28:05.394893 54 model_lifecycle.cc:579] successfully unloaded 'arcface_resnet18_110' version 1
I0220 12:28:05.489371 54 model_lifecycle.cc:579] successfully unloaded 'facenet_trtserver' version 1
I0220 12:28:06.225798 54 server.cc:302] Timeout 29: Found 1 live models and 0 in-flight non-inference requests
I0220 12:28:06.530202 54 model_lifecycle.cc:579] successfully unloaded 'face_detection_postprocess' version 1
I0220 12:28:07.229122 54 server.cc:302] Timeout 28: Found 0 live models and 0 in-flight non-inference requests
error: creating server: Internal - failed to load all models

@nurmukhametdaniyar , it seems the OpenVINO backend is not supported on mac m1 chips. I've raised an issue with in that GitHub repo inquiring about this issue.


True User Space for us to Share Projects; Coding; Community Based Help

Would like to share with others and see what they are doing as well as offer my work to help others.

I don't think such thing exists so far. @Badgerati and many other Pode Users are mainly hanging around in slack.
However I can hardly imagine such a platform being utilized actively..

Hi @jbaechtelKoala9126,
Pode does have a Discord server here, where some of the community ask/answer questions and show what they've done. (a #projects channel could be cool actually - but I imagine most people build internal tools with Pode that they can't showcase/share).
There's channels for Pode/Pode.Web help specifically, plus an #ideas channel for anyone who has a large feature suggestion, but wants to toss the idea out there without raising an issue first.


Leverage LINQ while selecting columns from Table

Feature request
Is your feature request related to a problem? Please describe.
Yes, Currently while selecting columns from database we have to pass column names as magic string comma sperated in Select method.
This is error prone, even if we miss a letter unwillingly.
Describe the solution you'd like
We can leverage the linq while selecting columns (check below code for refrence)
var user = await client.Table<User>().Select(x => new { x.Username,x.Data }).Get();

Even if our column name changes in db table, we will have to just update the value in Column Attribute.
It will also be provide type safety.
Describe alternatives you've considered
No alternative
Additional context

I'll look into this!

@agwanyaseen this is available in v3.1.0 - Thanks for the feature request!


Update if conditions for Allure

Overview
Allure workflow fails when the workflow is re-run due to the mkdir command. Restricting the allure workflow to run only during the first attempt.
Checklist

[x] The contributing guide was applied
[x] The PR is tagged with appropriate label (urgent, trivial, complex)

The change lgtm, but is it intended to ignore the runs after the first attempt?

The allure reports are currently configured to store the test results of every run number. Storing the results for every run attempt under every run_number would require more tweaking of the code. I could either chose to store the last attempt overwriting everything or just keep the first attempt and i decided to do the latter.

I think the first attempt makes sense because it shows us what went wrong the first time in case of re-runs. If we went with the last we might only see the successful ones after running retries


Implement Swizzle and Splat for interpreter

Implemented for the Cranelift interpreter:

Swizzle to shuffle an i8x16 SIMD vector based
on the indices specified in another vector of the same size.
Splat to create a SIMD vector with all lanes having the same value.

Copyright (c) 2021, Arm Limited

@dheaton-arm, looks like the error is an old x86 backend failure: https://github.com/bytecodealliance/wasmtime/pull/3268/checks?check_run_id=3472257330#step:6:1203. I can't remember off the top of my head if there is a way to constrain the tests to just the new backend, which is a potential solution. But I have a suspicion that the type conversion I mentioned above could also be causing the issue (i.e., if we only retain the i8x16 version, does the old backend pass?).


docs: css

there are some issues with the css, plus it can be changed to look better

might have a look during the weekend but cannot promise for 100%

LGTM, a lot better than before 👍

:)


Lazy routes support

I have been playing around with choo last night and it made me dive into the internals of choo, sheet-router, and wayfarer!
Your modules have a pretty nice api and are small enough to be easy to be grokked, good job man 😊
I have seen that the version used in choo currently is 3.1.0 whereas the latest version is 4.1.1.
I'm a avid Webpack user and as I was playing around, I managed to add support for lazy-loading of views on the router.
I ended up modifying wayfarer and sheet-router for that purpose.
Based on version 3.1.0 (used in choo), I've added a parameter called createLazyRoute to the sheet-router constructor:
// from sheet-router

// fn(str, any[..], fn?, fn?) -> fn(str, any[..])
function sheetRouter (dft, createTree, createRoute, createLazyRoute) {
  createRoute = (createRoute ? createRoute(_createRoute) : _createRoute)
  createLazyRoute = (createLazyRoute ? createLazyRoute(_createLazyRoute) : _createLazyRoute)
  /* ... unchanged code ... */
}

/* ... unchanged code ... */

// register lazy route
function _createLazyRoute (route, inline, child) {
  const lazy = true
  if (!child) {
    child = inline
    inline = null
  }
  assert.equal(typeof route, 'string', 'route must be a string')
  assert.ok(child, 'child exists')

  route = route.replace(/^\//, '')
  return [ route, inline, child, lazy ] // <-- lazy flag to tell wayfarer to tell that he'll receive a Promise<view()> from the cb
}

I did a slight modification on wayfarer to handle Promise<view()> :
// from wayfarer
function on (route, cb, type) {
  /* ... unchanged code ... */

  if (cb && cb._wayfarer && cb._trie) {
    _trie.mount(route, cb._trie.trie)
  } else {
    const node = _trie.create(route)
    node.cb = cb
    if(type === "lazy") node.lazy = cb // <-- here is the lazy fn
  }

  return emit
}

function emit (route) {
   /* ... unchanged code ... */

  if (node && node.lazy) {
    args[0] = node.params
    return node.lazy().then(view => view.apply(null, args)) // <-- node.lazy() returns a Promise<view()>
  }

  if (node && node.cb) {
    args[0] = node.params
    return node.cb.apply(null, args)
  }

  /* ... unchanged code ... */
}

And in the end on the choo part, I can register lazy routes as is :
// from choo
function createLazyRoute (routeFn) {
  return function (route, inline, child) {
    const wrap_curry = (_route) => (_child) => wrap(_child, _route)
    if (typeof inline === 'function') {
      var newInline = () => inline(wrap_curry(route))
    }
    return routeFn(route, newInline, child)
  }

  function wrap (child, route) {
    const send = createSend('view: ' + route, true)
    return function chooWrap (params, state, resolveData) {
      const nwPrev = prev
      const nwState = prev = xtend(state, { params: params, resolveData: resolveData })
      if (opts.freeze !== false) Object.freeze(nwState)
      return child(nwState, nwPrev, send)
    }
  }
}

Now on the user side, registering lazy routes is done like that :
// Do not forget to wrap the view fn with chooWrap :-)
const lazyLoadedView = (wrap) => System.import('./dependency.js').then(module => wrap(module))

app.router((route, lazyRoute) => [ //<-- I can have a new parameter to register lazy routes
  route('/', view),
  lazyRoute('/lazy', lazyLoadedView)  //<-- Here is a lazy route
])

// That part is a necessary tradeoff if we want to have lazy routes ... :( It can be better I think.
app.start()
.then(domTree => document.querySelector("#choo").appendChild(domTree))

Here is the dependency.js file :
const html = require('choo/html')

const view = (state, prev, send) => {
  return html`

Hi I'm lazy-loaded !

`
}

module.exports = view

All of this was possible because of the route() arg needed to register routes on the sheetRouter tree.
I could create a lazyRoute()arg that has the same behavior as route() but for views wrapped in a Promise.
I've noticed that in v4.1.1, there is no more route() arg since this commit.
So here I am today :

I'd like to discuss with you guys if code-splitting support can be a valuable addition to sheet-router.
Is there a way to do code-splitting with browserify ? How ? (maybe with substack/factor-bundle ?)
How would be the best way to implement it with the new lispy-syntax ?

Cheers 😊
EDIT : I've added an example project if you want to have a more concrete look on what I did
https://github.com/YannickDot/lazy-routes-choo-example

This is heaps cool; personally I'm not a fan of promises but having some way of doing this would be neat I reckon - perhaps doing it through a wrapRoutes hook would be the way to go?
I've never attempted code splitting before as it's a very late-stage optimization, but I believe factor-bundle is indeed the way to go. But you might be a better judge of if it's a good fit or not (:

Yeah, the same, I wish I had a way to do it without wrapping everything in a Promise, it makes me sad 🤕
I'll try to dig further into this.
What to you mean by a wrapRoutes hook ? You mean in the createRoute function ?
I've not that much experience with browserify but it is a nice occasion to try myself at it.

Oh by the way, I've managed to simplify the previous code.
Now I only have to patch wayfarer and the createRoute fn from choo.
// from choo
function createRoute (routeFn) {
  return function (route, inline, child) {
    var wrapped = inline
    if (typeof inline === 'function' && inline.lazy) {
      const wrap_lazy = (_route) => (_child) => wrap(_child, _route)
      wrapped = () => inline(wrap_lazy(route))
      wrapped.lazy = true
    }
    else if (typeof inline === 'function') {
      wrapped = wrap(inline, route)
    }
    return routeFn(route, wrapped, child)
  }

  function wrap (child, route) {
    const send = createSend('view: ' + route, true)
    return function chooWrap (params, state, resolveData) {
      const nwPrev = prev
      const nwState = prev = xtend(state, { params: params, resolveData: resolveData })
      if (opts.freeze !== false) Object.freeze(nwState)
      return child(nwState, nwPrev, send)
    }
  }
}

// from wayfarer
function emit() {
  // ... unchanged code ..

  if (node && node.cb && node.cb.lazy) {
    args[0] = node.params
    return node.cb().then(view => view.apply(null, args))
  }

  // ... unchanged code ...
}

Usage
const lazyLoadedView = (wrap) => System.import('./dependency.js').then(module => wrap(module.view))

app.router((route) => [
  route('/', view),
  route('/lazy', markAslazy(lazyLoadedView)) // <-- mark view cb as lazy view
])

app.start()
.then(domTree => document.querySelector("#choo").appendChild(domTree))

The markAslazy function is basically :
function lazy (fn) {
  fn.lazy = true
  return fn
}

I hope this would make a transition to v4 easier.


make sure that munchausen recreates containers

--force-recreate seems to have unwanted side-effects since it affects all 4 containers
using docker-compose methods would only affect those we have stopped and not the registry containers that still is running


Add GraphicsDeviceContext helper struct + methods

Hope these types of PR are ok - this is pretty low priority, as it's just a developer usability thing, but it may be useful :)
This adds a GraphicsDeviceContext helper struct + associated methods for use with the tri-lock code added in #644 that makes idiomatic code like:
using var ctx = Graphics.LendGraphicsDeviceContext()
{
// some code using ctx
}

possible, which will hopefully help to ensure that graphics devices are returned, including in the case of errors, without having to remember to use a try/finally block or call the release method.
It's implemented as a readonly ref struct so it shouldn't incur extra heap allocations and performance impact should be minimal. The existing LendGraphicsDevice methods remain, so that both approaches can be used.

gah, I must've started this right as #653 went in and I didn't notice >.< - feel free to close this if you want.

I think this is a better solution!  Let me review and ensure it resolves the issue I was running into.  👍


sampling strategy to improve class balance across cell cycle

At a recent meeting, we discussed strategies to achieve class balance across the cell cycle. @ziw-liu proposed a selection of FOVs based on the rough measure of the shape of the cells, which I think is a good way to digitally sort the FOVs while constructing a batch.
Let's continue to think about this. We need:
a) rough measures of the cell cycle stage:

cytoplasm/nucleus ratio as measured from 'dirty' segmentations of target channels comes to my mind as the first measure to try. It should work for multiple cell types and microscopes.

b) strategies to assign a probability of sampling to a FOV or a patch:

@ziw-liu I recall you used the fluorescence channel itself as a weight mask. Can you point to that call?
We can preprocess or annotate each FOV to assign it a score and use the score to achieve class balance.

@ziw-liu I recall you used the fluorescence channel itself as a weight mask. Can you point to that call?

It is the RandWeightedCropd transform from MONAI:
https://github.com/mehta-lab/viscy/blob/6daf3223372504fc35e6f44e5909061c426cb2c7/viscy/light/data.py#L493-L497


Support authentication using TokenCredential

Azure Cache for Redis supports authentication using any AAD principal. The current implementation of this library however only supports ambient managed identities as well as service principals with client secret. This excludes using this for example in local development using AzureCliCredential or alternatives. Azure SDK guidelines on authentication recommend:

DO provide a service client constructor or factory that accepts an instance of the TokenCredential abstraction from Azure Core.

I understand Redis authentication is not pure Bearer token authentication, since it also needs information about the corresponding principal identity (username) in addition to the token (password). However this library should support the typical mechanism of TokenCredential combined with information about the principal, e.g.
ConfigureForAzureWithTokenCredential(string principalId, TokenCredential credential). This library could then as necessary refresh the password with a new token and perform possible caching (although this is also against the typical guidelines).
This change would allow the library consumer provide any desired token source for the specified principal.
Ideally this library would follow the typical SDK path of handling authentication using only TokenCredential and not use MSAL, which would drop the need to depend on Azure.Identity and require only Azure.Core.

do you have examples of other SDKs which do it in this way?

Sure! Here are some examples from other Microsoft SDKs:

Azure App Configuration documentation and SDK source using TokenCredentials
Azure Service Bus documentation and SDK source using TokenCredential
Azure Storage Blob documentation and SDK source using TokenCredential

Are the SDK packages basically implementing the Azure.Identity calls via HTTP directly or some such, rather than a dependency, or some other approach?

They are not specifically constructing any particular identity client, rather they are taking in the abstract TokenCredential and calling GetTokenAsync as required to acquire an access token for a specified TokenRequestContext (e.g. defining required token scopes).

The library overall is a bit of a pairing with a Redis service which recognizes the underlying token - what would we be feeding the token to locally?

Local development workflows often use Azure resource instances. To avoid having shared key authentication, these can often be configured to use the ambient authentication credential which can be AAD user login locally and managed identity in Azure. From the documentation of DefaultAzureCredential: "The DefaultAzureCredential is appropriate for most scenarios where the application is intended to ultimately be run in Azure. This is because the DefaultAzureCredential combines credentials commonly used to authenticate when deployed, with credentials used to authenticate in a development environment.".

If you have some scenarios that would be a huge help in figuring how to best support it if that makes sense.

It would be great to be able to develop locally against Azure Redis using AAD authentication and then have the same authentication mechanism work when running Azure hosted with managed identity.

Hello,
Given that this isn't available yet, is there any way to use the DefaultAzureCredentials and authenticate with Azure Redis? Looking at the examples, I could not find any API that we could use.
Thanks.

Yes, you can simply pass the DefaultAzureCredentials.GetToken().Token as the password for a Redis connection. User name is the 'Username' value from the cache's 'Data Access Configuration' blade in the Portal. Note that the connection will be closed when the token expires, unless you periodically re-AUTH the connection with fresh tokens like this extension does.

Hi @philon-msft,
Given that we should re-use the ConnectionMultiplexer object, how do we manage to always have a valid token without creating the ConnectionMultiplexer object over and over again?
Reference:

https://github.com/StackExchange/StackExchange.Redis/blob/main/docs/Basics.md#basic-usage

Thanks again for the suggestion!

TokenCredential, particularly DefaultAzureCredential would be great as a built-in.
We currently use Azure Workload Identity and managed identities for all of our applications in K8s that need access to Azure resources.
The DefaultAzureCredential makes it possible to use the same simple setup code locally as when deployed--no clunky logic. More importantly, it also has the benefit that your application does not need to be aware of its own identity (nor how to retrieve it). Needing to specify the object/principalId on a per-app basis is practically a non-starter for us since we don't need to do it elsewhere (when using client libs/Azure SDKs for Azure Storage, Azure Postgres, Azure ServiceBus, etc).
DefaultAzureCredential knows exactly how to read the enviroment; so if you are using AZWI like us it will read-in:

the mounted federated token file (aka password)
the tenant and client/principalId from well-known enviroment variables

We were super excited that Azure offered ACLs/RBAC for managed identities to the Redis Cache. This was the last resource we leverage where we had to maintain a user/pass combination.
The workaround above may suffice (I've not tried it yet), but the simplicity of TokenCredential setup plus the inbox automatic token refresh would be a game changer IMO

Needing to specify the object/principalId on a per-app basis

I am not sure why the Azure Redis AAD implementation needs the principal identifier as the username, since the password (AAD token) component includes the principal identifier as the token subject. It would be more Bearer token like for the Redis username to always be a constant Berarer or something similar.

Needing to specify the object/principalId on a per-app basis

I am not sure why the Azure Redis AAD implementation needs the principal identifier as the username, since the password (AAD token) component includes the principal identifier as the token subject. It would be more Bearer token like for the Redis username to always be a constant Berarer or something similar.

I agree on this, but it doesn't necessarily even need to do that as I wouldn't see that aspect changing (its service side rather than relevant to this library). The token contains the Principal ID which could be extracted by this library for usage as the username, although it would put an onus on this library to parse the JWT which may result in extra dependencies. That said, the ability is part of .NET.
Either way, a +1 for this. We have a reusable DefaultAzureCredential and so being able to pass in to this library this already existing credential would be marginally beneficial.

At the moment this is possible, because the access tokens for the Redis audience seem to be decodable JWTs. This is not guaranteed however, since access tokens are intended for the target service and should be treated as opaque:

The contents of the token are intended only for the API, which means that access tokens must be treated as opaque strings. For validation and debugging purposes only, developers can decode JWTs using a site like jwt.ms (https://jwt.ms/). Tokens that a Microsoft API receives might not always be a JWT that can be decoded.

Interesting to know - I haven't seen a token come back that wasn't decodable so far (for a few different services).
Personally, I'd prefer an extension point off of DefaultAzureCredential (or its equivalents) to provide the Principal ID that was resolved, but I feel that's a much bigger ask.
I think a common use case (similar to ours) would be to set up a Managed Identity for a service when in Azure, and having to add in that Principal ID as a configuration value feels a little unnecessary.

Absolutely. The current Redis AAD implementation unfortunately does not allow us an elegant solution. The correct solution would be for the Redis service implementation to be changed to match how all other services do token authentication. Until then we either need to provide the principal username or do unsupported decoding of the token.

At the moment this is possible, because the access tokens for the Redis audience seem to be decodable JWTs. This is not guaranteed however, since access tokens are intended for the target service and should be treated as opaque:

The contents of the token are intended only for the API, which means that access tokens must be treated as opaque strings. For validation and debugging purposes only, developers can decode JWTs using a site like jwt.ms (https://jwt.ms/). Tokens that a Microsoft API receives might not always be a JWT that can be decoded.

Opaque tokens are a thing of the past (original oauth2 specs) ..
With openidconnect specs everybody expect signed jwt tokens and inspect claims for scopes and other stuff .. should the format change all azure would fall down I a few seconds

@sabbadino that is the case for ID tokens, but access tokens are different:

ID tokens are meant to be read by the OAuth client. Access tokens are meant to be read by the resource server.
ID tokens are JWTs. Access tokens can be JWTs but may also be a random string.
ID tokens should never be sent to an API. Access tokens should never be read by the client.

Microsoft docs on OIDC ID tokens:

Third-party applications are intended to understand ID tokens. ID tokens shouldn't be used for authorization purposes. Access tokens are used for authorization. The claims provided by ID tokens can be used for UX inside your application, as keys in a database, and providing access to the client application
Because ID tokens are always a JWT token, many libraries exist to validate these tokens

Microsoft docs on OAuth2 access tokens:

Per the OAuth specification, access tokens are opaque strings without a set format. Some identity providers (IDPs) use GUIDs and others use encrypted blobs. The format of the access token can depend on the configuration of the API that accepts it.
Custom APIs registered by developers on the Microsoft identity platform can choose from two different formats of JSON Web Tokens (JWTs) called v1.0 and v2.0. Microsoft-developed APIs like Microsoft Graph or APIs in Azure have other proprietary token formats. These proprietary formats that can't be validated might be encrypted tokens, JWTs, or special JWT-like.

Hi, currently azure aad access tokens are jwt and I doubt Ms is going to change it ..
Anyway , I suggest to use the same  implementation used by other libraries such as azure key vault: you don't need to provide system managed identity principal Id, one just need to use ManagedIdentityCredential
https://learn.microsoft.com/en-us/azure/azure-app-configuration/use-key-vault-references-dotnet-core?tabs=core6x

currently azure aad access tokens are jwt and I doubt Ms is going to change it

That is not the case. In Azure AD you can encrypt access tokens by setting tokenEncryptionKeyId on the app manifest so that only the holder of the private key (typically the resource server) can view them.
Maybe the Redis service will never configure token encryption, maybe they will, maybe they will do something else to the tokens that make client side decoding problematic. The client shouldn't care, because the client should never be parsing the contents in the first place.

I suggest to use the same implementation used by other libraries such as azure key vault: you don't need to provide system managed identity principal Id, one just need to use ManagedIdentityCredential

That is my suggestion exactly as described in my previous comment:

I am not sure why the Azure Redis AAD implementation needs the principal identifier as the username, since the password (AAD token) component includes the principal identifier as the token subject. It would be more Bearer token like for the Redis username to always be a constant Bearer or something similar.

Ah, sorry, only now I see your point (maybe) services like akv ask for the token for authentication while redis wants the principal Id in plain text .
If I got it well, then it is something that has to be changed on the azure redis cache side , not the c# SDK, am I right?

it is something that has to be changed on the azure redis cache side , not the c# SDK, am I right

Correct. It is the responsibility of the target resource to ensure the token is valid and the token principal is authorized. Having the principal in the username serves no purpose since the same principal must be verified from the token subject.

TokenCredential and DefaultAzureCredential are now supported in v2.0.0. Please give it a try and let us know what you think.
For now, the extension still requires UserName/PrincipalId to be passed. If we're able to remove the requirement on the server side in the future, the extension will be updated accordingly.

Closing this to clean up, but I'm happy to re-open if needed

TokenCredential and DefaultAzureCredential are now supported in v2.0.0. Please give it a try and let us know what you think.
For now, the extension still requires UserName/PrincipalId to be passed. If we're able to remove the requirement on the server side in the future, the extension will be updated accordingly.

i think that as long as we need to provide PrincipalId  it is not production ready : in azure web apps .. different slots of same azure web app have different system managed identity PrincipalId  .. so .. ;) i think you get the point

So long as UserName/PrincipalId is required there is no clean way to use Azure Cache for Redis during development. We use DefaultAzureCredential to authenticate with other Azure services and this works really well for local development. We are currently using the following workaround but that's not sustainable:
public static async Task<ConfigurationOptions> ConfigureForAzureWithTokenCredentialAsync(this ConfigurationOptions redisConfigurationOptions, TokenCredential tokenCredential, CancellationToken cancellationToken = default)
{
    var requestContext = new TokenRequestContext([ "acca5fbb-b7e4-4009-81f1-37e38fd66d78/.default" ]);

    var tokenResult = await tokenCredential.GetTokenAsync(requestContext, cancellationToken); ;

    var jwt = new JwtSecurityToken(tokenResult.Token);

    var oid = jwt.Claims.FirstOrDefault(c => c.Type == "oid")?.Value ?? throw new InvalidOperationException("Couln't find principal id");

    return await redisConfigurationOptions.ConfigureForAzureWithTokenCredentialAsync(oid, tokenCredential);
}

For what it's worth, +1 on having Azure Cache for Redis support DefaultAzureCredential and work the same as other Azure Services...  We are developing a new Azure-based solution for a startup, leveraging these azure services:

cosmosdb
service bus
azure sql
key vault
blob storage
azure redis cache
maybe others...

All of these will use managed identity in azure, an AAD 'user identity' in dev, and DefaultAzureCredential to support moving code from dev to prod with no changes.  Having Redis be the oddball here feels unnatural and requires us to consider just dumping AAD auth for redis only and still with access keys..  really hate to do that!

I also agree and do not see this as resolved until authentication can by using new DefaultAzureCredential().
I have been going through a project and swapping out connection strings in favour of ManagedIdentity and connecting to Azure Redis cache is the only resource causing grief because it needs the principalId.

Thanks all for your feedback on the UserName/PrincipalId requirement. We absolutely understand that this is a pain point that should be improved. We're working on fixing it properly, but don't have a timeline yet. I'll update when we have more clarity.
Meanwhile, I encourage anyone else who's impacted by this (or any other issues with the package) to please report it here.

I am not sure if @pwiens  solution works in all cases but here is a pull request:
https://github.com/Azure/Microsoft.Azure.StackExchangeRedis/pull/43

For what it's worth, +1 on having Azure Cache for Redis support DefaultAzureCredential and work the same as other Azure Services... We are developing a new Azure-based solution for a startup, leveraging these azure services:

cosmosdb
service bus
azure sql
key vault
blob storage
azure redis cache
maybe others...

All of these will use managed identity in azure, an AAD 'user identity' in dev, and DefaultAzureCredential to support moving code from dev to prod with no changes. Having Redis be the oddball here feels unnatural and requires us to consider just dumping AAD auth for redis only and still with access keys.. really hate to do that!

Although it would be perfect to have the DefaultAzureCredential work in the redis resource as well, could the workaround be having the redis connection string in the key vault that is accessed using the default credential (managed identity)? So the final result would be more or less the same.

For what it's worth, +1 on having Azure Cache for Redis support DefaultAzureCredential and work the same as other Azure Services... We are developing a new Azure-based solution for a startup, leveraging these azure services:

cosmosdb
service bus
azure sql
key vault
blob storage
azure redis cache
maybe others...

All of these will use managed identity in azure, an AAD 'user identity' in dev, and DefaultAzureCredential to support moving code from dev to prod with no changes. Having Redis be the oddball here feels unnatural and requires us to consider just dumping AAD auth for redis only and still with access keys.. really hate to do that!

Although it would be perfect to have the DefaultAzureCredential work in the redis resource as well, could the workaround be having the redis connection string in the key vault that is accessed using the default credential (managed identity)? So the final result would be more or less the same.

That’s not a bad idea and worth exploring as a workaround until full support is available.  I may look into it as a option.

For what it's worth, +1 on having Azure Cache for Redis support DefaultAzureCredential and work the same as other Azure Services... We are developing a new Azure-based solution for a startup, leveraging these azure services:

cosmosdb
service bus
azure sql
key vault
blob storage
azure redis cache
maybe others...

All of these will use managed identity in azure, an AAD 'user identity' in dev, and DefaultAzureCredential to support moving code from dev to prod with no changes. Having Redis be the oddball here feels unnatural and requires us to consider just dumping AAD auth for redis only and still with access keys.. really hate to do that!

Although it would be perfect to have the DefaultAzureCredential work in the redis resource as well, could the workaround be having the redis connection string in the key vault that is accessed using the default credential (managed identity)? So the final result would be more or less the same.

That's what we did , what else one can do ?
But that's just a work around

This would be great(!) to have! Using managed identity across the stack here now, and this is the only place where we need to add a workaround with a connection string in key vault etc.

I am interested in this as well. We are able to use DefaultAzureCredentials for all of the Azure Services we are using aside from Redis Cache. It would make our development and production deployments a lot more secure and easy to maintain.

Closing this now that principalId extraction was implemented in #48 and released in 3.0.0. Let us know if you have suggestions or see any issues.


feat: at_client offline access

- What I did

Enable at_client to usage when the device is offline.
AtClient can be used in offline mode only if the atSign is paired with the device.

- How I did it

In at_client_impl, Initialise the storage and verify if the encryption public key is available in the storage. This is to ensure that the atSign is paired with the device.
If the above returns true, allow the client to use at_client in offline mode.

- Description for the changelog

Enable at_client usage when device is in offline mode.

Have added a comment to the ticket

The changes are not valid. We have a different approach in addressing the issue. Hence closing this PR.


Remove legacy logging

This PR, which is based off the work in #1511, removes the legacy logging APIs WriteLog, CondLog and ShouldLog. A new API, debugJournal can be used when logging from places where a journal is not available.
Commits cecb10d and 3a155b2 are unrelated cleanups that I stumbled upon. Please review them carefully.
@scottschurr, @vinniefalco

Current coverage is 61.92%

Merging #1515 into develop will decrease coverage by -0.07% as of 1645b21

@@            develop   #1515   diff @@
=======================================
  Files           888     888
  Stmts         62871   62883    +12
  Branches          0       0
  Methods           0       0
=======================================
- Hit           38979   38942    -37
  Partial           0       0
- Missed        23892   23941    +49

Review entire Coverage Diff as of 1645b21

Powered by Codecov. Updated on successful CI builds.

:+1: I brought up a couple of items, but I think it's good as it stands.

@scottschurr: I have addressed all the things you pointed out; I'm going to rebase and squash.

:+1:

Merged as 5ac744ff6694847cf8e209a8d34a2f9119b57648, 57d6ab091ca333d28d5dc876bf0e7839c8ce157a and 2be11874e3969f67de67e7b29419d699c64a84ff.


Fix RtlHardcoded warning for TaskbarController

Test: manually
Test: ./gradlew test

I also think this will break the app on actual right-to-left locales due to the layouts that the app loads via that preference also being hardcoded for the different positions on screen.

@farmerbb On most occasion, the Gravity.START is same as Gravity.LEFT, but Gravity.START can adapt for the real left position for RTL locales. There is an example created by AOSP: Replace left/right with start/end for Gravity / LayoutParams / Padding.

@farmerbb I will test it with RTL locales to see the result.

@farmerbb , you're right, thanks for your advice. There are left and right used by xml and other source files. If need, I can try to support RTL for other windows and views; if not, I will close this pr.

@farmerbb , I just change all "LEFT/RIGHT" to "START/END" in source files and xml files, the location is not correctly with RTL locales. Looks like there are code to calculate the location. I will close this par, and maybe to try it after large coverage tests.


WAVA Scan Institution Mediums Analysis for Student Portal

Description
Generate plan and tickets to address medium vulnerabilities resulting from WAVA scan.
Additional context
https://bcgov.sharepoint.com/:b:/r/teams/03177/Shared Documents/DEVS/Releases/WAVA Scan/v1.2.0-930/1135713-https___test-aest-sims.apps.silver.devops.gov.bc.ca_student_1012Security_Issues (1).pdf?csf=1&web=1&e=fmPWg6
Acceptance Criteria

[ ] Review 'MEDIUM' WAVA Scan Results of the Institution Release
[ ] Determine which are false Positives and prove this to David Malcolm
"There should be few False Positives – though there will be some. I’m open to alternative suggestions but would default to documenting the WAVA vulnerability and what procedure/test we applied in order to determine it was a False Positive in a SIMS JIRA ticket." ~David
[ ] Create a plan to address these Mediums. (Should they be address with the results of a Student Scan?)
[ ] Create tickets to implement fixes

I am ordering another wava scan as the application has seen significant upgrades

@JasonCTang requesting a fresh scan today


rest: improve error message for malformed json payload

Currently if there's an error with google::protobuf::util::JsonStringToMessage we return the status.message() the function returns which is something like:
INTERNAL: Unexpected end of string. Expected , or } after key:value pair.

Additional details indicating this was an error translating json to proto, details regarding what rpc and/or message type was problematic would be more actionable.

@sdhart can you double check the status of this?

fixed in #10602


Adding Bolt (third-party Runescape launcher)

Description of changes
Trying to implement Bolt, a third-party Runescape launcher. However, I need help on it as I'm missing a few things and I would like to be reviewed. Closes  #296491
Things done
Added the package, linked the correct libraries, added cmake files to libcef as well as pre/postInstall hooks. The application builds fine, however I cannot get it to run and I need input on this. When trying to run it, strace gives me:
openat(AT_FDCWD, "/nix/store/qavag7d0q4bslf85q61ika50h2prvk0y-cef-binary-121.3.13/lib/icudtl.dat", O_RDONLY) = -1 ENOENT (No such file or directory)

I suspect that there might be some path manipulation to do, as it looks for icudtl.dat in the wrong directory, even though it should be correctly installed?

Built on platform(s)

[x] x86_64-linux

Added a few extra dependencies inside of buildFHSEnv, so that it can be used by Runescape 3. Need input on this, as this is my first pull request and we had to do some odd stuff with the rpath, so I'm wondering if libcef itself should also be changed to be more extensible (ie. using autoPatchelfHook, I could not make it work using it so we had to override rpath in the install phase which is not great).

Definitely, if you can get autopatchelfHook to work, that would be preferable, but it's not blocking. You should squash your subsequent changes to package.nix into a single commit though.

You also shouldn't use any merge commits.

Squashed everything and removed the merge commit as pointed out in your last message. I did not manage to make autopatchElfhook, I'm pretty sure there would need to be some changes made to it so that it's more easily extensible without overriding the whole install phase, but I also don't want to mess up a hard dependency to some other programs.

This pull request has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/prs-already-reviewed/2617/2047


listView has been removed from React Native

I'm sorry this is very old project of mine and I don't have time to support it anymore

https://github.com/linhtc/react-native-draggable-board


Upstream TLS 1.3 support for pure-PSK and ECDHE-PSK exchanges

This issue tracks the upstreaming of support for PSK-based TLS 1.3 handshakes.
Source: https://github.com/hannestschofenig/mbedtls/tree/tls13-prototype
Precise acceptance criteria TBD.

Replaced by a series of issues under the TLS 1.3 PSK EPIC.


Cpp optimizations

Changes

Increased usage of STL functions for efficiency.
Reduced instances of pass-by-value to reduce amount of copying, particularly vectors.
Reduced amount of hash lookups (sets/maps). Although complexity is constant, lookups are quite expensive.
Increased usage of foreach loops
Some other misc. optimizations

Overall performance is increased by up to 37% in one test I ran of WolframModel.
Comments

No functionality changes.
As a bonus, these commits include auto code formatting. This partially addresses #319. You may see a lot of erasures on blank lines. Many IDEs including mine erase white space to reduce file size.

Examples
Testing setup functions:
Attributes[meanAroundTiming] = {HoldAll};
meanAroundTiming[expr_, measurementsCount_ : 5] :=
 MeanAround@Table[First@AbsoluteTiming[expr], measurementsCount]

speedupDelta[old_, new_] := UnitConvert[(old - new)/old, "Percent"]

run := meanAroundTiming[WolframModel[#1, Automatic, #2]] & @@@ {
   {{{1, 2}} -> {{1, 3}, {1, 3}, {3, 2}}, 10},
   {{{1, 2, 3}, {4, 3, 5}, {3, 6}} -> {{6, 7, 8}, {6, 9, 10}, {11, 8,
       10}, {5, 2, 9}, {9, 9}, {1, 9}, {7, 5}, {8, 5}}, 13},
   {{{1, 2, 2}, {3, 2, 4}} -> {{5, 4, 4}, {4, 3, 5}, {3, 5, 1}},
    10000},
   {{{1, 2}, {2, 1}, {1, 3}, {2, 3}, {3, 1}, {3, 2}} -> {{1, 2}, {2,
       1}, {1, 3}, {2, 3}, {3, 1}, {3, 2}, {1, 4}, {2, 4}, {3, 4}, {4,
        1}, {4, 2}, {4, 3}}, 4},
   {{{1}, {1}, {1}} -> {{1}, {1}, {1}, {1}}, 10}
   }

Running from master,
master = run

yields

Running from this branch,
this = run

yields

To compare the two, running
speedupDelta[master, this]

yields

This change is

I'll take a look once #330 is merged.

Fantastic work! Thanks! I just have a few questions/comments, mostly about style.

This is what I'm getting, more than twice worse performance in some cases: CPP_Optimizations_Test.nb.zip. There must be something we are not understanding about these changes. It's also interesting to note that my results are consistently slower, even on master.

Looks like this is going to be more complicated than we thought. I'm going to write a performance-testing script soon (maybe tomorrow), which would just take two branches as an argument, and return the performance difference. Then, I will run it with gcc on Gentoo to see if I can reproduce your results. It is possible that these changes cause performance regressions with clang (Apple clang version 11.0.3), but not with gcc.

I re-ran testing on master, CPP_Optimizations (before merge from master), and CPP_Optimizations (after merge from master). I'm not able to reproduce your performance loss:
CPP_Optimizations.nb.gz

Running same test on Windows 10 using latest version of MSVC, I get the same results as on Linux:
CPP_Optimizations.nb.gz

Using performanceTest.wlt script on performanceTest branch, I can reproduce your results on Linux (gcc 9.3.0), more or less. The large error bars are probably due to the fact that it's a VPS on a shared hardware:
Single-input rule                       10. ± 7. %
Medium rule                             0. ± 7. %
Sequential rule                         12. ± 7. %
Large rule                              18. ± 7. %
Exponential-match-count rule            26. ± 5. %

but not on Mac (clang-1<IP_ADDRESS>):
Single-input rule                       -276. ± 14. %
Medium rule                             -117.4 ± 1.0 %
Sequential rule                         -31.7 ± 0.9 %
Large rule                              7.3 ± 0.6 %
Exponential-match-count rule            22.31 ± 0.16 %

So, something is going on with clang. I guess I'll have to split your commits and see which part causes the regression.

Test it without the changes on passing  std::function by reference.
https://stackoverflow.com/questions/47167673/passing-stdfunction-as-parameter-with-const-void

Test it without the changes on passing std::function by reference.

That did not help:
> ./performanceTest.wls master removeFunctionReference

Single-input rule                       -361. ± 25. %
Medium rule                             -120. ± 9. %
Sequential rule                         -34. ± 5.  I got better results on gcc compared to before removing the reserve:


[overlay/ports/taglib] Upgrade to 1.12

Upgrade TagLib to version 1.12

thanks

The 2.3 branch build missed the cache?? Well, I guess we'll have to wait 4 hours for a full rebuild... https://github.com/mixxxdj/vcpkg/runs/1915313128


Feature/pretty

Made a bunch of stylistic changes, better animations, white/grey theme on survey page, etc.
Fixes #276

Is this tested on API 19?

Yes.

resolved comments @krconv

The color on the priorities page should be fixed
Also, when a new survey is taken (both a resurvey and a new family survey), screen flashes yellow (at least on api 19)

When the login is incorrect, the login fields aren't reenabled


Remove X2Y2 support

should just be able to return early if X2Y2 is the platform in the Reservoir event

🙏 🙏


Resolve undefined: fs in fs.FileMode Issue

Issue
This PR addresses the issue that is described in #325
Reproduction
When compiling the instrumented version of the code below, go-fuzz-build crashes with the error undefined: fs in fs.FileMode.
package homedir

import (
	"os"
	"fmt"
)

func HomeDir() {
	p := "text.txt"
	info, _ := os.Stat(p)

	if info.Mode().Perm()&(1<<(uint(7))) != 0 {
		fmt.Println("crash")
	}
}

Cause
Looking into the instrumented code, we can see that the expression
info.Mode().Perm()&(1<<(uint(7)))

is instrumented to
__gofuzz_v1 := fs.FileMode(info.Mode().Perm() & (1 << 7)).

At the first glance we realize that the type conversion to fs.FileMode is causing this crash.
The underlying issue is that the fs package is not imported and therefore it shouldn’t be referenced in the instrumented code. This bug first appeared in go1.16, since in that version a type alias in the os package was introduced that mapped os.FileMode to fs.FileMode (see https://go.dev/src/os/types.go?s=798:825#L18). So in fact, this type conversion should have been os.FileMode instead of fs.FileMode. However, when the code is loaded and parsed for instrumentation by /x/tool/packages, the type-checker already resolves the type alias, so that we only get the type that is included in fs instead of the one included in os.
Fix
To fix this issue, I propose to scan every type that is identified by the /x/tool/packages type-checker and to do a lookup of the package the where types are defined. If there is a type that is defined in a package which is not imported, the instrumentation will add the corresponding import statement. This ensures, that if there is an explicit type conversion using that type (which is the root cause of this bug), we will still be able to compile the instrumented code. The semantics of the instrumented code should still be the same after adding the import statement, because the package must have been imported by one of the imports of the analyzed code (e.g. os imports fs), so that the initialization of the package is still being made. Since there is no guarantee, that there will be an explicit type conversion using the newly imported package, we must make sure to remove the unused imports. For this purpose, we run goimports to clear every unused import and then proceed to compile the instrumented code.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


We should not set container/use_client_certificate if we disable legacy authorization

If set this field to true, you may get some error like this:
Error from server (Forbidden): pods is forbidden: User "client" cannot list pods at the cluster scope: Unknown user "client"
More explanation at https://stackoverflow.com/questions/49075723/what-does-unknown-user-client-mean?answertab=votes#tab-top

Hi @panywei. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: costinm
Assign the PR to them by writing /assign @costinm in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

/assign @costinm

Seb, do you remember if this is required ?

Yes this is right. We should not be using this !

/approve

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: sebastienvas
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: costinm
Assign the PR to them by writing /assign @costinm in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

proof
https://github.com/istio/test-infra/blob/master/scripts/update-e2e-cluster.sh#L80

/retest

@panywei: you can't request testing unless you are a istio member.

In response to this:

/retest

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

/retest

@panywei: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
145813277866b23b1d679760718eb5ef4ace47ec
link
/test istio-pilot-e2e

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@panywei: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
145813277866b23b1d679760718eb5ef4ace47ec
link
/test istio-pilot-e2e

prow/istio-pilot-e2e-v1alpha3.sh
145813277866b23b1d679760718eb5ef4ace47ec
link
/test istio-pilot-e2e-v1alpha3

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


Reduce structural changes on non-contiguous scrolls

Thanks so much for the quick turnaround here! I'll test this E2E today.

Confirmed via E2E testing--scroll-to-top looks great on Cash iOS!


Change import httplex to httpguts.

This fixes go get.
Breakage caused by: https://github.com/golang/net/commit/cbb82b59bc5199680c5bf34109e12097095dca9b

That seems to break compilation with Go 1.10... Is this intentional?

That seems to break compilation with Go 1.10... Is this intentional?

Yes why would it break? . I am using go 1.10.2. you need to fetch the new dependencies Go upstream broke the dependency by moving the package so we have to do it.

I'm getting src/github.com/minio/minio-go/api-put-object.go:31:2: cannot find package "golang.org/x/net/http/httpguts". golang.org/x/net is locked to 1.10, same version as compiler...

go get golang.org/x/net/http/httpguts/... - should work fine.

That's not that easy... We need to build against reusable package golang-golang-x-net-dev in Debian and x/net (as a standard library) appears to be in sync with compiler version. Blatantly updating x/net may break many packages...
Never mind though, for now I've uploaded minio-go 6.0.1. Thanks.

That's not that easy... We need to build against reusable package golang-golang-x-net-dev in Debian and x/net (as a standard library) appears to be in sync with compiler version. Blatantly updating x/net may break many packages...
Never mind though, for now I've uploaded minio-go 6.0.1. Thanks.

Well I think that style of packaging never really works in Go world, we have to update anyways since our users who use go get will be broken. Since most of our users simply use go get this is not a problem. Sticking to an older release is correct in your situation.

Fair enough. However IMHO golang vendoring mess is an abomination of 20+ years of best practice in software engineering. :) For example, no tests are run for any of  (vendored) dependency libraries on build. In Debian we are trying to do it right by building reproducibly in offline build environment, running tests for all libraries on all supported architectures, etc. Use "stable", semantically versioned libraries whenever possible (versus random commits, as often vendored by many Goland developers), etc.

Fair enough. However IMHO golang vendoring mess is an abomination of 20+ years of best practice in software engineering. :) For example, no tests are run for any of (vendored) dependency libraries on build. In Debian we are trying to do it right by building reproducibly in offline build environment, running tests for all libraries on all supported architectures, etc. Use "stable", semantically versioned libraries whenever possible (versus random commits, as often vendored by many Goland developers), etc.

Perhaps, but from our end we can't do much. Perhaps Debian can work with Go developers to fix this problem. Perhaps the new vgo initiative is a good progress in that direction?

Of course, of course. :)
I hope that vgo will improve situation...


Unresponsive range_date after opening modal

I've got a response from a server API along containing this:
https://i.imgur.com/A9kBUWS.png
It is displayed like this in my table:
https://i.imgur.com/I539MRg.png
And out filter option looks like this:
https://i.imgur.com/hLcmOKi.png
However, once opened, the datepicker becomes unresponsive.
When we click a date on either the "to" or "from" field, the picker doesnt close, and it doesnt update the table either.
I've tried changing server output to dd-MM-yyyy, MM-dd-yyyy and a javascript datetime string. :(
I've tried the suggestions in this stackoverflow  thread: https://stackoverflow.com/questions/53630812/yadcf-range-date-filter-doesnt-work-with-specific-date-format
I've tried reading through the documents in an attempt to fix this myself, but to no avail.
I'm running version 0.8.8 of yadcf, v1.11.3 jquery and 2.10.6 moment.js.
Upgrading yadcg and jquery to the newest versions didn't help me either.
I'm experiencing the same issue with the date filter. :(
How do i debug this further?
And/or what is the solution?

If still relevant, please provide a working jsfiddle test page


Expected strings are hard to maintain and to review

The readability of the expected strings in the tests of the crate tends to be a bit tedious to maintain and to read like here:
https://github.com/colin-kiegel/rust-pretty-assertions/blob/master/tests/assert_eq.rs#L78-L93
I wonder if there is no nicer way to write them.
Florent

Indeed! :-)
I usually pipe all cargo test output to a file and copy-paste from there.. If the output changes for a lot of tests, this is (a) a painfully slow process.. and (b) it's far from readable.. But I don't have a better idea.

I don't expect a lightweight solution for this ...


Seamless Single Sign-On support

Under 'Trust architecture' can Azure Active Directory Seamless Single Sign-On be leveraged instead of ADFS?
More info: https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-sso

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

ID: 55747c48-5caa-3234-f978-a667aed13352
Version Independent ID: c18a4db6-71e3-a539-1e7f-2f49662f4bbc
Content: Azure Active Directory auth - Azure SQL (Overview)
Content Source: articles/sql-database/sql-database-aad-authentication.md
Service: sql-database
GitHub Login: @GithubMirek
Microsoft Alias: mireks

@parilla Thanks for the feedback! I have assigned the issue to the content author to evaluate and update as appropriate.

Currently Azure SQL DB does not support it. It is on our to-do list, but we do not have the ETA

@parilla If you would like to file a product feature request and track it / get your peers to vote on it, go to https://feedback.azure.com/forums/908035-sql-server
Thanks,
carl

#please-close


Fix error with git repo discovery and symlinks.

There are some cases where Cargo would generate an error when attempting to discover if a package is inside a git repo when the git repo has a symlink somewhere in its ancestor paths. One way this manifests is with cargo install --git ... where the given repo has a build.rs script. Another scenario is cargo build --manifest-path somelink/Cargo.toml where somelink is a symlink to the real thing.
The issue is that libgit2 is normalizing paths and removing symlinks, but the path Cargo uses is the path with symlinks. This was introduced in #8095.
The solution is to try to canonicalize both paths when trying to get a repo-relative path. If that fails for whatever reason, it shouldn't generate an error since this is just a "best effort" attempt to use git to list package files.
Fixes #8183

r? @alexcrichton
(rust_highfive has picked a reviewer for you, use r? to override)

@bors: r+

:pushpin: Commit 5bd74c41c456d35b10b4a0deafb2a5db52f47dbf has been approved by alexcrichton

:hourglass: Testing commit 5bd74c41c456d35b10b4a0deafb2a5db52f47dbf with merge 4a61d1cdac894d0a5c57755d0c761a79b31a1a66...

:sunny: Test successful - checks-azure
Approved by: alexcrichton
Pushing 4a61d1cdac894d0a5c57755d0c761a79b31a1a66 to master...


Suggestion : Request body shall be available throughout the lifecycle of a request

I am new to falcon and I may be missing something.
If in a responder I read body from request object, it seems I cannot read it again, (there is no seek(0)).
This is troublesome If i want to log the entire request(body included) in case of some exception after reading body via global exception handler.

Hi @humblewolf !
Falcon does not buffer or spool the request body by design.
In order to provide seek(), the request body should first need to be buffered in memory, or in a temporary file. We do not consider this approach suitable for general usage -- think of huge multi-gigabyte requests that are filtered, proxied, or otherwise processed on-the-fly by a Falcon application.
That said, if you are confident that your API users will not submit overly large requests, and/or you are checking the Content-Length header, you could create your own middleware always buffering the body, for instance:
import sys

import falcon

class BufferedBodyComponent:

    MAX_BODY_SIZE = 1024*1024

    def process_request(self, req, resp):
        req.context.body = b''
        if (req.content_length or 0) > self.MAX_BODY_SIZE:
            raise falcon.HTTPPayloadTooLarge(title='Way too large!')

        req.context.body = req.bounded_stream.read()

    def process_response(self, req, resp, resource, req_succeeded):
        sys.stderr.write('{} {} {} {}\n'.format(
            req.method, req.context.body, req.path, resp.status[:3]))

class Store:

    def on_post(self, req, resp):
        resp.body = 'POSTed text: ' + req.context.body.decode()
        resp.content_type = falcon.MEDIA_TEXT

def handle_error(req, resp, ex, params):
    if isinstance(ex, (falcon.HTTPError, falcon.HTTPStatus)):
        raise

    raise falcon.HTTPInternalServerError(description=str(ex))

app = falcon.API(middleware=[BufferedBodyComponent()])
app.add_error_handler(Exception, handle_error)
app.add_route('/store', Store())

Running this as gunicorn test:app we can now get some poor man's request logging in the stderr. Any unhandled Exception would be reported as 500 Internal Server Error:
GET b'' /store 405
POST b'{"json_example": "Hello"}' /store 200
DELETE b'' /404 404
POST b'\x80' /store 500

I'll keep this issue open for the time being. We could probably add something like that to our FAQ or Recipes sections.

I got your point. I was also thinking of doing this via middlewares, but I think it will add latency to the process. My entire point of using flacon instead of flask is because of its fastness/performance. Anyways I am leaving body out of logs as of now.
Thanks for your swift communication. Love to Sweden (huge fan of olofmeister !!!)

Note that if the body has a content type you can use Request.media to access it, and the media will be cached.

The question itself is not new, it seems.
Merging this issue with https://github.com/falconry/falcon/issues/417


:sparkles: hdl21 simulation and layout integration

Depends on https://github.com/gdsfactory/skywater130/pull/92
Fixes https://github.com/gdsfactory/skywater130/issues/93

the docs still have some issues,
@dan-fritchman
@daquintero
@ThomasPluck

Very cool!

Closed for initial debatably working implmementation in https://github.com/gdsfactory/gplugins/pull/356 since functionality had to be added there


log-backup: update the endpoints when etcd cluster config changes

What is changed and how it works?

Issue Number: Close #14165
What's Changed:
This PR added a daemon thread to poll the current state of the etcd cluster members. So when PD cluster config changes, we can detect it and update the config.
This PR have also updated the version of etcd-client, which allows it to ignore some of PD nodes when they are failed. The change can be found at https://github.com/pingcap/etcd-client/pull/3.

Related changes

PR to update pingcap/docs/pingcap/docs-cn:
Need to cherry-pick to the release branch

Check List
Tests

Unit test
Manual test (add detailed scripts or steps below)

Side effects

Performance regression

Consumes more CPU
Consumes more MEM

Release note
Fixed a bug that may cause PiTR doesn't work when PD cluster config changed

/merge

/merge

(I don't think it needs rebase now...)

/test


Validate required capabilities

There are some basic checks done in #567 but this needs to be properly tested, described to ensure all checks are performed.

This was addressed through #832.

It's not super clear what this issue is about, but from the reference to #567, I interpret it to assert that when a group context extension proposal is received, it should be validated that the added extension is supported by all group members. In any case, #832 only added a check for ValSem106, which checks if added members support the version and ciphersuite of the group, as well as anything in a potential required capabilities extension present in the group. So I don't think this one should be closed just yet.


Accept quoted multiline TXT fields

Currently if any newline characters are found in a TXT field the parser will fail. This small change allows quoted strings to contain newline characters whilst keeping the previous functionality the same.

Thanks @tpbowden!

I've just pushed version 1.0.5 to RubyGems so you should be able to install this very soon :+1:

Brilliant, thanks for the swift response!


Replace UMapCompact with UMap and add tests

Description
Closes #3272
Checklist

[x] Commit sequence broadly makes sense and commits have useful messages
[x] New tests are added if needed and existing tests are updated
[x] Any changes are noted in the CHANGELOG.md for affected package
[x] Code is formatted with fourmolu (use scripts/fourmolize.sh)
[x] Cabal files are formatted (use scripts/cabal-format.sh)
[x] hie.yaml has been updated (use scripts/gen-hie.sh)
[x] Self-reviewed the diff

2 tests are failing still, unexpectedly. I'm looking into it :+1:

Those tests should now pass :crossed_fingers:

@lehins This is ready for another review!

@aniketd Looks like there is a test failure


invalid JSON for config.json

Why is the example config.json invalid?
Initializing HAP-NodeJS v0.9.4...
[5/18/2021, 3:49:53 AM] There was a problem reading your config.json file.
[5/18/2021, 3:49:53 AM] Please try pasting your config.json file here to validate it: http://jsonlint.com
[5/18/2021, 3:49:53 AM]
SyntaxError: Unexpected token : in JSON at position 13
at JSON.parse ()
at Function.loadConfig (/usr/lib/node_modules/homebridge/src/server.ts:212:21)
at new Server (/usr/lib/node_modules/homebridge/src/server.ts:92:26)
at cli (/usr/lib/node_modules/homebridge/src/cli.ts:79:18)
at Object. (/usr/lib/node_modules/homebridge/bin/homebridge:17:22)
at Module._compile (node:internal/modules/cjs/loader:1092:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)
at Module.load (node:internal/modules/cjs/loader:972:32)
at Function.Module._load (node:internal/modules/cjs/loader:813:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)

Per the error output:
SyntaxError: Unexpected token : in JSON at position 13
it seems that you have invalid JSON. Please try pasting your config.json file here to validate it: http://jsonlint.com
You’ll have to share your config.json in order to diagnose the issue, but you may be able to resolve the issue yourself using the above tool.
Note: If you do share your config, please remove any compromising information (usernames, passwords etc.)
Note 2: There is no “working” config.json in this project, only a snippet in the README that should be combined with an already working homebridge config.

Closing per https://github.com/nicholasrobinson/homebridge-smartcielo/issues/22


Inline javascript isn't rendered correctly

I have this:
javascript:
  var something = {
    var1: #{Application.get_env(:aaa, :bbb)},
    var2: true,
    var3: false,
    var4: {
      env: "prod"
    }
  };

  (somefunction() { .... /* some code */ })

The output code it produces contains html tags, including tags that don't exist in html, and other kinds of crazy stuff and it's not valid js code.
This
javascript:
  alert('Slim supports embedded javascript!')

produces this
<javascript><alert 'Slim supports embedded javascript!'></alert></javascript>

Hi @taakazazzz Slime does not currently support other embedded engines but there is an open PR to add support: https://github.com/slime-lang/slime/pull/101

Any chance you could move to slim-v0.15? It was released a few days ago and does include embedded engines (including javascript).

#26 switches to new slime v0.15. I've tested it with two small web projects. The output looks the same and the embedded javascript-engine works well.

@tht I am preparing to release a new version with the latest Slime. 👍


added X-Forwarded-Port and fixed X-Forwarded-Proto and removed HSTS

Hi,
Added X-Forwarded-Port as it might be used by some applications.
Fixed X-Forwarded-Proto, it was set to $remote_addr which is wrong.
Commented out the HSTS. IMO I feel like forcing TLS on a hostname should be optional.
So perhaps we can make a fix to have that setting enabled or disable via a environment variable?
Or if you don't agree, you can just undo my line 12 change. You have been given access to edit this PR

Very good point about X-Forwarded-Proto and X-Forwarder-Port, thanks a lot for your contribution @Raboo, it's very appreciated 👍
I prefer to keep HSTS for now, to be honest, since we also enforce the use of SSL in nginx-config/force_https anyway.

Thanks.
But let me argue a bit :)
Forcing SSL is good but with HSTS if for instance you are doing development and testing, turning SSL on and off it might be troublesome. (That is what happened to me when I realized HSTS was enabled).
I will see if I can do a ENV solution here defaulting to true, if that works for you?

I'd love a PR for that yes 😍
Should it also make nginx-config/force_ssl conditional?

Hmm, sure but that would be a different variable, they shouldn't be bound together.


Healthcheck not working on new Update Templates version

Expected behavior
As a developer, I want to perform a valid Healthcheck so that I'm able to see if all the templates folder are there
Actual behavior
Templates are not found even though they are obviously correct

Also I do not see if the context file is correctly imported:

It should say OK or Not found
Steps to reproduce (bug) / Use Case of feature request (enhancement)

Import CobiGen templates into your workspace.
Execute Healthcheck.

It is working fine with the old templates version:

Most probably it is an easy fix.


Changes for the integration with Hibernate Reactive

A list of changes I need to make ORM 6 work with Hibernate Reactive.
I had to add a new interface so that I can create different actions for the insert operations: https://github.com/hibernate/hibernate-orm/commit/d098526e3d78f7f223b76e843d8ae7705526723d and https://github.com/hibernate/hibernate-orm/commit/076006120149b80ce97db435f0ecf8cb9613d32f
That's because in Hibernate Reactive we have an  interface ReactiveEntityInsertAction and it wasn't possible to add it to the queue when there was only using Comparable<EntityAction> (if somebody has a solution, I'm listening).
All the other changes make it possible for Hibernate Reactive to reuse or overrides some methods.
I've pushed the Hibernate Reactive branch upstream: https://github.com/hibernate/hibernate-reactive/tree/wip/ORM-6
I haven't created a JIRA yet, but if we agree with these changes I'm going to create one.
Thanks

I haven't created a JIRA yet, but if we agree with these changes I'm going to create one.

Nevermind, I've created a JIRA so that CI is happy.


text format: local index isn't enforced on type parameter IDs

According to the MVP spec, a type can include symbolic IDs for parameters. It elaborates that a function's local index is its parameters followed by its locals. Finally, it states "An identifier context is well-formed if no index space contains duplicate identifiers."
Given this, I would expect uniqueness to be enforced both on parameter IDs within a type (or type use), locals within a function, and across parameters and locals in a function.
Right now, only one case seems to be validated: when a local redefines the same ID:
Ex.
(module
 (func (result i32) (local $x i32) (local $x i32) local.get $x)
)

However, the other two combinations pass, and choose the last to define x (the function local):

Redefine param ID in the same type  == local.get 2

(module
 (func (type 0) (local $x i32) local.get $x)
 (type (func (param $x i32) (param $x i32) (result i32)))
)

Redefine an ID on a local with the same ID as a parameter == local.get 1

(module
 (func (type 0) (local $x i32) local.get $x)
 (type (func (param $x i32) (result i32)))
)

The root cause may be around how local names inherit from the type func. For example, with the latest release, this fails to compile as it doesn't see the names on the type func.
(module
 (func (type 0) local.get $x)
 (type (func (param $x i32) (result i32)))
)

I'm not sure if unreleased code fixes this, but worth a look!

Thanks for the report! Personally I'm under the impression that the identifiers used in a (type (func ...)) declaration are not used for local names in each function that the type is then referenced within. I believe that only identifiers specified inline with the function definition itself are used, so I think that this is working as expected?
That would mean that in 1/2 from your examples the $x parameter is ignored so the only $x is the local itself, and for the third example that doesn't compile it's because $x isn't in scope. I don't know whether your first example is supposed to be valid or not. According to this there is no validation performed on the identifiers of a type declaration, but that may simply be a mistake or an oversight.

Hmm yeah it would be odd to have identifiers on a param and then not use them for anything. For example, being able to reference a type by symbolic ID hints someone is being able to separate and re-use the types. You can consider a lambda type with multiple implementations.
Ex. of interface/impl where param name defaulting to what's on the type could matter
(type $filter (func (param $offset) (param $count)))

(func $nop_filter (type $filter) ...)

In such an example,  I do think the param names would be helpful not just in that the impl can use those for symbolic lookup, but also debug (name section)
on this being an oversight or a mistake..
I would be surprised if someone added param names to types in the spec, yet intended implementations to ignore them, but yeah an oversight is indeed another answer. I guess the mistake was allowing param names on the type as it was intentional to not allow interface/impl divide or other use cases like this. Mistakes, happen, but this seems a pretty significant portability issue. Personally, I wouldn't intentionally disallow It, but what you decide is up to you meanwhile, and appreciate you thinking about it.
@rossberg any thoughts on this?

FWIW right now, what's going on is you can refer to the local on the type, but only by numeric index. ex. (local.get 0), but the param names are ignored which means you can't use them, and also if there are any clashes you don't know as they aren't validated. In any case, someone if they know the indexes can still use them, or if they redefine them inlined with param names I presume that would also work in Wasm-tools, though I haven't tried.
Ex. redefining them
(type $filter (func (param $offset i32) (param $count i32)))

(func $nop_filter (type $filter) (param $offset i32) (param $count i32) ...)

I could also very well be misunderstanding the spec, I've done that multiple times before! It might be good to open an issue on the WebAssembly/spec repo though to help clarify the purpose of identifiers in type declarations.

Ah, let me give some background.
Identifiers that are "local" to a type definition are not in scope at use sites of the type. That's intentional -- as a universal principle of scoping, identifiers should only be accessible in scopes local to their binder, not be implicitly injected into unrelated scopes merely by use of some outer identifier.
So indeed, parameter names in type definitions are essentially useless, except for documentation. They are still allowed, for no deep reason other than using the same param syntax everywhere, and because it's common in many other languages (e.g., in C a function type can have parameter names as well, although they can't be used for anything either).

"An identifier context is well-formed if no index space contains duplicate identifiers."

I believe this statement from the spec is still correct. Non-duplicate names are enforced everywhere where the names actually bind symbolic indices. Function type parameters are the only case I can think of that are not binders. It's still checked for other occurrences of parameter names, like here:
> (module (func (param $x i32) (local $x i32)))
stdin:1.37-1.39: syntax error: duplicate local $x

Hope this helps. :)
(FWIW, the situation is a bit more muddy for struct field names in the GC extension. Technically, they are not directly in scope either, instead a form of a dependent scope lookup is happening, again similar to the rules common in C and other such languages.)

Thanks @rossberg, this does help. I think we should change the spec wording to clarify this, so I'll raise an issue with a suggestion!

moving here. thanks folks https://github.com/WebAssembly/spec/issues/1411


Clarify license

There is no license file in the repo, meaning the source code here may be not open source but only source available.
Please clarify the copyright status of the repo. If you are not sure, I recommend an open source license like MIT or LGPL.

License added with commit f25b3c6.
Thanks!
Tom


Fix footer

The footer did not have the link for the github repo.

Pan fixed it and restructured the footer. So I am closing it.


Example links in README are broken

See the links under "Project Setup". They just result in a 404.

Fixed!


Don't camel case the description for EnumValue by default

The description for an EnumValue is always in camel case. This should be the responsibility of the consumer to change between different cases and not assumed that camel case is expected every time.
One example is within the integer enum case of #57. We would like to add a comment with the description, currently by default this is in camel case although it's defined in snake case and wanted in snake case.

          1 Warning

:warning:
Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.

  Generated by :no_entry_sign: Danger

          1 Warning

:warning:
Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.

  Generated by :no_entry_sign: Danger

@maicki - Can we write some small tests around this and also regenerate the integration test snapshots?

@rahul-malik The integration test snapshots are already regenerated, there are no differences (as it should be), I will work on adding tests around this.

          1 Warning

:warning:
Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.

  Generated by :no_entry_sign: Danger

@rahul-malik Added a couple of tests for StringExtensionsTests

          1 Warning

:warning:
Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.

  Generated by :no_entry_sign: Danger

          1 Warning

:warning:
Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.

  Generated by :no_entry_sign: Danger

🚫 CI failed with log

          1 Warning

:warning:
Any source code changes should have an entry in CHANGELOG.md or have #trivial in their title.

  Generated by :no_entry_sign: Danger


Fix SpecializedTinkerEdge.properties w/ empty value

Fixes issue #12

Thank you! I added a test and fixed the sample implementation for vertices in https://github.com/ShiftLeftSecurity/tinkergraph-gremlin/pull/16 (which includes your original commit). Will close this one and merge the other one once we have green light from travis.
Let me know if you need a new release.

If a release isn't too much trouble, that would be terrific.  I've worked around it locally in my generated edges by overriding and filtering STE.properties(...), but I'd love to clean that up.
Thanks for adding the tests and merging.  Much appreciated.


Filters

Syntax like latte: {$CONTROL$|lower}, {$CONTROL$|replace:'foo','bar'}. Usage in config and templates.

I'm wondering...  Latte template with helpers inside
or
PhpStorm in-place ${VARIABLE}s for compatibility with PhpStorm template syntax and perhaps some filters in config?

It's good idea. ${VARIABLE} is better, nicer and shorter than {$VARIABLE$}.

syntax changed to ${VARIABLE} in both config and templates
changed command name to joseki:file-template

Still not sure about filters... @AntikCz could you give me any real use-case for those filters?

I very often need first character lowercase or uppercase. Functions with parameters probably not.
class ${CLASS|firstUpper} {

    /**
     * @var \Forms\${CLASS|firstUpper} @inject
     */
    public $${CLASS}Form;
}

I need to think about a possible implementation... if I allow filters (like in latte), then I will need to allow you to define your own custom filters, because fixed filters suxs.
I'll try to look at it during a weekend (I've been quite bussy lately, sorry about that).

I'm not going to implement this, sorry.


Not able to get Dropped Target Elements

If two cells are moved simultaneously within editor canvas, and dropped over two another different cells.
I can get the cells which are moved. But I am not able to get the two different dropped target cells..
How we can find all dropped target elements?.

Hi. Your question is seeking debugging help but needs more information. The question should be updated to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem.


Updates to uuid types

Currently converts action_uuid to v7 format with timestamp to allow sorting results by record creation time.
Switch to v5 for payload cache uuids is coming next.

Codecov Report
Patch and project coverage have no change.

Comparison is base (04c2eb4) 90.90% compared to head (4e3179f) 90.90%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #20   +/-   ##
=======================================
  Coverage   90.90%   90.90%
=======================================
  Files           3        3
  Lines          44       44
=======================================
  Hits           40       40
  Misses          4        4

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Arch installation instructions added to README.md

I've created an AUR package and added instructions for installation on the README.md

Closes #38.