[Question] Setup help

I dont really understand how to set this up. Im using lazy.nvim and this is my config
return {
  "seblj/roslyn.nvim",
  config = function()
    require("roslyn").setup({
      config = {},
      exe = {
        "dotnet",
        vim.fs.joinpath(vim.fn.stdpath("data"), "roslyn", "Microsoft.CodeAnalysis.LanguageServer.dll"),
      },
      filewatching = true,
    })
  end
}

The plugin is recognized and setup by lazy
The CodeAnalysis dll is present and the path is verified correct.
Nvim version: V0.10.1
Is there any more steps needed? Do i need to configure the lsp or is that handled under the hood? When I run LspInfo in a .cs buffer I see no roslyn or no error messages

You can have a look at my dotfiles

Shouldn't need to do anything else. You don't need to provide those values to the setup method though as all of them are the default values. However, impossible to say what is wrong. If there is a solution file/csproj file, then it should work

Seems lazy got confused when I changed from the original repo to this fork and checkout out an old commit. After forcing the latest commit on main the lsp seems to try to start but immediately when entering a file there is a notification saying "Roslyn server stopped" Any ideas? lsp.log is empty

Difficult to say. I would think that the lsp log should contain something. Or at least of you set the log level to trace, then it should

I tried modifying the library code and the server starts and the first RPC message is being sent, but it seems to stop the server with an exit code: 0 right after

When starting the server i get this rpc message
{
  jsonrpc = "2.0",
  method = "window/logMessage",
  params = {
    message = "[Program]Language server initialized",
    type = 3
  }
}

Looking through the code it seems to look for the "pipeName" property. Should this have been sent as part of the server start. in my case it does not

What version of the server do you have?

I was using the latest from this feed: https://dev.azure.com/azure-public/vside/_artifacts/feed/vs-impl
I fixed the issue by downloading the vscode c# extension, digging through the files and finding the dlls for the language server then copying them into nvim-data/roslyn

Hmm, I instead want to fix the potential issue then🤔 I have a VM with windows that I can try setting this up with

I'm having the exact same issue here on Windows 11 Pro, and the solution that @GustavEikaas suggested also worked for me.
I downloaded Microsoft.CodeAnalysis.LanguageServer.4.8.0-3.23451.1.nupkg.zip and extracted content\LanguageServer\win-x64 to the correct roslyn directory but nothing happens at all when opening a C# project.
However, replacing the roslyn directory with that found in ~.vscode\extensions\ms-dotnettools.csharp-2.45.20-win32-x64.roslyn worked perfectly.
Any ideas what's going on?
Cheers
Fotis-


whisper-rs-sys fails to build on macOS

Hitting the error described below … happy to help debug further!
Tried building full_usage at first. I changed Cargo.toml to include:
whisper-rs = { path = "../..", features = [ "coreml", "metal", "whisper-cpp-log", "whisper-cpp-tracing"] }

Then tried reproducing it trying to build In the sys directory for the same result.
> cargo build --features "coreml,metal"
   Compiling whisper-rs-sys v0.11.0 (/Users/hagmonk/src/github.com/tazz4843/whisper-rs/sys)
error: could not find native static library `whisper.coreml`, perhaps an -L flag is missing?

error: could not compile `whisper-rs-sys` (lib) due to 1 previous error

Not sure if it's still required, but I have in ~/.cargo/config.toml, doesn't seem to change the output either way.
[target.aarch64-apple-darwin]
rustflags = "-lc++ -l framework=Accelerate"

I looked in the target/debug/build/whsiper-rs-sys-xxx/out directory and found build/src/libwhisper.coreml.a which was not present in lib. I tried copying that file over, but then get a different linking error:
  = note: Undefined symbols for architecture arm64:
            "___kmpc_barrier", referenced from:
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                ...
            "___kmpc_end_single", referenced from:
                _ggml_graph_compute.omp_outlined in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
            "___kmpc_for_static_fini", referenced from:
                ggml_backend_blas_mul_mat(ggml_backend_blas_context*, ggml_tensor*) (.omp_outlined) in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[13](ggml-blas.cpp.o)
            "___kmpc_for_static_init_8", referenced from:
                ggml_backend_blas_mul_mat(ggml_backend_blas_context*, ggml_tensor*) (.omp_outlined) in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[13](ggml-blas.cpp.o)
            "___kmpc_fork_call", referenced from:
                _ggml_graph_compute in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                ggml_backend_blas_graph_compute(ggml_backend*, ggml_cgraph*) in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[13](ggml-blas.cpp.o)
            "___kmpc_global_thread_num", referenced from:
                _ggml_graph_compute in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                _ggml_compute_forward_diag_mask_f32 in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                ggml_backend_blas_graph_compute(ggml_backend*, ggml_cgraph*) in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[13](ggml-blas.cpp.o)
            "___kmpc_push_num_threads", referenced from:
                _ggml_graph_compute in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
                ggml_backend_blas_graph_compute(ggml_backend*, ggml_cgraph*) in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[13](ggml-blas.cpp.o)
            "___kmpc_single", referenced from:
                _ggml_graph_compute.omp_outlined in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
            "_omp_get_num_threads", referenced from:
                _ggml_graph_compute.omp_outlined in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
            "_omp_get_thread_num", referenced from:
                _ggml_graph_compute.omp_outlined in libwhisper_rs_sys-dd0b36bc7e34e95c.rlib[7](ggml.c.o)
          ld: symbol(s) not found for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

I can build whisper-cpp from its top of tree just fine, with WHSPER_COREML=1 set as an environment variable. So I know whisper-cpp does work on this system.

https://github.com/tazz4843/whisper-rs/commit/ec609f18ff24940b44b22361f3fbcae2b19ce58e this seems to be the root cause, you can disable the default features, especially if you're planning on using metal, and it should start building!

I am experiencing the same build error:
  = note: ld: warning: ignoring duplicate libraries: '-lSystem', '-lc++', '-lobjc'
          Undefined symbols for architecture arm64:
            "___kmpc_barrier", referenced from:
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                ...
            "___kmpc_end_single", referenced from:
                _ggml_graph_compute.omp_outlined in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
            "___kmpc_for_static_fini", referenced from:
                ggml_backend_blas_mul_mat(ggml_backend_blas_context*, ggml_tensor*) (.omp_outlined) in libwhisper_rs_sys-79a4549ef4a144de.rlib[9](ggml-blas.cpp.o)
            "___kmpc_for_static_init_8", referenced from:
                ggml_backend_blas_mul_mat(ggml_backend_blas_context*, ggml_tensor*) (.omp_outlined) in libwhisper_rs_sys-79a4549ef4a144de.rlib[9](ggml-blas.cpp.o)
            "___kmpc_fork_call", referenced from:
                _ggml_graph_compute in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                ggml_backend_blas_graph_compute(ggml_backend*, ggml_cgraph*) in libwhisper_rs_sys-79a4549ef4a144de.rlib[9](ggml-blas.cpp.o)
            "___kmpc_global_thread_num", referenced from:
                _ggml_graph_compute in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_graph_compute_thread in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                _ggml_compute_forward_diag_mask_f32 in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                ggml_backend_blas_graph_compute(ggml_backend*, ggml_cgraph*) in libwhisper_rs_sys-79a4549ef4a144de.rlib[9](ggml-blas.cpp.o)
            "___kmpc_push_num_threads", referenced from:
                _ggml_graph_compute in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
                ggml_backend_blas_graph_compute(ggml_backend*, ggml_cgraph*) in libwhisper_rs_sys-79a4549ef4a144de.rlib[9](ggml-blas.cpp.o)
            "___kmpc_single", referenced from:
                _ggml_graph_compute.omp_outlined in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
            "_omp_get_num_threads", referenced from:
                _ggml_graph_compute.omp_outlined in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
            "_omp_get_thread_num", referenced from:
                _ggml_graph_compute.omp_outlined in libwhisper_rs_sys-79a4549ef4a144de.rlib[5](ggml.c.o)
          ld: symbol(s) not found for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)

This error occurs when I build with the following entry in my Cargo.toml:
whisper-rs = { git = "https://github.com/tazz4843/whisper-rs.git", rev = "ec609f1" }

However, the build works fine with the previous commit 67924ca.
@arizhih
Could you provide any insight into what might have changed?
Thank you in advance for your help.

Hi @solaoi, I've made some changes, you can check in https://github.com/tazz4843/whisper-rs/pull/181

@arizhih
Thank you for your great work!
The fix is working perfectly.

Thanks all!


Create a new 6.5.1 image that has SP1

Feature Request
Need to create a new 6.5.1 image that has SP1

done


📦 Preparing project for publishing on github

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Fix(aurora): Broken Aurora SDDM Image and Desktop Wallpaper

This PR adds a single package which doesn't get installed on the latest Fedora 41 Builds of Aurora for some reason. It is necessary to support Jpeg-XL Wallpapers.

This fixes #1811, tested locally by layering the package on an Aurora-DX:Latest system.

Might be useful to install in ublue-os main, since it's related to codecs.

Yeah, it was included in F40, but forgotten to be included in F41:
https://github.com/ublue-os/main/blob/main/packages.json#L125

@castrojo Superseeded with this PR in main: https://github.com/ublue-os/main/pull/660

Closed because this is better done in the upstream image.


Fix IOU currency routes

Details
Just some broken routes – we were trying to go to /iou/split//currency, where the missing section is meant to be a reportID. However, in this case it's perfectly legitimate to not have a reportID, because we're creating a new bill split. So instead, we can fix this by going to /iou/split/:reportID/currency. It actually doesn't matter what's between split/ and /currency, as long as it's not empty. Just x seems to work as well.
Fixed Issues
$ https://github.com/Expensify/Expensify.cash/issues/3920
Tests / QA Steps

Click on the big green FAB.
Select Split Bill
Click on the currency symbol in the "Split Bill" modal.
Verify that the currency selection page opens up.
Close the modal.
Click on the big green FAB.
Select Request Money
Click on the currency symbol in the "Request Money" modal.
Verify that the currency selection page opens up.

 This pull request has the CP Staging label. :warning: :warning:
Merging it will cause it to be immediately deployed to staging, even if the open StagingDeployCash deploy checklist is locked.

This PR was CP'd in 1.0.76-1. The normal deploy comment wasn't posted here, seemingly due to a random network error.

@roryabraham Should go ahead and test this PR?

Yep, it's on staging. Go ahead and test it please 🙇

Actually @isagoico I already tested this and closed the linked issue. I'm going to check this off the deploy checklist.

🚀 Deployed to production         in version: 1.0.77-5🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


create roman numeral

find a way to express any numbers as roman numeral

This is as simple as writing <xsl:elementName format="I"/>

Or like this: <xsl:number value="1965" format="I"/> produces the text MCMLXV.

It is also possible to use string format-number(number,format,[decimalformat])

It would be useful to have a global parameter so that we do not have to duplicate the whole XSLT file for roman numerals.

The format="I" only works for xsl:numbers. The format-number() function does not include the option for "I". It is possible to create a new function (below). Would this interfere with the layout calculations? The number 10 would no longer have two digits, but just on: X.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:num="http://example.com/num"
    exclude-result-prefixes="num"
    version="3.0">

  <xsl:function name="num:roman" as="xs:string">
    <xsl:param name="value" as="xs:integer"/>
    <xsl:number value="$value" format="i"/>
  </xsl:function>

  <!-- Example usage -->
  <xsl:template match="/">
    <output>
      <xsl:value-of select="num:roman(100)"/>
    </output>
  </xsl:template>

</xsl:stylesheet>

Using this function on pool length produces the right results, but when trying it for the lengthAsDistance we get an error message:
<xsl:value-of select="../ancestor-or-self::*[sw:lengthAsDistance]"/>

or
<xsl:value-of select="sw:numroman(sw:lengthAsDistance)"/>

Gives this error message:
An empty sequence is not allowed as the first argument of sw:numroman()

It works in the XSLT, but not yet in Python. TypeError: Program.__init__() got an unexpected keyword argument 'numeralSystem'

tested and okay


Combining permissions with -OR-

In my project I have resolvers that should be acessible if at least one of multiple conditions is met -- aka "OR".
I'm currently implementing it in a single permission class, but it would be ideal if I could combine them. A few examples:
@strawberry.type
class Mutation:
    @strawberry.mutation(permission=Permissions.SuperAdmin | Permission.ObjectOwner)
    def update_object(self, object_id: ID, changes: Something) -> MutationResult:
        ...

@strawberry.type
class ParentChildRelationship:
    @strawberry.field(permission=Permissions.IsParent | Permissions.IsChild)
    def relationship_details(self) -> Something:
        ...

Feature Request Type

[ ] Core functionality
[x] Alteration (enhancement/optimization) of existing feature(s)
[ ] New behavior

I thought about this a few times before. Kinda tempting to mimic the way it's implemented in the django-rest-framework. So far I always ended up implementing separate permission classes for basically all my migrations. Guess this could be a nice feature enabling more shared code.
I think we were discussing the state of permissions in our roadmap to v1 before. Personally, I would welcome related PRs, what do you think @patrick91 ?


Application Gateway http-settings probe not found error

Creation of a new http setting without a probe name should go through fine (default probe is created by platform). However it complaints with cli that a probe named /None does not exist. New http setting can be created only by creating a new custom probe.
azureuser@amitubuntu15:~$ appgw http-settings create -n settin2 --port 80 --cookie-based-affinity Enabled --protocol Http --gateway-name azurewebsitetest -g azurewebsitetest
Resource /subscriptions/a932c0e6-b5cb-4e68-b23d-5064372c8a3c/resourceGroups/azurewebsitetest/providers/Microsoft.Network/applicationGateways/azurewebsitetest/probes/None referenced by resource /subscriptions/a932c0e6-b5cb-4e68-b23d-5064372c8a3c/resourceGroups/azurewebsitetest/providers/Microsoft.Network/applicationGateways/azurewebsitetest/backendHttpSettingsCollection/settin2 was not found. Please make sure that the referenced resource exists, and that both resources are in the same region.

Please try this again with the latest master. PR #2137 fixed the bug that would trigger this.


correct the ref and add stable tag

test against dea-notebooks:stable
add stable tag for released version image, be convenient for deployment and dea-notebooks test

@emmaai I merged the DEA Notebooks PR and reran the tests, and everything seems to have worked!


[0.9.3-rc1] Runs out of fd:s, memory when importing a smallish dataset (Solaris, though)

Hi,
I'm attempting to run InfluxDB (v0.9.3-rc1-262-gc1d2f11, current master) on Solaris - more specifically SmartOS. I compiled from source using Go 1.5, and things seem mostly fine. However, when importing data from my older InfluxDB 0.8 instance (massaged into new format and schema, in batches of 4000 rows), I run into an open file limit. The Solaris default open file limit is 65536. I understand that an arbitrarily low limit can be a problem, but should this not be enough? Running pfiles on the process shows the fd:s are essentially all used by database files;
jb@zlogin4:~ $ pfiles 42089
42089:  ./src/github.com/influxdb/influxdb/influxd -config influxcfg.toml -hos
  Current rlimit: 65536 file descriptors
   0: S_IFCHR mode:0620 dev:552,14 ino:634994901 uid:502 gid:7 rdev:6,2
      O_RDWR|O_NOCTTY|O_LARGEFILE
      /dev/pts/2
      offset:34625624
   1: S_IFIFO mode:0000 dev:549,0 ino:1026307 uid:502 gid:1 rdev:0,0
      O_RDWR
   2: S_IFIFO mode:0000 dev:549,0 ino:1026307 uid:502 gid:1 rdev:0,0
      O_RDWR
   3: S_IFCHR mode:0644 dev:552,14 ino:634993196 uid:0 gid:3 rdev:49,1
      O_RDONLY|O_LARGEFILE FD_CLOEXEC
      /dev/urandom
      offset:16
   5: S_IFPORT mode:0000 dev:563,0 uid:502 gid:1 size:0
   6: S_IFREG mode:0600 dev:90,65551 ino:212383 uid:502 gid:1 size:4194304
      O_RDWR|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /var/opt/influxdb/meta/raft.db
      offset:0
   7: S_IFREG mode:0644 dev:90,65551 ino:212604 uid:502 gid:1 size:32768
      O_RDWR|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /var/opt/influxdb/data/env/default/1
      offset:0
   8: S_IFREG mode:0644 dev:90,65551 ino:231106 uid:502 gid:1 size:0
      O_RDWR|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /var/opt/influxdb/wal/env/default/1/000000.meta
      offset:0
   9: S_IFREG mode:0644 dev:90,65551 ino:212608 uid:502 gid:1 size:138
      O_RDWR|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /var/opt/influxdb/wal/env/default/1/03.000001.wal
      offset:138
...
32700: S_IFREG mode:0644 dev:90,65551 ino:151286 uid:502 gid:1 size:32768
      O_RDWR|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /var/opt/influxdb/data/env/default/4088
      offset:0
32701: S_IFREG mode:0644 dev:90,65551 ino:151527 uid:502 gid:1 size:62
      O_RDWR|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /var/opt/influxdb/wal/env/default/4087/05.000001.wal
      offset:62
...
65534: S_IFREG mode:0644 dev:90,65551 ino:205032 uid:502 gid:1 size:63
      O_RDWR|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /var/opt/influxdb/wal/env/default/9999/01.000001.wal
      offset:63
65535: S_IFREG mode:0644 dev:90,65551 ino:205030 uid:502 gid:1 size:139
      O_RDWR|O_CREAT|O_LARGEFILE FD_CLOEXEC
      /var/opt/influxdb/wal/env/default/9999/03.000001.wal
      offset:139

This is on a mostly default configuration (https://gist.github.com/faa0b0bff4efe1725b2f). Is there something obvious I should tweak to get the number of fd:s down to a more reasonable level?

Hmm, I can get past this by increasing the limit to a million fd:s, and perhaps that's by design so it's fine. Instead, I run out of memory some ways into the import when the influxd process hit's 16 GB (the limit of this container). I wonder what's going on here, as I'm trying to import about two million rows only, about 100 megs of data in text format, which should be much more verbose than the binary db format...?

@calmh I don't know the answer to the file descriptor question. @benbjohnson or @dgnorton any thoughts?
As for the import performance, are you pushing points as fast as possible? It's possible you are filling the WAL and then getting into RAM thrashing as it tries to drain. There are a number of OOM issues open and most a related to high sustained write volume. Dropping to a lower write speed, perhaps 1/3 of the maximum, often helps.

It sounds like there's a lot of shards being created. I'm going to merge the SHOW SHARDS PR in so we can get visibility into the issue. It'll be available in the nightly.

@calmh can you pick up the next nightly build and try again? Nightly builds are available by 1 a.m. PDT each night.
wget https://s3.amazonaws.com/influxdb/influxdb-nightly-1.x86_64.rpm
sudo yum localinstall influxdb-nightly-1.x86_64.rpm

I was doing the import by looping over a number of files each containing 4000 rows, sleeping for a few seconds between each POST. That may not have been enough. When the actual out of memory crash comes, the backtrace shows hundreds of thousands of goroutines doing compaction or something similar (from memory, if this is relevant I can capture the full trace next time).
So really, not importing at anything resembling max speed, and as noted the actual dataset is orders of magnitudes smaller than the amount of RAM it tries to allocate for it...

"show shards" on  just gives me "Query returned no results!" (on v0.9.3-rc1-289-g02e2ed8) (as opposed to an error before updating to the latest master).

However with the latest commit, and pausing five seconds between each imported chunk, there is some compaction activity in the logs. Also this sudden nil dereference:
[wal] 2015/09/04 17:57:42 write to index of partition 5 took 142.175µs
[wal] 2015/09/04 17:57:42 write to index of partition 1 took 138.643µs
[wal] 2015/09/04 17:57:42 compaction of partition 5 took 187.422µs
[wal] 2015/09/04 17:57:42 compaction of partition 1 took 190.743µs
2015/09/04 17:57:44 http: panic serving [2001:470:deeb:32::251]:50826: runtime error: invalid memory address or nil pointer dereference
goroutine 148485 [running]:
net/http.(*conn).serve.func1(0xc886041c30, 0xfffffd7ffeeff470, 0xc87070d0e0)
        /opt/local/go/src/net/http/server.go:1287 +0xb5
github.com/influxdb/influxdb/cluster.(*PointsWriter).MapShards(0xc8200aef50, 0xc9535e5d00, 0xc8cd6ff6e0, 0x0, 0x0)
        /home/jb/src/github.com/influxdb/influxdb/cluster/points_writer.go:177 +0x6b6
github.com/influxdb/influxdb/cluster.(*PointsWriter).WritePoints(0xc8200aef50, 0xc9535e5d00, 0x0, 0x0)
        /home/jb/src/github.com/influxdb/influxdb/cluster/points_writer.go:195 +0x16b
github.com/influxdb/influxdb/services/httpd.(*Handler).serveWriteLine(0xc820146310, 0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0, 0xc8e33fa000, 0x2ace8, 0x3fe00, 0x0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:509 +0xeb0
github.com/influxdb/influxdb/services/httpd.(*Handler).serveWrite(0xc820146310, 0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0, 0x0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:364 +0x722
github.com/influxdb/influxdb/services/httpd.(*Handler).(github.com/influxdb/influxdb/services/httpd.serveWrite)-fm(0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0, 0x0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:104 +0x48
github.com/influxdb/influxdb/services/httpd.authenticate.func1(0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:654 +0x70
net/http.HandlerFunc.ServeHTTP(0xc820148480, 0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /opt/local/go/src/net/http/server.go:1422 +0x3a
github.com/influxdb/influxdb/services/httpd.gzipFilter.func1(0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:705 +0xda
net/http.HandlerFunc.ServeHTTP(0xc8201484a0, 0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /opt/local/go/src/net/http/server.go:1422 +0x3a
github.com/influxdb/influxdb/services/httpd.versionHeader.func1(0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:721 +0xc0
net/http.HandlerFunc.ServeHTTP(0xc8201484c0, 0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /opt/local/go/src/net/http/server.go:1422 +0x3a
github.com/influxdb/influxdb/services/httpd.cors.func1(0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:754 +0x328
net/http.HandlerFunc.ServeHTTP(0xc8201484e0, 0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /opt/local/go/src/net/http/server.go:1422 +0x3a
github.com/influxdb/influxdb/services/httpd.requestID.func1(0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:764 +0x15d
net/http.HandlerFunc.ServeHTTP(0xc820148500, 0xfffffd7ffe973810, 0xc95f893c00, 0xc9f323e2a0)
        /opt/local/go/src/net/http/server.go:1422 +0x3a
github.com/influxdb/influxdb/services/httpd.logging.func1(0xfffffd7ffe973810, 0xc95f893be0, 0xc9f323e2a0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:772 +0x10b
net/http.HandlerFunc.ServeHTTP(0xc820148520, 0xfffffd7ffe973810, 0xc95f893be0, 0xc9f323e2a0)
        /opt/local/go/src/net/http/server.go:1422 +0x3a
github.com/influxdb/influxdb/services/httpd.recovery.func1(0xfffffd7ffe9737d8, 0xc886041ce0, 0xc9f323e2a0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:782 +0x114
net/http.HandlerFunc.ServeHTTP(0xc820148540, 0xfffffd7ffe9737d8, 0xc886041ce0, 0xc9f323e2a0)
        /opt/local/go/src/net/http/server.go:1422 +0x3a
github.com/bmizerany/pat.(*PatternServeMux).ServeHTTP(0xc820132048, 0xfffffd7ffe9737d8, 0xc886041ce0, 0xc9f323e2a0)
        /home/jb/src/github.com/bmizerany/pat/mux.go:109 +0x244
github.com/influxdb/influxdb/services/httpd.(*Handler).ServeHTTP(0xc820146310, 0xfffffd7ffe9737d8, 0xc886041ce0, 0xc9f323e2a0)
        /home/jb/src/github.com/influxdb/influxdb/services/httpd/handler.go:168 +0x324
net/http.serverHandler.ServeHTTP(0xc8202a2000, 0xfffffd7ffe9737d8, 0xc886041ce0, 0xc9f323e2a0)
        /opt/local/go/src/net/http/server.go:1862 +0x19e
net/http.(*conn).serve(0xc886041c30)
        /opt/local/go/src/net/http/server.go:1361 +0xbee
created by net/http.(*Server).Serve
        /opt/local/go/src/net/http/server.go:1910 +0x3f6
[wal] 2015/09/04 17:57:49 Flush due to idle. Flushing 4 series with 8 points and 136 bytes from partition 3. Compacting 0 series
[wal] 2015/09/04 17:57:49 write to index of partition 3 took 2.684138ms
[wal] 2015/09/04 17:57:49 compaction of partition 3 took 342.783µs

Ran out of memory after importing about 300.000 k measurements, stopping the import to let it idle a while to see what happens (about 13 GB RSS at that point), then lots of flushes happning and crashed when reaching the limit of 16 GB. About 200k goroutines identical to this in the trace:
goroutine 203538 [select, 1 minutes]:
runtime.gopark(0xcff118, 0xc83a07fe98, 0xbbd388, 0x6, 0xc8c3c54318, 0x2)
        /opt/local/go/src/runtime/proc.go:185 +0x179 fp=0xc83a07fbf0 sp=0xc83a07fbc8
runtime.selectgoImpl(0xc83a07fe98, 0x0, 0x18)
        /opt/local/go/src/runtime/select.go:392 +0xa6d fp=0xc83a07fd98 sp=0xc83a07fbf0
runtime.selectgo(0xc83a07fe98)
        /opt/local/go/src/runtime/select.go:212 +0x12 fp=0xc83a07fdb8 sp=0xc83a07fd98
github.com/influxdb/influxdb/tsdb/engine/wal.(*Log).autoflusher(0xc931c250a0, 0xc8b3a5ff20)
        /home/jb/src/github.com/influxdb/influxdb/tsdb/engine/wal/wal.go:606 +0x567 fp=0xc83a07ffa0 sp=0xc83a07fdb8
runtime.goexit()
        /opt/local/go/src/runtime/asm_amd64.s:1696 +0x1 fp=0xc83a07ffa8 sp=0xc83a07ffa0
created by github.com/influxdb/influxdb/tsdb/engine/wal.(*Log).Open
        /home/jb/src/github.com/influxdb/influxdb/tsdb/engine/wal/wal.go:220 +0x6bf

Am I doing something absurd by attempting to import data like this? What's the expected procedure here? The combined size of the uploaded measuerments is about 13 MB at the point of this crash...

@calmh We need to investigate the contents of your /meta directory to debug this further. Can you make a gzip of /meta and upload it via http://cwok.me/cu/3971?

Sure! I'll get you the data tomorrow.

https://nym.se/t/meta.tar.gz

This is an issue related to bz1 engine which is deprecated and has been replaced by the tsm engine in 0.10.0.  There is a conversion tool that can be used to convert b1 and bz1 shards to tsm format for use in 0.10.0.   Unfortunately, there isn't anything we can do about this specific now.  If you still see this in 0.10.0, please open a new issue.


Command line tools should have stats options

All of the command line tools should include some statistical output, which may or may not be customized to the application at hand.
At the very least, they should report on the number of movies/media objects processed, and any additional data that may be derived from it.  For the tools that support the --random option flag, it should report on what percentage of the total data set was output.
For example, media.tools.movies.castlist could report statistics on the total number of actors and maybe the average number of roles the every actor had in the output.
Also consider timing metrics, such as repository load time, and total program run time.

Commit.
https://github.com/cjcodeproj/medialibrary/commit/889a180df8885f43ddcb67030010af0a63f74ced

Closing notes.
Discovered a bug in the castlist code:
https://github.com/cjcodeproj/medialibrary/issues/66
Also in regards to castlist, a discovery was made regarding a movie in the test data set that doesn't even have a cast, so an optional flag --report-empty was added to allow for debugging purposes.
Sample output using internal test data:
$ python -m media.tools.movies.castlist --random 5 --stats
Actor Name                     Title                          Portrays
============================== ============================== ==============================
Paul Bonifas                   The Train                      Spinet Resistance Leader
Aimee Graham                   From Dusk Till Dawn            Blonde Hostage
Nate Irwin                     The Thing                      Helicopter Pilot
Wayne Knight                   Dead Again                     'Piccolo' Pete
                               Jurassic Park                  Dennis Nedry
                               V.I. Warshawski                Smeissen
Lupe Ontiveros                 The Goonies                    Rosalita
============================== ============================== ==============================

                              Entire Set Sample Set Percentage
                              ---------- ---------- ----------
Actor count:                        3900          5      0.13%
Movie count:                         543          7      1.29%
Average movies per actor:           1.39       1.40

There are 3900 total actors across 543 movies in the test data set, which averages out to 1.39 actor jobs per title, but with the smaller sample selection of 5 actors, we get 7 movies, leading to an average of 1.4 actor jobs in the sample.
Statistical output is now featured on these tools.
media.tools.movies.list
media.tools.movies.castlist

More will be added later on, but covered in a separate ticket.
There probably needs to be better work done in stats collection, and formatting the statistical table.  The code works, but it feels like there is a lot of duplication.


High browser memory usage on apps page during service changes

When viewing an application stack with a larger number of services (~90) and applying changes to those services using rancher-compose from the command-line, the memory usage in the browser increases quite rapidly. It's currently at arond 850MB and ... it's just crashed. This happens quite reliably.
I'm going to try record a timeline dump in Chrome in case that's helpful.

Sorry, I can't collect a heap timeline without the browser tab crashing.

rancher-compose is quite good at creating a torrent of calls which can easily result in the UI receiving dozens+ of resource.change events a second.  We will be working on bucketing them so that the same object doesn't get too many changes nearly simultaneously and adding whitelist/blacklisting so the UI can not receive events it doesn't care about soon.


Filtering devfile stacks based on the architecture field in metadata when running odo init

User Story

As an odo user using a cluster running on IBM Z
I want odo init Stack selection to list only stacks supporting IBM Z
So that I don't create a component that uses devfile that won't work on my cluster.

Parent user-story: #6669
Acceptance Criteria

[ ] Stacks without any architectures in the index are compatible with all of them

[ ] odo init interactive mode should ask for architectures (multi-choice) before to ask to select a Devfile stack

[ ] x86 architecture is checked by default

[ ] make it work with index and v2index

[ ] Possibly add human readable architecture names for the user selection

[ ] On flag mode, add a flag --architecture=x64 --architecture=ppc64le. Default value: amd64 (to be sure it works for amd64 users)
Get available values at https://github.com/devfile/api/blob/main/pkg/devfile/header.go#L24-L29 to display it on help/output mesg, and error out if passed value not in the list

No automatic

In Alizer mode, display the architectures supported by the chosen Devfile, so the user can reply No and select manually a new one

registry-library documentation on how to filter based on architecture https://github.com/devfile/registry-support/tree/main/registry-library#specify-registry-options
/kind user-story
/priority high

Grooming (Jul 6, 2023)

List of architectures built using constants from the library
Unit tests only


file-admin download image replaces slash with %5C On Windows

File-admin replaces / with %5C when downloading image from file-admin

/static/assets/local/meta_images%5Chealth-insurance.jpg

have to be

/static/assets/local/meta_images/health-insurance.jpg

path = op.join(op.dirname(file), '../static/assets/local')
admin.add_view(FileAdmin(path, '/static/assets/local/', name='Static Files'))

I ran into this problem today and my friend(PHP expert) helped me out, try:
admin.add_view(FileAdmin(path, name='Static Files'))

@pnguyenduong It seems not joining path from FileAdmin View... I will try


Broken TAB spacing in less after variables

VSCode Version: 1.2.0
OS Version: Win 10 x64 Pro (CZ) - current "non-insider" build

Steps to Reproduce:

@grid_sm_end:767px; when i want to align variables in config and press TAB after :
it will do this @grid_sm_end::;767px; pressing tab again will just add more: @grid_sm_end:::::;767px;

i had problems with this before, when it would completely rewrite variable name with something else
Workaround: use space after : then press TAB

im using TABs, becouse i know people around world preffer different spacing, like 2 spaces or even 8. In code 2 tabs can look like 2 spaces or 4 spaces for me.. it just depends on your editor settings.  TAB can be as wide as you want with still having same code in background <-- just in case someone gonna try respond "use spaces" (:

The tab key invokes emmet.  For reasons unknown to me, emmet expands ':' to ':::'.

This is the standard emmet behaviour and the problem repros in other emmet integrations in other editors. I suggest to file an issue against emmet.
As a work around you can disable emmet expansions on tab using the emmet.triggerExpansionOnTab setting.
Closing this issue as an upstream issue.

With the new Emmet improvements in VS Code 1.15, this is no longer a problem
Tab will no longer trigger Emmet, instead Emmet abbreviations will show up in suggestion/auto-completion list.
Please read more on what else is new at Emmet 2.0


Inlining wrappers over createSelector causes selector args to be of any type

When upgrading from 4.0.0 to 4.1.5, our selectors started to complain about any types when we inline our createSelector wrapper:

TS7006: Parameter 'featureA' implicitly has an 'any' type.
TS7006: Parameter 'featureB' implicitly has an 'any' type.

TypeScript version is 4.4.2.
CodeSandbox example
Here's a code sandbox example of the issue (line 66):
https://codesandbox.io/s/reselect-typescript-issues-xsgeq?file=/src/App.tsx
Description
Code example:
const selectComposedFlagInline = createSelector(
  createPreferenceSelector("featureA"),
  createPreferenceSelector("featureB"),
  (featureA, featureB) => featureA && featureB === "release"
  // ^^^^      ^^^^   Parameters implicitly has an 'any' type.
);

Here createPreferenceSelector is our helper to build typed preference selectors. It's included into code sandbox example:
function createPreferenceSelector<P extends PrefName>(prefName: P) {
  return (state: AppState) => selectPreferenceValue(state, prefName);
}

Extracting preference selector into its own variable solves the issue:
const selectFeatureA = createPreferenceSelector("featureA");
const selectFeatureB = createPreferenceSelector("featureB");

const selectComposedFlag = createSelector(
  selectFeatureA,
  selectFeatureB,
  (featureA, featureB) => featureA && featureB === "release"
);

Removing the helper entirely also solves the issue:
const selectComposedFlagNoHelper = createSelector(
  (state: AppState) => selectPreferenceValue(state, "featureA"),
  (state: AppState) => selectPreferenceValue(state, "featureB"),
  (featureA, featureB) => featureA && featureB === "release"
);

While it didn't look like a huge issue, it made me very curious about why inlining caused that issue. For me it looks like all three examples should work just fine.
After some testing it looks like this issue was introduced in 4.1.0.

Huh. I'll be honest, I have no idea what's going on here and am not really even sure how to start debugging this one :)
(This goes along with my Twitter comment the other day that "what we really need is a types-level debugger that would tell us how TS is analyzing and transforming types at each step in the process".)
Given that there seem to be workarounds and that I've got other stuff going on, I'm afraid this one is going to be relatively low priority, and I'm doubtful at first glance that I'd even be able to figure out what's happening or what a solution is.
I may toss it out on Twitter or something and see if anyone else has a clue what's going on here.

Thanks for the response! It's not urgent at all, the workarounds work fine for now.

what we really need is a types-level debugger that would tell us how TS is analyzing and transforming types at each step in the process

It would be awesome to see that.

Yeah. If you look at the commit/issue history of this repo over the last few weeks, you can see that I (and a few others I've dragged in) have been iterating on the types repeatedly.  Every time we fix one issue, something else pops up.  I feel pretty good about the types in 4.1.5, tbh - they pass all the typetest scenarios we've got (and I've added a bunch of additional scenarios based on these issues), and based on the thought and design we've put into how they work, they seem to be doing what they should logically in combining parameters.
That process would have been much easier if I'd had better ways to inspect the intermediate steps of the types, though :)

Potentially the same issue also bites me on the other end — in the composed selector calculation, here's a small sample:
interface Foo<A> {
  foo: A
}

// some selector
function foos(s: RootState) {
  return [] as Foo<string>[]
}

// extract loses type information when used with createSelector
function extract<A>(items: Foo<A>[]) {
  return items[0].foo
}

const foosDerived = createSelector(foos, extract)

// This type is unknown when it should be a Foo
const shouldBeFooButIsUnknown = foosDerived(null as any)

@garrettm what is the inferred type of foosDerived when you mouse over it, on both of the lines that it's used?
Also, what happens if you call foosDerived() with a meaningful type argument instead of as any?

@markerikson here's a more full repro:
import {createSelector} from 'reselect'

interface Foo<A = unknown> {
  bar: A
}

function values<A>(_: {[k: string]: A}): A[] {
  const result: A[] = []
  const ks = Object.keys(_)
  for (const key of ks) {
    result.push(_[key])
  }
  return result
}

interface State {
  foos: {[k: string]: Foo<string>}
}

const state: State = {foos: {}}
const foos = (s: State) => s.foos

const foosList = createSelector(foos, values)
const thisShouldBeFoos: Foo[] = foosList(state)

const foosListWorking = createSelector(foos, f => values(f))
const thisIsFoos: Foo[] = foosListWorking(state)

in this example, I see this error:
typescript$ tsc inference.ts --target es2017 --moduleResolution node
inference.ts:25:7 - error TS2322: Type 'unknown[]' is not assignable to type 'Foo<unknown>[]'.
  Property 'bar' is missing in type '{}' but required in type 'Foo<unknown>'.

25 const thisShouldBeFoos: Foo[] = foosList(state)
         ~~~~~~~~~~~~~~~~

  inference.ts:4:3
    4   bar: A
        ~~~
    'bar' is declared here.

Found 1 error.

Even though both calls are identical, there's just an extra function call in the working one. I see unknown[] as the type of thisShouldBeFoos in this example.

@garrettm fwiw, while you're definitely seeing something, it looks to be a very different problem than what was originally described in this issue.
Pasting that example into the TS playground, the type of foosList as it's being used is:
const foosList: (state: {
    foos: {
        [k: string]: Foo<string>;
    };
}) => unknown[]

So, somehow the final return type is the problem here, and I'm not sure where it's going wrong in the middle.

Think this is the result of using ReturnType<> directly on a function with generics (ReturnType is used in ExtractReturnType) which returns unknown. As far as I know this is a limitation on generics in typescript and the workarounds on this page are the best one can do at the moment.

Huh. That... sounds very plausible, yeah.

I don't think this is an issue anymore as the types were simplified and tested prior to v5.


The Slider is skipping other items

Hello, when users swipe hard enough it looks like its skipping other slides, how can we limit it to only one slide per swipe? slidesToScroll: 1 doesn't seem to do anything
const wrap = document.querySelector('.js-home-slider');
  const viewPort = wrap.querySelector('.js-home-slider-viewport');
  const dots = wrap.querySelector('.js-home-slider-dots');
  const homesliderStart = EmblaCarousel(viewPort, {
    loop: true,
    draggable: true,
    dragFree: false,
    speed: 10,
    startIndex: 0,
    slidesToScroll: 1,
  });

Hello @leah-cc,
Thank you for your question.
The short answer is:
That this is by design and it's intended to work this way.
The long answer is:
That Embla Carousels animation engine is different from other carousel plugins. It animates by simulating physics in real life and I made this design choice because I wanted a carousel that feels natural to drag and interact with.
Most available carousel plugins only determine which direction the carousel was dragged and then decides whether the carousel should move to the next or the previous slide. If you think about it, this behavior is very unnatural. Because if you were to drag something in real life with a lot of force, it will move further away than if you were to drag it with less force. So Embla not only determines which direction the carousel was dragged, it also measures the drag force. Based on the drag force it will or will not skip slides. It all depends how hard the users drag it.
We have a new browser standard emerging for horisontal scroll areas on websites called CSS scroll snaps, and they also work this way. If you're interested, take a look at this CSS scroll snap example and try dragging it on mobile. I decided to go with the same drag design choice for Embla Carousel. I hope I've managed to explain why I made this choice and I hope that all this makes sense to you.
Kindly,
David

Hi @davidcetinkaya  Thank you for the explanation. But Is there a way to adjust the threshold swipe? Because even with very light swipe it sometimes skip items from 1 - 3 or 1 - 5. Many thanks!

Hello @gilbertlucas46,
Thank you very much for your input on this 👍.
At the time of writing there's no way to control this externally. If you don't mind, I'd appreciate if you could share a CodeSandbox or a link that demonstrates the issue you're experiencing. Maybe there's something I'm missing here and a demonstration link may help. Because if it's from 1 - 5 it sounds like Embla may be setup in a way it's not intended to be used.
If you're interested, open this CodeSandbox demonstration in a mobile browser. It's a demonstration where you can compare swipe experience between Embla and CSS Scroll Snaps.
Best,
David

Hello, thank you for your reply. If you try to open your. example on mobile. you can actually see what I mean. https://webm.red/view/wrFu.webm

Hi @gilbertlucas46,
Yes, sorry for being unclear. What I want to convey is that Embla Carousels's drag functionality is designed to work like CSS Scroll Snaps so try swiping in the same manner on the carousel below and they should be very close.
I see that you're using the browser dev tools when swiping. Have you tried this on mobile? Because using the devtools with mouse to simulate touch device input isn't accurate.

I’m closing this issue for now. Feel free to reopen it if you want to discuss it further. Thank you!

Hi David,
It's me again! You mention exposing an option to configure the friction of the drag force. Is this something that can be explored?
Thanks,
Sam

Hello again Sam (@akardet),
Thank you for your question. That’s correct. I mentioned that as a suggestion in this issue but didn’t get any response from the issue author. So the discussion basically died and the friction option hasn’t been implemented.
What I had in mind when I mentioned that I could setup a CodeSandbox demonstrating what you want to achieve, was extending Embla with its undocumented method dangerouslyGetEngine(). It has been mentioned in issue #86 in this comment an basically is there for the following purposes:

About the dangerouslyGetEngine(), yes it’s not documented but it’s safe to use if you know what you’re doing 🙂. The method basically exposes most of the internal Embla Carousel engine, and is intended to aid plugin authors with maximum extensibility. Another purpose is that it enables for extending the carousel with features that either won’t be added to the core itself, or features that will be released later on.

Are you interested in a solution using this approach?
Kindly,
David

Ahh I see, yeah it would be helpful to see a CodeSandbox example if it's not too much trouble.
Thanks,
Sam

Hello Sam (@akardet),
As you mentioned in our previous conversation you’re aware of the design choice with momentum scrolling. If you still want to use Embla but change that behavior I don’t mind trying to achieve this and create a CodeSandbox for you, like I suggested here.
 But at the time of writing I don’t know when that will be possible.
Kindly,
David

For anyone interested (@leah-cc, @gilbertlucas46), is this close to the desired behavior you would like to see?
https://user-images.githubusercontent.com/11529148/112989433-3614f680-9165-11eb-957e-72721cd287f5.mp4
Kindly,
David

For anyone interested, maybe (@leah-cc, @gilbertlucas46, @farshidshahmoradi1996), is this close to the desired behavior you would like to see?
https://user-images.githubusercontent.com/11529148/112989433-3614f680-9165-11eb-957e-72721cd287f5.mp4
Kindly,
David

@davidcetinkaya Watching at the clip, I expect threshold for scroll to be decreased. But maybe that will be problem of parameter.
I'll be satisfied with dangerouslyGetEngine() way if you don't want to expose public API for this. Could you provide any hint for this?

Hi @jeiea,

I expect threshold for scroll to be decreased

I'm not following. How do you mean?

I'll be satisfied with dangerouslyGetEngine() way if you don't want to expose public API for this.

It seems like a lot of people want this so I think I'm going to release this publicly, but I can't give an ETA for it. Recently, I've had a little time to look over some parts of the code that can be simplified so it will be possible to add this feature without adding to the current bundle size.
Best,
David

I think required drag distance to swipe is too long. That maybe due to wide width but it can be shortened. And even if drag distance is short, I will admit it as swipe if speed is fast enough. Because it would be matter of parameter, it's consistent with my expectation overall.

@jeiea, the required drag distance may look like it's long in the video, but it actually isn't.

I expected all swipe cause scroll. But it didn't. What makes difference?

@jeiea I'm just moving the mouse before I actually start dragging (performing a pointerdown and pointerup).

@jeiea The bottom line is, you can’t see where I release the mouse after dragging on the video, so you can’t tell how far I’ve dragged the carousel with the mouse before releasing the mouse button. This is because there’s nothing that visually indicates this. I’m not using a grab cursor when the mouse button is down for example.

I think required drag distance to swipe is too long

So your assumption about drag distance is probably not accurate in this case.

Ah, I had a illusion that 2, 3, 5th swipes failed to scroll to the next slides. Perhaps reverse elasticity give me that illusion.

@jeiea ah I see. Your comment makes sense now. Every drag move succeeds in the video.  It’s just that the 1st and the 4th drag is with less force so it doesn’t bounce back. As you realized, it’s reversed elasticity 👍🏻.

@jeiea I have a working draft of this feature now. Care to try it out? If yes, please tell me if you prefer a VanillaJs or ReactJs CodeSandbox setup.
Best,
David

I prefer react one.

@jeiea thank you for your swift response. I'll let you know when it's ready.

@jeiea here are the links:

React CodeSandbox.
React App View (that simulates a real browser environment).

The new option is called skipSnaps. When it's set to false, it will enable the described behavior in this issue. Let me know how it goes.

@davidcetinkaya Sorry for late reply. I showed it to my team, and it seems good.

@jeiea thanks for taking time to test this. I'll release this as soon as I get the chance with v4.5.0. Note that you need to set your options to skipSnaps: false to enable this.
In the next major version (which will be 5.0.0), this will be the default behavior though.

I just applied to real project and found some strange behavior. It seems when loop: true both ends of container are not regarded as snaps. Could you check it?

@jeiea sorry, I forgot to change the CodeSandbox code to the latest. I solved this issue yesterday. Try the CodeSandbox here again and let me know if we're talking about the same issue.

I confirmed that it is the same issue. Thank you.

@jeiea this feature has been released with v4.5.0.
Enjoy,
David

Just added the new option to my app and it's working flawlessly! Thanks for the great work, David 😊


pkg/k8s: fix User-Agent for kubernetes client

The Kubernetes' client User-Agent was never set and it would always
fallback to the default value. This commit fixes this issue and now all
Cilium components will correctly present their User-Agent.
Fixes: b31ed337090a ("Add k8s client qps and burst as cli flags for the operator")
Signed-off-by: André Martins<EMAIL_ADDRESS>Set right User Agent in Kubernetes client for all Cilium components.

No need to re-run the entire CI for this as smoke tests should be enough.


🚨 Potential Prototype Pollution

👋 Hello, @jesusgm - a potential high severity Prototype Pollution vulnerability in your repository has been disclosed to us.
Next Steps
1⃣  Visit https://huntr.dev/bounties/1-other-jesusgm/deepmergefn for more advisory information.
2⃣  Sign-up to validate or speak to the researcher for more assistance.
3⃣ Propose a patch or outsource it to our community - whoever fixes it gets paid.

Confused or need more help?

Join us on our Discord and a member of our team will be happy to help! 🤗

Speak to a member of our team: @JamieSlome

This issue was automatically generated by huntr.dev - a bug bounty board for securing open source code.

It is not an issue.
This is a function to make a merge of two objects, if whoever uses it, does it in an evil way, it is not the fault of the function.


Idempotent request option

From @BicanMarianValeriu:

Would not be useful to add a method for adding scripts loaded by other apps to cache ? Eg: I have a list of scripts id's loaded by WordPress and instead of lazyloading the same id again, I would put that list to cache and run code directly.

I was trying to make a feature request.
I'm thinking that is more useful to have that method and also, eg, if script is already loaded by something else (and or plugin), do not throw the error, skip the head appending and actually run the callback instead. Throwing error breaks the js while with the solution above will continue working in case you double load the same script url/id. Makes sense ?

https://github.com/muicss/loadjs/pull/94

Here are two loading scenarios:

Use browser cache to avoid multiple fetches
If the expires header is set properly then subsequent calls to loadjs will trigger code execution and callback execution but not multiple fetches:

loadjs('/file.js', function() { /* callback1 */ });  // fetch over network
loadjs('/file.js', function() { /* callbcak2 */ }); // fetch from cache

Use .ready() to fetch once and execute callbacks multiple times

loadjs('/file.js', 'file-load');

loadjs.ready('file-load', function() { /* callback1 */ });
loadjs.ready('file-load', function() { /* callback2 */ });

Does your use case fit under one of these?

Sorry for late answer.
3.
File is loaded by some other application/method and not via this plugin. Eg, I have a list with this file ids. For each ID I need a way of pushing them to cache then:
loadjs('file.js', 'file-id', ()=> {  console.log('File is identified as loaded by it's id and instead of doing nothing/throwing error just run the callback function ); });
That's is why I was thinking about a method of specifying cache before any loadjs function run.

Unfortunately, if the file is being loaded outside of LoadJS then it's going to be difficult to detect whether or not it has already been fetched/loaded. I'm not sure it's even possible to detect all file downloads triggered by other code.

Agree with you but my Idea was to "tell" this plugin that x,y,z files have been loaded and plugin "can" run the callback instead of throwing error. Nothing fancy, just need this since you know plugins code better - maybe a method similar to 'isDefined' ... loadJs.preloadCache( [file-id-1, file-id-2, ...] );

Why do you need LoadJS for this? Why not just run the callback after the files have been loaded?


The status of this module is unclear

Given that EventStore support for Nodejs is almost non-existent; this module appears to be only source for integration for Nodejs applications. Note that while it is not a top ten contender module, it does receive active interest.
Is this module being maintained?
Status should be indicated in the Readme as guidance.
Thx

Well EventStore has an HTTP API that can be use from any language. This is a port of their TCP client for nodejs. The project is active, as in people are using it, issues are being fixed and closed. The standard is to add a notification if the project is unmaintained or deprecated, which it is not.


Fix command parameters.

There is a bug in the generation of the command line parameters. This should fix it.

Hello @mducharme, are you still maintaining this package?
Please merge @tomfielder s pull request, this allows to use php-cpf with grunt >1
Thank you!

Thank you. Could I also ask you to bump the version?


Non-naturally aligned access to the trap vector table

When performing a hardware vectored interrupt entry the access to the trap vector table will always be a naturally aligned access as the trap vector table access is defined with:

pc := M[TBASE + XLEN/8 * exccode)] & ~1
TBASE = xtvt[XLEN-1:6]<<6 # Trap vector table base is at least 64-byte aligned.

However, when performing an xret instruction while xcause.inhv is set, the trap vector table access is not guaranteed to be a naturally aligned access as it is defined as:

pc := M[xepc]

Of course if xepc has not been touched by software, its content would have remained naturally aligned, but we cannot make that assumption when implementing this hardware.
Could the xret instruction therefore be defined as follows instead?

if (xcause.inhv) //xcause here refers to the cause CSR of the previous privilege mode
pc := M[xepc & ~(XLEN/8 - 1)] //xepc here refers to the current privilege mode
else
pc := xepc

The xret should cause a trap if not naturally aligned.  In some systems, requiring that the low bits are ignored in this case would require additional special-case logic.  Also, trapping will help catch bugs, so I think the current behavior is the correct choice.
Issue https://github.com/openhwgroup/cv32e40x/issues/704 is a hardware design issue in a particular core implementation - the same issue shows up whenever an instruction prefetcher steps into data sections.  In this case, the prefetcher could be told not to prefetch around a table lookup.

Discussed in TG meeting 1/17/2023.  Closing.

Hello @kasanovic
Thank you for discussing this issue in the TG meeting. The following is however still not fully clear:

The xret should cause a trap if not naturally aligned.

Is it allowed that 'naturally aligned' means 32 bit aligned if an xret is executed with xcause.inhv == 1 even though a hart supports the C extension?
Should the exception code be 0 (instruction address misaligned) when executing an xret with xcause.inhv while mepc is not word aligned?

"Naturally aligned" depends on the possible instruction sizes.  If compressed instructions are supported, then only the low bit must be zero. If compressed instructions are not supported, then both low bits must be zero.
Yes, instruction address misaligned exception should be reported.

Hello @kasanovic ,
I don't think this proposal is appropriate for harts that support compressed instructions.
Let me try to explain the issue better:

The trap vector table itself is at least 64-byte aligned (also if a hart supports Compressed instructions)
Hardware vectored interrupts fetch from the vector trap table with a fetch aligned to XLEN/8 (also if a hart supports Compressed instructions)

So clearly the actual content of the trap vector table is at least word aligned (actually it will be XLEN/8 aligned) (also if a hart supports Compressed instructions).
For ease of discussion let's now assume that XLEN=32 and the hart supports Compressed instructions.
If the hart perform a xret with xcause.inhv == 1, then I think it would be very weird if we require the alignment trap to be based on the 'natural alignment' implied by the Compressed instructions (as suggested in above answer). The actual trap vector table content in this case is still word aligned (and not halfword aligned), and therefore I think that we should let  xret with xcause.inhv == 1 cause a trap if the initial fetch address has its lower two bits as 2'b10 (even if the hart also supports Compressed instructions) (the final target address of course follows the regular natural alignment rules). If we would not do this then, upon executing a xret with xcause.inhv == 1 the hart would have to construct a 32-bit pointer from two word aligned table entries (which it can do of course, but the result would never be a valid pointer).
So in short I think we should do the following:

xret with xcause.inhv == 1: Cause a misaligned instruction trap only if the initial table fetch address is not XLEN/8 aligned or the (final) target address is not naturally aligned.
xret with xcause.inhv == 0: Cause a misaligned instruction trap only if the target address is not naturally aligned.

You're correct. In this case with xcause.inhv set, there should only be an alignment exception raised if the xepc was not naturally XLEN/8-byte aligned as the table entries must be XLEN/8 aligned.

We'll create a pull to define the misalignment trap in this way.

Yes, that's right.

In TG meeting, we decided it was cleaner and simpler for hardware to simply force the table alignment by clearing the low bits before access the table.  This removes the need to check for trap and matches other treatment of xepc values.


Support using Apache CarbonData in notebook

Why is this PR needed?
Support using Apache CarbonData in notebook
What changes were proposed in this PR?
Support using Apache CarbonData in notebook
Does this PR introduce any user interface change?

No

Is any new testcase added?

No,only add doc

Build Failed  with Spark 2.3.4, Please check CI http://<IP_ADDRESS>:12602/job/ApacheCarbonPRBuilder2.3/6385/

Build Failed  with Spark 2.4.5, Please check CI http://<IP_ADDRESS>:12602/job/ApacheCarbon_PR_Builder_2.4.5/4677/

+1, good contribution, as of now many users are using notebook to do data analysis.

Build Failed  with Spark 3.1, Please check CI http://<IP_ADDRESS>:12602/job/ApacheCarbon_PR_Builder_3.1/769/


Add standard linting rules and fix errors.

"semicolon": [true, "never"],

War time.

@jeffreyssmith2nd: R&D discussed this yesterday in standup. For now, in the interest of not blocking progress, we're going to use semicolons in this repo. We can revisit the rule in the future.

Github refuses to acknowledge changes I pushed to this branch. So closing it in favor of #53


Supplementary --fallback-style= option

In the current --fallback-style, it is possible to set the rollback style[^1], but I want the rollback style to be a custom path configuration[^2]. Because I want all of my code to be formatted as it should be without having to copy .clang-format files everywhere.
When set to --fallback-style=file:<format_file_path>: Use the <format_file_path> configuration file when no .clang-format file is found.
[^1]: for example: LLVM
[^2]: Similar to the 3. 'file:<format_file_path>' to explicitly specify the configuration file section of the option

I know I sent it in the wrong place, but I can't find the page where the clang-format library is located to submit the issue.

We have https://github.com/clangd/clangd/issues/805 on file for adding a way to point clangd to a specific clang-format config file.
(See also https://github.com/clangd/vscode-clangd/issues/184 and the workarounds discussed there, notably the workaround of putting a .clang-format file in a directory which is an ancestor directory of all your projects, for example your home directory.)
If you're suggesting a change to clang-format's --fallback-style flag itself (which would affect the clang-format command-line tool in addition to clangd), you can file an issue upstream at https://github.com/llvm/llvm-project/issues.

Thank you for everything on it.


Enh Req: Create a Chocolatey package for DNVM

OK so it is a one liner to install DNVM from PowerShell but don't ask anybody to remember that one liner. They'll have to look it up each time.
What I would like to tell people is to bring up PowerShell V5 (if you don't have V5 go get it) and execute Install-Package dnvm.  Now wouldn't that be much nicer?

:+1:

+1

+1

This needs to be updated for .NET Core.

dnvm is obsolete. If you still feel this is important, I recommend you request this here: https://github.com/dotnet/cli


Use urlRewrite technique to redirect index.html to support html5 mode

When html5 mode is on, refresh causes the web server to seek for the given folder,
To support this right we need a feature to always perform url rewrite to index.html (or some other page) automatically.
Something like:
-u foo.html where default of -u is index.html
Thanks

Came here to say the same thing. Allowing an easy way to specify a catch-all file for single page apps would be excellent :)

This is so necessary for using in combo with Angular!

This would be great :)

:+1: @connor4312 having this same problem. Need it for testing and developing AngularJS SPA's, but can't because HTML5 mode fails.

http-server is heavily dependent on ecstatic module and imo this is the right place to add this functionality in first place (then add support for this in http-server). Right now my current solution is duplicate the index.html and name it 404.html...isn't the best, but works.

Closing as a duplicate of #80.


Getting final representation

Hi,
Most script I found are for re-producing the paper's output. Would you please explain how can I use it to calculate the final representation for given sentence?
Thanks

You're right — the scripts are tailored to this particular pipeline. But you can certainly dig in and change what we are doing with the data.
Check out fat_classifier.py to see how we compute representations of two sentences for the SNLI task (called premise_vector and hypothesis_vector in the code that I linked to). You could delete everything after this point and compile a Theano function which just outputs the representations, if that's what you're interested in.


Hide Samples link location is somewhat non-intuitive

Could we have the "Show matching samples" button toggle into the "Hide Samples" button when pressed?

Good idea!


Update 117HD to 1.1.3

This update is primarily to add https://github.com/117HD/RLHD/pull/20 which fixes issues with loading LWJGL in some cases.

Hmm, it does not like com.sun.nio.file. My bad, will get that sorted.

Should be good to go now :+1: The switch to sRGB makes darker areas slightly brighter, so we may revert that in a few days if enough people complain, even though it should be better overall.


Can the CPI create storage account containers automatically?

We often find that customers attempt to use empty storage accounts with no bosh and stemcell containers.  Could the CPI create those container if they are missing?  Ideally with private access so they can be used in premium and standard storage accounts.
@sadvani

@dsboulder Older version last year will check and create those containers. @cppforlife suggested us to remove it for better performance because the containers are created only once.
The access of the container stemcell under the default storage account must be set to 'Public read access for blobs only' because CPI needs to copy stemcells to other storage accounts.

I would add the following points:

For the default storage account, CPI won't create those containers just as @AbelHu said.
For the additional storage account (which can be specified in resource_pool), if the storage account doesn't exist, CPI will create the storage account and containers. If the storage account already exists, CPI won't check and create those containers.

If it's possible to create those containers for the "additional" storage accounts, that would be awesome.


Changed from Nodeport to Loadbalancer type of service.

This is demo K8s app for interview

I'm very sorry  .  Wrong branch


Constant Initializer only works on keys ending with weight

The Constant initializer only overrides the _init_weight method. Consequently, there is no good way to use existing initializers to initialize the values for bias terms, which always are set to zero.
Example code
data = mx.sym.var('data')
out = mx.sym.FullyConnected(data, num_hidden=3, name='out')
ex = out.simple_bind(mx.cpu(), data=(1, 3))
init = mx.initializer.Constant(1)
init(mx.initializer.InitDesc('out_bias'), ex.arg_dict['out_bias'])
print(ex.arg_dict['out_bias'].asnumpy())

The same is true for Uniform, and Normal, and while an argument could be made that typically when Uniform and Normal are used, biases are set to zero, this current design results in very unexpected behavior. If I apply a Constant, Uniform, or Normal, initializer to a variable, my expectation is that it will actually initialize the variable in that way! Only through digging into the source code is it apparent that this expectation is violated and even if it was made more apparent in the documentation, I don't think that's the right design anyway. The functions should work as you would expect from their name. If someone wants to treat bias terms uniquely, they should use a Mixed initializer to explicitly state that difference. Or, if initing bias to zero is common enough, allow that mode with a flag in the constructor of these initializers, so it's still explicit, but simpler than using Mixed.
For more complex initialization strategies, it makes sense that it's variable dependent.

This issue is closed due to lack of activity in the last 90 days. Feel free to ping me to reopen if this is still an active issue. Thanks!

I  also met ... @tqchen @piiswrong @mli

@jmacglashan    Do you have any new findings？

@apache/mxnet-committers: This issue has been inactive for the past 90 days. It has no label and needs triage.
For general "how-to" questions, our user forum (and Chinese version) is a good place to get help.

Hello @jmacglashan - Thanks for submitting this issue. Can this be closed?

Why should it be closed @kalyc ?

@kalyc The behavior I originally described remains the same at least as of version 1.1. So I don't think this issue as been resolved. It could be debated that the mxnet team wants the behavior to be this way and can overrule me, but I still find the behavior misleading and don't think it should be this way.


fix: prevent e2e stdout from triggering build failure on Azure pipeline

Details
I noticed that the e2e tests on the ADO pipeline are failing. I believe this is because when we log the stdout from the e2e tests, the errors collected from the tests are triggering failures in the pipeline.
Example failing build: https://dev.azure.com/accessibility-insights-private/Accessibility Insights (private)/_build/results?buildId=39572&view=logs&j=81b7b1a0-9e2e-58a5-1601-69aaad9b82d6&t=5cf72e78-07c0-5125-1262-b1e05b2475fe
Motivation
Unblock pipeline.
Context

I like printing the stdout with each test for visibility, but I'm not sure how to prevent the collected errors from pulling through. I tried:

[x] Wrapping the stdout in a LogIssue warning logging command: https://learn.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=bash#logissue-log-an-error-or-warning -- This still failed
[ ] LogDetail logging command: https://learn.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=bash#logdetail-create-or-update-a-timeline-record-for-a-task

Pull request checklist

[n/a] Addresses an existing issue: Fixes #0000
[x] Added relevant unit test for your changes. (yarn test)
[x] Verified code coverage for the changes made. Check coverage report at: <rootDir>/test-results/unit/coverage
[x] Ran precheckin (yarn precheckin)
[x] Described how this PR impacts both the ADO extension and the GitHub action

Codecov Report

Merging #1417 (428d6ef) into main (820a1b9) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1417   +/-   ##
=======================================
  Coverage   92.80%   92.80%
=======================================
  Files          46       46
  Lines        1223     1223
  Branches      153      153
=======================================
  Hits         1135     1135
  Misses         88       88

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Show version number

running etl2pcapng.exe /? or just etl2pcapng.exe or any invocation for converting an Etl should tell the current version number 1.10.0
C:\>etl2pcapng.exe
etl2pcapng <infile> <outfile>
Converts a packet capture from etl to pcapng format.

Reason: user should be informed, if his local version is up-to-date (compared to info given on https://github.com/microsoft/etl2pcapng/releases)

other tools like SysInternals tools always show the current version :-)

Addressed by #73


Add hotglue variant of tap-woocommerce

Migrated from GitLab: https://gitlab.com/meltano/hub/-/issues/172
Originally created by @hsyyid on 2021-11-24 18:48:05

Checklist

[x] Fork the MeltanoHub and create a branch, you can name the branch anything you like.
[x] Add a yaml configuration file in the appropriate folder (/_data/taps/ or /_data/targets). The name of the file should match the name of the tap. If there is already one, add a descriptor to the name such as -search.
[x] Add a png logo image in /assets/logos/<taps or targets>. The image name must match the YAML file name and should be a reasonable size (ideally less than 100K).
[x] Create a Merge Request to main from the new branch in your fork and select the template "Add a New Singer Connector".
[x] Tag @tayloramurphy or @pnadolny13 to flag it for review. Or post to the hub channel on Meltano slack.

View 3 previous comments from the original issue on GitLab


Extract common functionality for types with interfaces

This now gives with psalm

ERROR: PropertyNotSetInConstructor - src/MyType.php:11:13 - Property My\Ns\MyType::$interfaces is not defined in constructor of My\Ns\MyType or in any private or final methods called in the constructor (see https://psalm.dev/074)
final class MyType extends ObjectType

This is my current solution which narrows ignoring this error to a directory. Though it ignores also other files in that directory, I don't think there's much more that can be done about it in user land code.
        <!-- graphql-php uses property lazy-loading -->
        <PropertyNotSetInConstructor>
            <errorLevel type="suppress">
                <directory name="src/somepath/Schema/Type" />
            </errorLevel>
        </PropertyNotSetInConstructor>


Adding extensions, moving postCreateCommand to .sh file, and removing dockerfile

So I tested this by running notebooks/PET/reconstruct_measured_data.ipynb. It did work and I made sure to run in VScode selecting the conda python kernel. Not sure if there is away of pre-configuring the kernel, this seems related.
I found that there was an error when running scripts/download_data.sh:  ‘\r’: command not found. So in .devcontainer/postCreateCommand.sh I included the line sed -i 's/\r$//' /workspaces/SIRF-Exercises/scripts/download_data.sh. I am not too sure the reason for this. I am cloning to my native Windows computer and then spinning this up through my WSL? The fix was taken from: here.

Not sure if there is away of pre-configuring the kernel,

no idea, and I don't think this should sit in the devcontainer anyway, as it shouldn't depend on your local installation.

I found that there was an error when running scripts/download_data.sh: ‘\r’: command not found.

See #208. Please add .gitattributes, remove your sed lines, and see what happens. Otherwise this looks good.

Please add .gitattributes, remove your sed lines, and see what happens. Otherwise this looks good.

I'll do this myself

Please add .gitattributes, remove your sed lines, and see what happens. Otherwise this looks good.

I'll do this myself

@KrisThielemans thank you!


Determine what is and is not allowed in response text, e.g. formatting, tables, headings, etc., during ssp assemble

Currently ssp assemble copies all text as the response for each statement part in the human-edited control markdown content.  This allows raw text, markdown, html to be captured in the assembled json file.
As a developer I need to know what the user expects to be able to store in the json, and how rigidly I should enforce a given overall structure - e.g. are they allowed to insert headings of any kind, or just headings below ###, which currently used for each Part where the user enters response prose.
If violation of the content is found, I propose reporting the error and aborting the assemble task.

Isn't this a duplicate of #616

https://pages.nist.gov/OSCAL/reference/datatypes/#markup-data-types <-- Markup multi line is allowed. I'm not sure what our decision would be around html vs markdown.


Inline remaining "apps/" modules (publisher and static)

These modules weren't providing enough value to justify their existence, so we're removing them. This removes an annoying layer of passing variables down and outputs up to and from calling modules.
These were the last two modules in modules/apps, so the entire directory is gone now. I've updated the docs and README so they don't refer to these modules anymore.
Hopefully having these modules gone should make a lot of our future work easier and less confusing.

The Terraform plan shows this refactoring has no effect on the resources created:
https://cd.gds-reliability.engineering/teams/govuk-ci/pipelines/ci-govuk-infrastructure-main/jobs/terraform-plan-govuk-deployment/builds/143
------------------------------------------------------------------------

No changes. Infrastructure is up-to-date.

This means that Terraform did not detect any differences between your

configuration and real physical resources that exist. As a result, no

actions need to be performed.

The Terraform plan shows this refactoring has no effect on the resources created:
https://cd.gds-reliability.engineering/teams/govuk-ci/pipelines/ci-govuk-infrastructure-main/jobs/terraform-plan-govuk-deployment/builds/143
------------------------------------------------------------------------

No changes. Infrastructure is up-to-date.

This means that Terraform did not detect any differences between your

configuration and real physical resources that exist. As a result, no

actions need to be performed.


JVM fails to report back for custom env

I pass an env with the path to my current environment to DaskYarnCluster and I can see the zip file being built and uploaded but then I get an error (below) saying that the JVM fails to report back. Passing the channel conda-forge starts up the environment correctly, but fails to load a parquet file from hdfs because it lacks hdfs3.
My environment should be a superset of the other environment with the same versions of dask and distributed both from the conda-forge channel.
Exception                                 Traceback (most recent call last)
<ipython-input-12-267836867704> in <module>()
     13                                 'rm_port': resource_manager_port})
     14 client = Client(cluster)
---> 15 cluster.start(2, cpus=1, memory=500)
     16
     17 #future = client.submit(lambda x: x + 1, 10)

/nas/isg_prodops_work/jlord/conda/envs/dask/lib/python3.6/site-packages/knit-0.2.2-py3.6.egg/knit/dask_yarn.py in start(self, n_workers, cpus, memory, checks, **kwargs)
    127         app_id = self.knit.start(command, env=self.env,
    128                                  num_containers=n_workers, virtual_cores=cpus,
--> 129                                  memory=memory, checks=checks, **kwargs)
    130         self.app_id = app_id
    131         return app_id

/nas/isg_prodops_work/jlord/conda/envs/dask/lib/python3.6/site-packages/knit-0.2.2-py3.6.egg/knit/core.py in start(self, cmd, num_containers, virtual_cores, memory, env, files, app_name, queue, checks)
    294  - that the cluster is otherwise unhealthy - check the RM and NN logs
    295    (use k.yarn_api.system_logs() to find these on a one-node system
--> 296 """)
    297         master_rpchost = self.client.masterRPCHost()
    298

Exception: The application master JVM process failed to report back. This can mean:
 - that the YARN cluster cannot scheduler adequate resources - check
   k.yarn_api.cluster_metrics() and other diagnostic methods;
 - that the ApplicationMaster crashed - check the application logs, k.logs();
 - that the cluster is otherwise unhealthy - check the RM and NN logs
   (use k.yarn_api.system_logs() to find these on a one-node system

Do you see something like this in the RM logs: Failing this attempt.Diagnostics: java.io.IOException: Mkdirs failed to create /tmp/hadoop-root/nm-local-dir/filecache/12_tmp/test.zip/../../../../../opt/conda/envs/test/etc/conda/deactivate.d
CondaCreator.zip_env uses relpath when writing - perhaps any files outside of the dirctory tree should be ignored?

Also, in one test I just did, I get too-many-symbolic-links on a terminal-like file when zip does os.stat(filename). The zipping method should apparently have some safeguards.

Yes, the containers have no logs, but I see that diagnostic message:
Diagnostics: java.io.IOException: Mkdirs failed to create /hadoop06/yarn/nm/filecache/105_tmp/dask.zip/../../../../../../../conda-meta
Failing this attempt. Failing the application.


EdgeTPU found but not working

Hello,
Giving Viseron a try and hopefuly it can replay Frigate and Blue Iris for me. I have Google Coral USB version connected, visible on host and docker container and also detected:
21. 12. 2022 9:05:29
[2022-12-21 09:05:29] [DEBUG   ] [viseron.components.edgetpu] - Available devices: [{'type': 'usb', 'path': '/sys/bus/usb/devices/4-2'}]

But then I start getting:
21. 12. 2022 9:07:30
[2022-12-21 09:07:30] [ERROR   ] [viseron.components.edgetpu] - Error when trying to load EdgeTPU: Failed to load delegate from libedgetpu.so.1
21. 12. 2022 9:07:30
21. 12. 2022 9:07:30
[2022-12-21 09:07:30] [ERROR   ] [viseron.components] - Domain object_detector for component edgetpu is not ready. Retrying in 40 seconds. Error:

Cameras are all streams from Blue Iris in MJPEG format. My config file looks like:
ffmpeg:
  camera:
    vhod:
      name: Vhod
      host: <IP_ADDRESS>
      port: 81
      path: !secret vhod
      stream_format: mjpeg
      fps: 5
      recorder:
        idle_timeout: 1
        codec: h264

    garaza:
      name: Garaza
      host: <IP_ADDRESS>
      port: 81
      path: !secret garaza
      stream_format: mjpeg
      fps: 5
      recorder:
        idle_timeout: 1
        codec: h264

    nadstresek:
      name: Nadstresek
      host: <IP_ADDRESS>
      port: 81
      path: !secret nadstresek
      stream_format: mjpeg
      fps: 5
      recorder:
        idle_timeout: 1
        codec: h264

    spredaj:
      name: Spredaj
      host: <IP_ADDRESS>
      port: 81
      path: !secret spredaj
      stream_format: mjpeg
      fps: 5
      recorder:
        idle_timeout: 1
        codec: h264

    zadaj:
      name: Zadaj
      host: <IP_ADDRESS>
      port: 81
      path: !secret zadaj
      stream_format: mjpeg
      fps: 5
      recorder:
        idle_timeout: 1
        codec: h264

    balkon:
      name: Balkon
      host: <IP_ADDRESS>
      port: 81
      path: !secret balkon
      stream_format: mjpeg
      fps: 5
      recorder:
        idle_timeout: 1
        codec: h264

#darknet:
#  object_detector:
#    cameras:
#      vhod:
#        fps: 1
#        scan_on_motion_only: false
#        labels:
#          - label: person
#            confidence: 0.75
#            trigger_recorder: true

# You can also use motion detection
mog2:
  motion_detector:
    cameras:
      vhod:
        fps: 1
      garaza:
        fps: 1
      spredaj:
        fps: 1
      zadaj:
        fps: 1
      balkon:
        fps: 1
      nadstresek:
        fps: 1

nvr:
  vhod:
  garaza:
  spredaj:
  zadaj:
  balkon:
  nadstresek:

edgetpu:
  object_detector:
    device: usb
    cameras:
      vhod:
        fps: 1
        labels:
          - label: car
            confidence: 0.8
          - label: person
            confidence: 0.8
      garaza:
        fps: 1
        labels:
          - label: car
            confidence: 0.8
          - label: person
            confidence: 0.8
      spredaj:
        fps: 1
        labels:
          - label: car
            confidence: 0.8
          - label: person
            confidence: 0.8
      zadaj:
        fps: 1
        labels:
          - label: car
            confidence: 0.8
          - label: person
            confidence: 0.8
      nadstresek:
        fps: 1
        labels:
          - label: car
            confidence: 0.8
          - label: person
            confidence: 0.8

#  image_classification:
#    device: usb
#    cameras:
#      vhod:
#      garaza:
#      spredaj:
#      zadaj:
#      nadstresek:
#    labels:
#      - dog

webserver:
#  port: 8888

logger:
  default_level: debug

And my docker compose:
  viseron:
    image: roflcoopter/viseron:latest
    privileged: true
    container_name: viseron
    volumes:
      - "/mnt/usb_3/Viseron/recordings:/recordings"
      - "/mnt/usb_3/Viseron/config:/config"
      - "/etc/localtime:/etc/localtime:ro"
      - type: tmpfs
        target: /tmp/cache
        tmpfs:
          size:<PHONE_NUMBER>
    devices:
      - /dev/bus/usb:/dev/bus/usb
      - /dev/dri/renderD128
    restart: unless-stopped
    ports:
      - "8200:8888"
    deploy:
      resources:
        limits:
          memory: 1024M
    environment:
#      - PUID=1000
#      - PGID=1000
      - TZ=Europe/Ljubljana

GUI opens but it doesn't display cameras. In log I can see:
21. 12. 2022 9:07:36
[2022-12-21 09:07:36] [WARNING ] [tornado.access] - 404 GET /api/v1/camera/nadstresek/snapshot?rand=fhd91&width=568 (<IP_ADDRESS>) 14.90ms
21. 12. 2022 9:07:36
[2022-12-21 09:07:36] [DEBUG   ] [viseron.components.webserver.api] - Routing to CameraAPIHandler.get_snapshot(*args=[], **kwargs={'camera_identifier': b'garaza'})
21. 12. 2022 9:07:36
[2022-12-21 09:07:36] [WARNING ] [tornado.access] - 404 GET /api/v1/camera/garaza/snapshot?rand=5noi2&width=568 (<IP_ADDRESS>) 2.49ms
21. 12. 2022 9:07:36
[2022-12-21 09:07:36] [DEBUG   ] [viseron.components.webserver.api] - Routing to CameraAPIHandler.get_snapshot(*args=[], **kwargs={'camera_identifier': b'spredaj'})
21. 12. 2022 9:07:36
[2022-12-21 09:07:36] [WARNING ] [tornado.access] - 404 GET /api/v1/camera/spredaj/snapshot?rand=o0gfrg&width=568 (<IP_ADDRESS>) 2.98ms

What else can I try to make Google Coral work? This is fist step. Next step will be actualy recording on detection. And MQTT so I can see this events in Home Assistant. But first I need person and car detected using USB Google Coral working :).
Thank you.

Sorry you are having issues, will investigate asap!

You dont happen to have some other container running at the same time using the EdgeTPU?

Good question. Frigate was not running, but it seems Coral is not available anymore. I could see it under lsusb but it did not work on Frigate either anymore. I tried to reset USB from SSH, but it failed and now lsusb doesn't even see it :). When I get home I will replug it back to the server and try again, making sure that Frigate is not running. Will write here what I found.

Great, i just tested on my machine and it works there, so atleast we know the builds are not completely busted


Allow individual custom scripts for custom apps.

Currently automation for an app, defined in the custom app library, can only be implemented in the config\setup.ps1 and config\env.ps1 hook scripts.
That is not very practical, if you want to share the automation of an app, and there is no way to implement a custom extraction inside the custom configuration.

A solution would be to introduce a sub-folder in the config dir, maybe apps, which is searched for custom scripts. That would even allow to override included custom scripts of Bench apps.
In case a custom script is found in config\apps and auto\apps the one in config\apps is executed.