onehic.py error : no such file png/info.txt

Hello, I like very well AutoHiC with 3d-dna, but I want to improve your assembly pipeline using YAHS but I have some problems.
I already try to run onehic  with peanut example to test the pipeline that seems to work well on my computer
 python3.9 onehic.py -hic test/peanut.hic -asy test/peanut.assembly -autohic $PWD  -p models/chr_model.pth -t 40 -out test/onehic_2024_11_18 2>&1 |tee onehic_test.$(date +%F).stdout
So with my data, I am trying to run onehic.py after yahs mapping : mapping from yahs has been done with Arima_pipeline and convert to .hic following onehic protocol, as well the genome converted from fasta to assembly.
tree onehic_Bs_trim/

 onehic_Bs_trim/
├── assembly_after_yahs.assembly
└── mapped_hic_after_yahs.hic
0 directories, 2 files

So I launch the pipeline :
   python3.9 onehic.py -hic onehic_Bs_trim/mapped_hic_after_yahs.hic -asy onehic_Bs_trim/assembly_after_yahs.assembly -autohic /scratch1/genomes/dru/AutoHiC-1.3.3 -p models/chr_model.pth -out /scratch1/genomes/dru/AutoHiC-1.3.3/onehic_Bs_trim/results_onehic 2>&1 |tee onehic_Bs_trim/onehic.$(date +%F).log
after launching this command (following the protocol...), this command stops with an error :

a                    │   )                                                                     │ │
│ │                      )                                                                       │ │
│ │                    )                                                                         │ │
│ │        model_cfg = '//scratch1/genomes/dru/AutoHiC-1.3.3/src/models/cfgs/error_model.py'     │ │
│ │         out_path = 'onehic_Bs_trim/results_onehic'                                           │ │
│ │ pretrained_model = 'models/chr_model.pth'                                                    │ │
│ │            score = 0.9                                                                       │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
FileNotFoundError: [Errno 2] No such file or directory: 'onehic_Bs_trim/results_onehic/png/info.txt'
I obtain
tree onehic_Bs_trim/
onehic_Bs_trim/
├── assembly_after_yahs.assembly
├── mapped_hic_after_yahs.hic
├── onehic.2024-11-22.log
└── results_onehic
    └── png
        ├── 1000
        ├── 10000
        ├── 100000
        ├── 1000000
        ├── 25000
        ├── 250000
        ├── 2500000
        ├── 5000
        ├── 50000
        └── 500000

12 directories, 3 files

Do you have an idea of what's wrong with these data ?

Yes, here is log file :
onehic.2024-11-22.log
I have already tried with error_model.pth that yields exactly the same error... (info.txt not found...
I did not understand the difference between the 2 models....
So now, I create a docker environment to prepare one hic, and prepare environment, and now just run this command :
(onehic) root@7705c39a0ac1:/AutoHiC#
python3.9 onehic.py -hic /home/autohic/onehic_Bs_trim/mapped_hic_after_yahs.hic -asy /home/autohic/onehic_Bs_trim/assembly_after_yahs.assembly -autohic /AutoHiC -p /home/autohic/models/error_model.pth -out /home/autohic/onehic_Bs_trim/results_onehic.$(date +%F) 2>&1 |tee /home/autohic/onehic_Bs_trim/onehic.$(date +%F).log
and :
│ │                      )                                                                       │ │
│ │                    )                                                                         │ │
│ │        model_cfg = '/AutoHiC/src/models/cfgs/error_model.py'                                 │ │
│ │         out_path = '/home/autohic/onehic_Bs_trim/results_onehic.2024-11-23'                  │ │
│ │ pretrained_model = '/home/autohic/models/error_model.pth'                                    │ │
│ │            score = 0.9                                                                       │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
FileNotFoundError: [Errno 2] No such file or directory: '/home/autohic/onehic_Bs_trim/results_onehic.2024-11-23/png/info.txt'
(autohic) root@7705c39a0ac1:/AutoHiC#
`
and here the log file
onehic.2024-11-23.log

maybe -out you should set new dir

Sorry for boring you....
Same and immediate error... as it does not read well assembly file or hic file....
info.txt is not created...
python3.9 onehic.py -hic /home/autohic/onehic_Bs_trim/mapped_hic_after_yahs.hic -asy /home/autohic/onehic_Bs_trim/assembly_after_yahs.assembly -autohic /AutoHiC -p /home/autohic/models/error_model.pth -out /home/autohic/new.results_onehic.$(date +%F) 2>&1 |tee  /home/autohic/new.results_onehic.$(date +%F).log
log file :
new.results_onehic.2024-11-23.log
assembly looks like :
assembly_after_yahs.zip

i think your .asy is not match .hic, maybe you should ref https://github.com/Jwindler/AutoHiC/blob/main/example/other_tools.md to prepare .hic and .asy

I already follow this page for converting to hic and asy, will try other solutions to obtain valid bam file. Thank you. I'll  keep you informed of the issue.

if the .hic file no too big, you can send for me to check.

sorry, too big....

so, I confirm : bam output from yahs / arima pipeline does not fit to Onehic. I use another pipeline,  HapHiC, to onehic, and it works well. Something's worrying : genome.assembly output is not as compact as AutoHiC (284 fragments...), and I have to pass another Autohic to obtain chr level genome... Thanks for your help.


[BUG] ASF Search library now expects WKT string to geo_search

Describe the bug
A clear and concise description of what the bug is.
Following an example notbook, I ran ariaDownload.py -b '37.25 38.1 -122.6 -121.75' --track 42 and got this error:
(mapping) [staniewi@aurora sanAnd]$ ariaDownload.py -b '37.25 38.1 -122.6 -121.75' --track 42
ARIA-tools Version: 1.1.3
Traceback (most recent call last):
  File "/u/aurora-r0/staniewi/miniconda3/envs/mapping/bin/ariaDownload.py", line 7, in <module>
    exec(compile(f.read(), __file__, 'exec'))
  File "/u/aurora-r0/staniewi/repos/ARIA-tools/tools/bin/ariaDownload.py", line 290, in <module>
    Downloader(inps)()
  File "/u/aurora-r0/staniewi/repos/ARIA-tools/tools/bin/ariaDownload.py", line 189, in __call__
    scenes     = self.query_asf()
  File "/u/aurora-r0/staniewi/repos/ARIA-tools/tools/bin/ariaDownload.py", line 277, in query_asf
    scenes = asf.geo_search(**dct_kw)
  File "/u/aurora-r0/staniewi/repos/ARIA-tools/Discovery-asf_search/asf_search/search/geo_search.py", line 60, in geo_search
    setattr(opts, p, data[p])
  File "/u/aurora-r0/staniewi/repos/ARIA-tools/Discovery-asf_search/asf_search/ASFSearchOptions/ASFSearchOptions.py", line 37, in __setattr__
    super().__setattr__(key, validate(key, value))
  File "/u/aurora-r0/staniewi/repos/ARIA-tools/Discovery-asf_search/asf_search/ASFSearchOptions/validator_map.py", line 19, in validate
    return validator_map[key](value)
  File "/u/aurora-r0/staniewi/repos/ARIA-tools/Discovery-asf_search/asf_search/ASFSearchOptions/validators.py", line 184, in parse_wkt
    value = wkt.loads(value)
  File "/u/aurora-r0/staniewi/miniconda3/envs/mapping/lib/python3.10/site-packages/shapely/wkt.py", line 22, in loads
    return geos.WKTReader(geos.lgeos).read(data)
  File "/u/aurora-r0/staniewi/miniconda3/envs/mapping/lib/python3.10/site-packages/shapely/geos.py", line 327, in read
    raise TypeError("Only str is accepted.")
TypeError: Only str is accepted.

The issue is return geos.WKTReader(geos.lgeos).read(data) is getting passed a shapely Polygon (from ARIA Tools). I'm not sure if ASF search used to accept/expect that, but now they don't check for that type of input in their validators.py.
Desktop (please complete the following information):

ARIA-tools git tag:

(mapping) [staniewi@aurora ARIA-tools]$ git show --summary
commit f7a634062b3d30dd56bb405bb8b63e407e531e17
Merge: a56a8e5 092d052
Author: Simran S Sangha<EMAIL_ADDRESS>Date:   Mon Jun 13 18:33:10 2022 -0700

    Merge pull request #306 from aria-tools/notebook_tweaks

    Notebook tweaks

@scottstanie thanks for finding and the fix

@jhkennedy @SpicyGarlicAlbacoreRoll would it be possible to put an ariaDownload run into the testing suite of ASF_search? there are no non-standard dependencies in ariaDownload except for a logging and small function in ariaTools

@bbuzz31 asf_search just a a major release, meaning they indicated they were possibly making incompatible API changes. Fix is either pinning to the previous major version or updating behavior (typically both; quick fix and then long term fix)
In general it's not the responsibility of a library/package to test behavior of down stream usage. It'd be better to put a unit test in ARIA-tools` that would catch an issue like this and regularly run the tests (if development/prs aren't often enough to quickly catch stuff)


Error: relative URL without a base with example configuration

I am trying this library with the example code from readme.md file, anyway, it keeps printing this error at runtime:
ERROR tracing_elastic_apm::apm_client: Error sending batch to APM! error=builder error: relative URL without a base

My Code:
    let apm_layer = tracing_elastic_apm::new_layer(
        "ServiceName".to_string(),
        tracing_elastic_apm::config::Config::new("<IP_ADDRESS>:8200".to_string())
    );

    let subscriber = tracing_subscriber::registry()
        .with(apm_layer);

I am using version 2.1

You need to provide a scheme in the url, otherwise it's impossible to tell which protocol to use, e.g.
    let apm_layer = tracing_elastic_apm::new_layer(
        "ServiceName".to_string(),
        tracing_elastic_apm::config::Config::new("http://<IP_ADDRESS>:8200".to_string())
    );

@krojew
thanks for your help.
Could I propose you add this information to the documentation? The fact that the HTTP(s) protocol is required and used is written nowhere.
I would replace this:
let layer = tracing_elastic_apm::new_layer(
    "ServiceName".to_string(),
    tracing_elastic_apm::Config::new("APM address".to_string())
);

with this one that definitely gives more information about the protocol:
let layer = tracing_elastic_apm::new_layer(
    "ServiceName".to_string(),
    tracing_elastic_apm::Config::new("http://<IP_ADDRESS>:8200".to_string())
);

@ufoscout I was thinking about that, but that in turn would lead to people trying to run it literally (yes, these things happen). I think it would be better to put a simple comment there.


Solve error occurrence in binance request check "Not all sent parameters were read; read '9' parameter(s) but was sent '10'"

It solved the error "ccxt.base.errors.BadRequest: binance {"code":-1104,"msg":"Not all sent parameters were read; read '9' parameter(s) but was sent '10'."}"

Not sure I can merge this one as it just removes data with a comment. It could impact other areas. Probably needs a deeper investigation.

Thank you for the contribution though!


output-safechars in tool mode

According to http://tex.stackexchange.com/q/57743/8569 accented characters and umlauts in the bib file should be written as {\"a} or {\^e},
but when using biber in tool mode with output_safechars I get
{\"{a}} and {\^{e}}.
Is that the intended behavior?

Those comments are correct for bibtex but not for biber. biber can handle the \"{a} case and sorting issues with such macro encodings are irrelevant as everything is converted into UTF-8 internally for sorting. So, yes, that's the intended behaviour at the moment.

Thanks for the answer, even though I still did not understand why the umlauts are encoded this way with two braces.
As you say this is the inteded behavior, I'll just close this issue and live with it.

Probably also intended!?
with the command biber --tool output_encoding=UTF8 references.bib
M{\"u}ller will be converted to M{ü}ller

The reason for all this is because parsing these macros is very tricky and some standards have to be imposed. However, this last thing you mention is fixed in biber 2.1

One more question: Can I completely disable processing of the data? In other words, can I use the --output_align and --output-indent=2 and --output_fieldcase=lower but leave the content and encoding as it is, no matter how broken it is?

Hmm, you mean not touch the TeX macros? Not really, biber needs to parse and convert to UTF-8 in order to sort etc. and outputting exactly what was in the .bib character for character in terms of fields would be very difficult.

OK, then just leave everything as it is.
Thanks for answering all my questions, and of course thanks for biber!

Note to myself: Biber 2.1 fixed the double curly braces not only for UTF-8 output but also for the --output_safechars case


Investigating GUI libraries

Preliminary testing on which GUI library to adopt. Some options are:

PySimpleGUI
Tkinter
PyQt

Picked and developed a POC with PySimpleGUI in #6


Spike: Draft Initial Architecture of Kyma Companion Agents

Description
This spike aims to draft the initial architecture of Kyma Companion agents, focusing on high-priority capabilities, their communication, interaction with external systems, and ensuring flexibility for future experimentation. The outcome will be a documented and discussed architecture ready for implementation.
Timebox
5 working days
Participants
Developer
Product Owner (PO)
Tasks
1. Draft Agents and Communication:

Identify and draft initial ideas for agents necessary to cover high-priority capabilities.
Outline the communication flow between these agents.
Define the data that is being exchanged between those agents(rough concept)

2. Draft Tools for Agents:

Identify and draft the necessary tools for the agents to perform their tasks.

3. Draft Interaction with External Systems:

Define how agents and tools will interact with external systems such as databases and clusters.

4. Draft Tool Structure:

Create an approximate picture of how the tools should be structured and designed.

5. Address Pre-Deployment Issues:

Consider and document strategies for rate limiting, misuse protection, and monitoring.

6. Ensure Flexibility:

Design the architecture to be flexible and allow for future experimentation and changes.

7. Document Proposed Architecture:

Compile all drafts and designs into a comprehensive architecture document.

8. Team Discussion and Feedback:

Present the proposed architecture to the team.
Gather feedback and make necessary adjustments based on team discussions.

Acceptance Criteria

[ ]  Initial ideas for agents and their communication flow are drafted.
[ ]  Tools necessary for the agents are identified and drafted.
[ ]  Interaction of agents and tools with external systems is defined.
[ ]  An approximate picture of the tools' structure is created.
[ ]  Pre-deployment issues like rate limiting, misuse protection, and monitoring are addressed.
[ ]  The architecture is designed to be flexible and allow for experimentation.
[ ]  The proposed architecture is documented comprehensively.
[ ]  The architecture is discussed with the team, and feedback is incorporated.
[ ]  The team agrees on the proposed architecture, with adjustments made as necessary.

Agents Architecture

[ ] Initial Rough Draft

[ ] What agents should exist?
[ ] What is each agents responsibility?
[ ] What tool does each agent have?
[ ] What is the rough ability of each tool?

[ ] Overall information flow is documented with a graph

Supervisor Agent

[ ] Draft an initial process flow for the Supervisor.
[ ] What information does the Supervisor pass?
[ ] Does only the Supervisor have access to conversation history from RedisDB?
[ ] How does the Supervisor come up with a plan? Up front or flexible?

Kyma Agent

[ ] Detailed process flow
[ ] Agents communication flow:

[ ] What information is passed?
[ ] What resource context is needed?
[ ] Do Agents use ReAct vs Reflection?
[ ] Bigger picture of nodes and conditional edges in the communication flow
[ ] How can this be achieved in the future when multi-tab, switching between resource context, will be introduced?

Kubernetes Agent

[ ] Detailed process flow
[ ] Agents communication flow:

[ ] What information is passed?
[ ] What resource context is needed?
[ ] Do Agents use ReAct vs Reflection?
[ ] Bigger picture of nodes and conditional edges in the communication flow
[ ] How can this be achieved in the future when multi-tab, switching between resource context, will be introduced?

RAG

[ ] What is the process flow?
[ ] What is the information flow?
[ ] Where do you need to pay attention on prompting when implementing?
[ ] Graph to show the process flow

Resource Retrieval Tool

[ ] What is the process flow?
[ ] What is the information flow?
[ ] Where do you need to pay attention on prompting when implementing?
[ ] Graph to show the process flow
[ ] How are duplicates removed?

Response Conversion Tool

[ ] What is the process flow?
[ ] What is the information flow?
[ ] Where do you need to pay attention on prompting when implementing?
[ ] Graph to show the process flow
[ ] How are duplicates removed?

Pre-Deployment Issues

[ ]  Pre-deployment issues like rate limiting, misuse protection, and monitoring are addressed.

Team Agreement

[ ]  The architecture is discussed with the team, and feedback is incorporated.
[ ]  The team agrees on the proposed architecture, with adjustments made as necessary.


Secret clientSecret

Not sure about writing your Github clientSecret in auth/github.js file.

You right. 4af0cc0ec8dd44f82003d8b4fe698bec50a1e558


Season 4 alternate shows

Same issue as with other seasons, just needs correcting.

Can you upload the Player.log / Player-prev.log file from AppData LocalLow Mediatonic FallGuys_client ?
Need to make sure of the names and I can't test squads myself

Player.log
Player-prev.log
I think that's right

Dang, it must have been in one of your earlier sessions.
I think I can get the info from the data.db file though if you can upload that

Well I think I figured it out regardless. Try 1.116

Yeah the S4 maps showed up before S4 for some reason. Also you fixed it regardless, thanks.


first build

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_95a9vutib2/clone/recipe/meta.yaml:23: remove_python_pinning: On arch specific packages, python deps should not be constrained.
ERROR: /tmp/abs_95a9vutib2/clone/recipe/meta.yaml:24: missing_wheel: For pypi packages, wheel should be present in the host section
ERROR: /tmp/abs_95a9vutib2/clone/recipe/meta.yaml:32: missing_python: For pypi packages, python should be present in the host and run sections
ERROR: /tmp/abs_95a9vutib2/clone/recipe/meta.yaml:69: incorrect_license: The recipe's about/license key is not an SPDX compliant license or license exception, closest match: Apache-2.0
WARNING: /tmp/abs_95a9vutib2/clone/recipe/meta.yaml:74: missing_doc_source_url: The recipe is missing a doc_source_url
Errors were found

Linter check found the following problems:
The following problems have been found:
WARNING: /tmp/abs_0bgkkrtydd/clone/recipe/meta.yaml:77: missing_doc_source_url: The recipe is missing a doc_source_url
Warnings were found

Linter check found the following problems:
The following problems have been found:
WARNING: /tmp/abs_85kw8zgvvt/clone/recipe/meta.yaml:77: missing_doc_source_url: The recipe is missing a doc_source_url
Warnings were found


[BUG] nodes/vectorstores/Chroma/core.ts(3,15): error TS2459: Module '"chromadb"' declares 'Collection' locally, but it is not exported.

Describe the bug
When attempting to build or run Flowise on Amazon Linux using pnpm build or pnpm dev, the process fails with TypeScript errors and lifecycle script failures. The same setup works perfectly on macOS. The TypeScript error indicates that the chromadb module declares Collection locally but does not export it. Additionally, the script in the server package fails with exit code 1 during startup.
To Reproduce
Steps to reproduce the behavior:
Clone the Flowise repository to an Amazon Linux environment.
Install dependencies using pnpm install.
Run pnpm dev or pnpm build.
Observe the following errors:
TypeScript error: nodes/vectorstores/Chroma/core.ts(3,15): error TS2459: Module '"chromadb"' declares 'Collection' locally, but it is not exported.
Lifecycle script start:default failed with exit code 1.
Expected behavior
The build and development processes (pnpm build and pnpm dev) should complete successfully without any TypeScript errors or lifecycle script failures, just as they do in a macOS environment.
Screenshots

Flow
N/A
Setup
Installation: pnpm install followed by pnpm dev
Flowise Version: 2.1.3
OS: Amazon Linux 2 (EC2 instance)
Node Version: 18.15.0
Browser: N/A (backend issue)
Additional context
The TypeScript build works on macOS but fails on Amazon Linux, suggesting a potential environment or dependency compatibility issue. Possible causes could include differences in Node.js versions, environment variables, architecture, or system dependencies. The chromadb module appears to have inconsistencies in its export structure, leading to TypeScript errors during the build. Additionally, the script in the server package (./run start) might have permission issues or incompatible dependencies in the Amazon Linux environment.

I found the same issue with Windows platform only, Mac works always well, are you the same?

My issue got fixed after I reclone it in a brand new folder. Try this.


RE 3 Crash Closing Game

Version
3.0.7 (0c5a5f2)
Seed
R730-XPUL-XMKHH3CZ94000NVPEVP1ZZZZZZZZZZZZ00Z
Scenario
RE 3 (Jill)
Player Character
Kendo
What happened?
Going for the Y Corridor on streets -> 105 - Bar Jack Alley -> Cutscene with Brad running to bar Crashed on the opening door load. Brad was randomized as Leon(Re4) skin. Don't know if it was enemies or skins that crashed

I was not able to reproduce this. According to my logs, no one was changed to Leon (RE4). Did you edit your biorand data in any way?


Security certificate error on pumpdog.me

After entering a valid Webfinger, Puma 0.7 fails to display the embedded browser authorisation screen but works fine against another Pump instance, fmrl.me.

Pumpdog.me is down at the moment, I'll test again when it's up.


Names of the datasets

Hi team,
Can I please clarify the dataset names you use in your API. Do I understand it properly that:

Public data: this is the train data that can be used to train a model
Input data: the inputs (texts / images / etc.) that are used in the current phase, which need to be predicted
Reference data: the labels corresponding to the input data

If the above "dictionary" is true, I also wonder, how can I set to share both Public data and Input data with the users in competition.yaml? Thanks!

Public data: training data that can be released publicly so that participants can use it in whatever way they want
Input data: combination of training data (data and labels) and test data (only data, no labels)
reference data: test labels
People can design competitions that accept code submissions or result submissions or both. Usually for competitions with just result submission they distribute the whole input data and the participants submit test set predictions as result submission. Note that in this case you can call input data as public data.
In codabench, by design input data is for internal use so you can only share public data or you can just make a combined zip of train + test data and distribute it as public data

@Aktsvigun @ihsaan-ullah

In codabench, by design input data is for internal use so you can only share public data or you can just make a combined zip of train + test data and distribute it as public data

I believe that:

By default public data is available to participant
By default reference data is NOT available to participant (being the ground truth)
Input data can be made available using the make_data_available: True setting

Not sure if this "Files available" feature is documented in the Wiki


libobjc2 on risc-v

hi
is there any work on getting libobjc2 working on risc-v?
i tried to build libobjc2 on riscv64 linux and couldnt get it compiled because it seems most of the primitive functions require assembly implementations, of which risc-v seems missing...
if there is no way to compile without assembly, then those parts would need to be implemented... is anyone already working on those?
if help is needed id by happy to collaborate!
please let me know, and thanks in advance ^^

I'm not actively working on it, but I'm happy to review a PR.  You will need to modify three places:

block_trampolines.S needs to have a pair of functions (one for the normal calling convention, one for the structure-on-the-stack-allocated-by-the-caller return [sret] calling convention).  This needs to move the first argument (the object) over the second (the selector in the caller) and load the block from the page before.
objc_msgSend.riscv.S (objc_msgSend.mips.S is probably the closest.  This is fairly well commented, so you can hopefully understand what it needs to do quite easily, feel free to ping me if it isn't.
objc_msgSend.S needs to be modified to include the correct version for RISC-V.

The message-send logic needs to:

Check if the receiver is 0, if so return nil (may need to be different for integer / FP returns, but I believe RISC-V can just return integer and floating point, but does need to zero all return registers).  For the structure-return variants, no extra logic is necessary, the compiler zeroes the structure.
Check if the low bit (32-bit) or 3 bits (64-bit) are zero.  If not, then find the class from the SmallObjectClasses array (64-bit) or SmallIntClass (32-bit) global, otherwise load it from the isa pointer.
Load the dtable pointer from the class, then follow the chain of these until you reach the method.
If this is non-null, jump to it.
If this is null, we are on a slow path:

Spill all argument registers (we can't tell which are in use, so we need to spill any register that can be an argument register, including any vector ones).
Call the slow-path forwarding function slowMsgLookup.  This takes the address of the receiver as an argument because it can rewrite the receiver (e.g. for -forwardingTargetForSelector).
Restore all arguments.  Typically, if you spill the receiver as an argument you can pass the on-stack spill address in step 2 here and not need any special-case logic for restoring it.
Jump to the pointer that it returns.

@davidchisnall
thanks for the super detailed reply, especially for the message-send logic
ill try to take a look at what i can do over the weekend, and if i have any progress or issue ill come back here if its ok with you (ill try not to bother with anything trivial)
thank you again!

See https://github.com/gnustep/libobjc2/pull/261

See https://github.com/gnustep/libobjc2/pull/261


LV doesn't be deleted but pv has beed deleted

There are 3 nodes in my k8s cluster with v0.14.6 Hwameistor like this:
root@pw-k8s03:~# kubectl get node -o wide
NAME       STATUS   ROLES                                    AGE    VERSION          INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
pw-k8s01   Ready    control-plane,controlplane,etcd,master   203d   v1.28.3+rke2r2   <IP_ADDRESS>   <none>        Ubuntu 22.04.1 LTS   5.15.0-117-generic   containerd://1.7.7-k3s1
pw-k8s02   Ready    control-plane,controlplane,etcd,master   200d   v1.28.3+rke2r2   <IP_ADDRESS>   <none>        Ubuntu 22.04.1 LTS   5.15.0-43-generic    containerd://1.7.7-k3s1
pw-k8s03   Ready    control-plane,controlplane,etcd,master   200d   v1.28.3+rke2r2   <IP_ADDRESS>   <none>        Ubuntu 22.04.1 LTS   5.15.0-43-generic    containerd://1.7.7-k3s1

I deleted a pvc, then I noticed that pv has been deleted. But as you can see:
root@pw-k8s03:~# kubectl get pv  pvc-eea7fed7-fff1-4304-b4ce-fa1b06e4c942
Error from server (NotFound): persistentvolumes "pvc-eea7fed7-fff1-4304-b4ce-fa1b06e4c942" not found
root@pw-k8s03:~# kubectl get lv  pvc-eea7fed7-fff1-4304-b4ce-fa1b06e4c942
NAME                                       POOL                   REPLICAS   CAPACITY     USED   STATE   PUBLISHED   AGE
pvc-eea7fed7-fff1-4304-b4ce-fa1b06e4c942   LocalStorage_PoolHDD   1<PHONE_NUMBER>          Ready               5m59s

LV pvc-eea7fed7-fff1-4304-b4ce-fa1b06e4c942 didn't be deleted, and if I delete this lv, it will be recreated.
apiVersion: hwameistor.io/v1alpha1
kind: LocalVolume
metadata:
  creationTimestamp: "2024-08-16T10:40:21Z"
  generation: 1
  name: pvc-eea7fed7-fff1-4304-b4ce-fa1b06e4c942
  resourceVersion: "215477788"
  uid: b5baa30d-473a-4194-8fa6-355f5e8e7797
spec:
  accessibility:
    nodes:
    - pw-k8s03
    regions:
    - default
    zones:
    - default
  config:
    convertible: false
    initialized: false
    readyToInitialize: false
    replicas:
    - hostname: pw-k8s03
      id: 1
      ip: <IP_ADDRESS>
      primary: true
    requiredCapacityBytes:<PHONE_NUMBER>
    resourceID: -1
    version: 1
    volumeName: pvc-eea7fed7-fff1-4304-b4ce-fa1b06e4c942
  convertible: false
  delete: false
  poolName: LocalStorage_PoolHDD
  pvcName: pw-pvc4
  pvcNamespace: default
  replicaNumber: 1
  requiredCapacityBytes:<PHONE_NUMBER>
  volumeQoS: {}
  volumegroup: 5f0d8f60-ac85-4f16-b1f7-5b4ac2e7919c
status:
  allocatedCapacityBytes:<PHONE_NUMBER>
  rawblock: false
  replicas:
  - pvc-eea7fed7-fff1-4304-b4ce-fa1b06e4c942-vdxf6d
  state: Ready

What's the value of lv.spec.delete? It is possible that the CSI Provisioner did not call CSI Driver (hwameistor) before the PVC/PV was deleted.
This can be proved by looking at the delete value as mentioned above.

What's the value of lv.spec.delete when PV was deleted? It is possible that the CSI Provisioner did not call CSI Driver (hwameistor) before the PVC/PV was deleted.

I deleted my pvc during hwameistor's upgradation. So maybe because of this, CSI Driver didn't be called.

What's the value of lv.spec.delete when PV was deleted? It is possible that the CSI Provisioner did not call CSI Driver (hwameistor) before the PVC/PV was deleted.

I deleted my pvc during hwameistor's upgradation. So maybe because of this, CSI Driver didn't be called.

Got it. BTW, LocalVolume will be automaticlly re-created if deleted by kubectl delete lv.  LocalVolume in HwameiStor can be deleted manually by set lv.spec.delete as True.

For now, we haven't a mechiem to GC volume data, volume can only be deleted by callback interface DeleteVolume triggered by CSI Provisioner.

I'm still confused. Even throuth CSI Provisioner did not call CSI Driver, PV should not be deleted but keep DeletionTimestamp,  and wait to next reconcile loop.

I'm still confused. Even throuth CSI Provisioner did not call CSI Driver, PV should not be deleted but keep DeletionTimestamp, and wait to next reconcile loop.我还是很困惑。即使通过 CSI Provisioner 没有调用 CSI Driver，PV 也不应该被删除，而应该保留 DeletionTimestamp，并等待下一个协调循环。

Yes, this should be a problem but may be figured out by looking CSI Provisioner container for more evidence - this object(PV) is managed by it.

https://github.com/hwameistor/hwameistor/pull/1569

Same of this, need GC +1

A potential cause of volume leakage:
https://kubernetes.io/blog/2021/12/15/kubernetes-1-23-prevent-persistentvolume-leaks-when-deleting-out-of-order/

@SSmallMonster Hi, I just found a way to reproduce this issue.
First, prepare a volume snapshot like this:
root@pw-k8s01:~/pangwei/yaml# kubectl get volumesnapshots.snapshot.storage.k8s.io
NAME          READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS                     SNAPSHOTCONTENT                                    CREATIONTIME   AGE
pw-snapshot   true         pw-pvc                              5Gi           hwameistor-storage-lvm-snapshot   snapcontent-cfd8c2da-d6c7-4f45-8574-248a2ba61ce3   3h1m           3h1m

Then, try to create a new pvc using the snapshot:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: restore-pvc
spec:
  storageClassName: hwameistor-storage-lvm-hdd
  dataSource:
    name: pw-snapshot
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi
---
apiVersion: v1
kind: Pod
metadata:
  name: pw-snapshot
spec:
  containers:
  - name: busybox
    image: busybox:1.31.1
    command:
      - sleep
      - "360000000"
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - name: temp-pvc
      mountPath: /mypath
  terminationGracePeriodSeconds: 0
  volumes:
  - name: temp-pvc
    persistentVolumeClaim:
      claimName: restore-pvc

root@pw-k8s01:~/pangwei/yaml# kubectl apply -f snapshot-restore.yaml
persistentvolumeclaim/restore-pvc created
pod/pw-snapshot created

Then, wait for about 15s, delete this pvc:
root@pw-k8s01:~/pangwei/yaml# kubectl delete -f snapshot-restore.yaml
persistentvolumeclaim "restore-pvc" deleted
pod "pw-snapshot" deleted

As you can see, localvolumesnapshotrestores.hwameistor.io is still working
root@pw-k8s01:~/pangwei/yaml# kubectl get localvolumesnapshotrestores.hwameistor.io
NAME                                                   TARGETVOLUME                               SOURCESNAPSHOT                                     STATE        AGE
snaprestore-pvc-55a02a19-89be-46ec-b61f-b366ac4dec57   pvc-55a02a19-89be-46ec-b61f-b366ac4dec57   snapcontent-cfd8c2da-d6c7-4f45-8574-248a2ba61ce3   InProgress   33s

snaprestore-pvc-55a02a19-89be-46ec-b61f-b366ac4dec57   pvc-55a02a19-89be-46ec-b61f-b366ac4dec57   snapcontent-cfd8c2da-d6c7-4f45-8574-248a2ba61ce3   Completed    52s
snaprestore-pvc-55a02a19-89be-46ec-b61f-b366ac4dec57   pvc-55a02a19-89be-46ec-b61f-b366ac4dec57   snapcontent-cfd8c2da-d6c7-4f45-8574-248a2ba61ce3   Completed    52s

Last, you can see that LV is still there even though pv is not found:
root@pw-k8s01:~# kubectl get lv pvc-55a02a19-89be-46ec-b61f-b366ac4dec57
NAME                                       POOL                   REPLICAS   CAPACITY     USED   STATE   PUBLISHED   AGE
pvc-55a02a19-89be-46ec-b61f-b366ac4dec57   LocalStorage_PoolHDD   1<PHONE_NUMBER>          Ready               20m
root@pw-k8s01:~#
root@pw-k8s01:~# kubectl get pv pvc-55a02a19-89be-46ec-b61f-b366ac4dec57
Error from server (NotFound): persistentvolumes "pvc-55a02a19-89be-46ec-b61f-b366ac4dec57" not found

And this LV will keep existing if I don't delete it manually!

This issue may need to be reopened.


Add a normalization slider to the PHOENIX dashboard

The Sonora Dashboard got a normalization slider but somehow the PHOENIX dashboard didn't get one.  Let's add one, it should pretty much be a copy-and-paste from Sonora to Phoenix.

By the way, we have previously contemplated an automatic "snap-to" mode, where the model gets normalized to the same, say, median as the data.  That solution could be inadequate for all use cases, and so a slider may be preferable anyways.


add [!NOTE] to help the user not click create

clicking create too soon, breaks this whole sample, so I'm just adding a little note. I watched two people in a row make this same mistake. Thinking that creating the web app is a single step, but in fact it's only step 1 of 2.

@scottcate,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

@scottcate : Thanks for your contribution to the Azure documentation! The author, @cephalin, has been notified to review your proposed change.

@scottcate Good change. Thanks! #sign-off


Broken: az aks pod-identity add for extension aks-preview

Related command

az aks pod-identity add
Command reference: https://learn.microsoft.com/en-us/cli/azure/aks/pod-identity?view=azure-cli-latest#az-aks-pod-identity-add
Extension name (the extension in question)
aks-preview
Description of issue (in as much detail as possible)
I was hoping to create pod identities for an aks cluster I was working with.
I was following the article here: https://learn.microsoft.com/en-us/azure/aks/use-azure-ad-pod-identity#create-a-pod-identity
Within this article, there's a step where you need to create pod-identities using the command az aks pod-identity add.
This command seems to be failing for the latest versions combination of azure-cli and aks-preview extension.
Version combination at the latest cli version as of today:
PS> az --version
azure-cli                         2.47.0

core                              2.47.0
telemetry                          1.0.8

Extensions:
aks-preview                      0.5.136

Error observed at this combination:
PS> az aks pod-identity add --resource-group $CLUSTER_RESOURCE_GROUP --cluster-name $AKS_CLUSTER --namespace $POD_IDENTITY_NAMESPACE  --name $POD_IDENTITY_NAME --identity-resource-id $IDENTITY_RESOURCE_ID
'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[###                                 ]  10.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[#######                             ]  20.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[##########                          ]  30.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[##############                      ]  40.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[##################                  ]  50.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[#####################               ]  60.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[#########################           ]  70.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[############################        ]  80.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Waiting for AAD role to propagate[################################    ]  90.0000%'RoleAssignmentsOperations' object has no attribute 'config'
Could not grant Managed Identity Operator permission for cluster

Version combination that works:
PS> az --version
azure-cli                         2.27.2 *

core                              2.27.2 *
telemetry                          1.0.6

Extensions:
aks-preview                       0.5.44

Success message observed at this combination:
PS> az aks pod-identity add --resource-group $CLUSTER_RESOURCE_GROUP --cluster-name $AKS_CLUSTER --namespace $POD_IDENTITY_NAMESPACE  --name $POD_IDENTITY_NAME --identity-resource-id $IDENTITY_RESOURCE_ID
AAD role propagation done[############################################]  100.0000%
Wait 30 seconds for identity role assignment propagation.
{
  "aadProfile": null,
  "addonProfiles": {
    "azurepolicy": {
      "config": null,
      "enabled": true,
....
}

@tomarrajesh Can you provide your OS information. Also, please run the command with -debug parameter and provide the output logs for further investigation. Thanks

@tomarrajesh I am not able to reproduce this.  I have tried multiple times but cmdlet worked fine with CLI version 2.47 -

@tomarrajesh Please let us know if you are still having problems.

@tomarrajesh We will now proceed to close this thread as we haven't heard back. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Handle passthru of SpanContexts

Thinking of the Istio use case, where we want to turn off creation of Spans within the app, but still propagate SpanContexts from inbound to outbound requests.
Need to figure out how we want to support this.

A couple of ideas that were discussed on the call:

Provide a SpanContext in-process propagation mechanism - however OT currently only provides a propagation mechanism around Spans, so either this would be something MicroProfile specific (and therefore may not integrate well with other OT framework instrumentation) or this would need to be raised with the OT community to be addressed there.

Other approach is to not necessarily "turn off" creation of Spans, but deal with the fact that the proxy will be handling creation of the "client" and "server" spans on behalf of the service (which is valid as it represents the new outer boundary for the service), but still create spans when receiving or sending requests - but just classify them as internal spans. This has the benefit of recording the time difference between the requests being handled by the proxy vs the service, although it does create an extract span per request handled by the proxy+service.


A lot of unresolved imports

Is there an existing issue for this?

[X] I have searched the existing issues.

Is this issue related to iced?

[X] My hardware is compatible and my graphics drivers are up-to-date.

What happened?
I copied the styling code from example folder but I got a lot of unresolved imports

this is the result rust analyzer gives me and if I run cargo run --release it shows: the log below
What is the expected behavior?
It should work because I copied it from example also it works if I just clone iced repository and run cargo run --package styling
Version
0.4
Operative System
Linux
Do you have any log output?
error: column! takes no arguments
  --> src/main.rs:54:13
   |
54 |             column![text("Choose a theme:")].spacing(10),
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: this error originates in the macro `column` (in Nightly builds, run with -Z macro-backtrace for more info)

error: column! takes no arguments
  --> src/main.rs:82:13
   |
82 | /             column![
83 | |                 "Scroll me!",
84 | |                 vertical_space(Length::Units(800)),
85 | |                 "You did it!"
86 | |             ]
   | |_____________^
   |
   = note: this error originates in the macro `column` (in Nightly builds, run with -Z macro-backtrace for more info)

error: column! takes no arguments
   --> src/main.rs:101:23
    |
101 |           let content = column![
    |  _______________________^
102 | |             choose_theme,
103 | |             horizontal_rule(38),
104 | |             row![text_input, button].spacing(10),
...   |
114 | |             .align_items(Alignment::Center),
115 | |         ]
    | |_________^
    |
    = note: this error originates in the macro `column` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0432]: unresolved imports `iced::widget::column`, `iced::widget::horizontal_rule`, `iced::widget::row`, `iced::widget::text`, `iced::widget::vertical_rule`, `iced::widget::vertical_space`
 --> src/main.rs:2:23
  |
2 |     button, checkbox, column, container, horizontal_rule, progress_bar, radio, row, scrollable,
  |                       ^^^^^^             ^^^^^^^^^^^^^^^                       ^^^ no `row` in `widget`
  |                       |                  |
  |                       |                  no `horizontal_rule` in `widget`
  |                       no `column` in `widget`
3 |     slider, text, text_input, toggler, vertical_rule, vertical_space,
  |             ^^^^                       ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^ no `vertical_space` in `widget`
  |             |                          |
  |             no `text` in `widget`      no `vertical_rule` in `widget`
  |
help: a similar name exists in the module
  |
2 |     button, checkbox, Column, container, horizontal_rule, progress_bar, radio, row, scrollable,
  |                       ~~~~~~
help: a similar name exists in the module
  |
2 |     button, checkbox, column, container, horizontal_rule, progress_bar, radio, Row, scrollable,
  |                                                                                ~~~
help: a similar name exists in the module
  |
3 |     slider, Text, text_input, toggler, vertical_rule, vertical_space,
  |             ~~~~

error[E0432]: unresolved import `iced::Theme`
 --> src/main.rs:5:59
  |
5 | use iced::{Alignment, Element, Length, Sandbox, Settings, Theme};
  |                                                           ^^^^^ no `Theme` in the root

error[E0407]: method `theme` is not a member of trait `Sandbox`
   --> src/main.rs:128:5
    |
128 | /     fn theme(&self) -> Theme {
129 | |         self.theme
130 | |     }
    | |_____^ not a member of trait `Sandbox`

error[E0423]: expected function, found module `radio`
  --> src/main.rs:56:29
   |
56 |                 column.push(radio(
   |                             ^^^^^ not a function

error[E0423]: expected function, found module `text_input`
  --> src/main.rs:65:26
   |
65 |         let text_input = text_input(
   |                          ^^^^^^^^^^ not a function

error[E0423]: expected function, found module `button`
  --> src/main.rs:73:22
   |
73 |         let button = button("Submit")
   |                      ^^^^^^ not a function

error[E0423]: expected function, found module `slider`
  --> src/main.rs:77:22
   |
77 |         let slider = slider(0.0..=100.0, self.slider_value, Message::SliderChanged);
   |                      ^^^^^^ not a function

error[E0423]: expected function, found module `progress_bar`
  --> src/main.rs:79:28
   |
79 |         let progress_bar = progress_bar(0.0..=100.0, self.slider_value);
   |                            ^^^^^^^^^^^^ not a function

error[E0423]: expected function, found module `scrollable`
  --> src/main.rs:81:26
   |
81 |         let scrollable = scrollable(
   |                          ^^^^^^^^^^ not a function

error[E0423]: expected function, found module `checkbox`
  --> src/main.rs:91:24
   |
91 |         let checkbox = checkbox("Check me!", self.checkbox_value, Message::CheckboxToggled);
   |                        ^^^^^^^^ not a function

error[E0423]: expected function, found module `toggler`
  --> src/main.rs:93:23
   |
93 |         let toggler = toggler(
   |                       ^^^^^^^ not a function

error[E0423]: expected function, found module `container`
   --> src/main.rs:120:9
    |
120 |         container(content)
    |         ^^^^^^^^^ not a function

warning: unused import: `Alignment`
 --> src/main.rs:5:12
  |
5 | use iced::{Alignment, Element, Length, Sandbox, Settings, Theme};
  |            ^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error[E0053]: method `view` has an incompatible type for trait
  --> src/main.rs:52:13
   |
52 |     fn view(&self) -> Element<Message> {
   |             ^^^^^
   |             |
   |             types differ in mutability
   |             help: change the self-receiver type to match the trait: `self: &mut Styling`
   |
   = note: expected fn pointer `fn(&mut Styling) -> iced_native::element::Element<'_, _, _>`
              found fn pointer `fn(&Styling) -> iced_native::element::Element<'_, _, _>`

error[E0283]: type annotations needed
  --> src/main.rs:13:5
   |
11 | #[derive(Default)]
   |          ------- in this derive macro expansion
12 | struct Styling {
13 |     theme: Theme,
   |     ^^^^^^^^^^^^ cannot infer type
   |
   = note: cannot satisfy `_: std::default::Default`
   = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0599]: no method named `spacing` found for type `u32` in the current scope
  --> src/main.rs:54:46
   |
54 |             column![text("Choose a theme:")].spacing(10),
   |                                              ^^^^^^^ method not found in `u32`

error[E0599]: no method named `width` found for type `u32` in the current scope
  --> src/main.rs:87:14
   |
87 |             .width(Length::Fill),
   |              ^^^^^ method not found in `u32`

error[E0599]: no method named `spacing` found for type `u32` in the current scope
   --> src/main.rs:116:10
    |
116 |         .spacing(20)
    |          ^^^^^^^ method not found in `u32`

The default is for iced to use iced_wgpu, which does not have all of the macros, etc. that the examples are using (which are in iced_native).
I had to set default-features = false in my cargo.toml to get around this. But then you are not using the wgpu code, of course.

I even added all of the features but didn't work

master has breaking changes. If you are using the latest release on crates.io, you should browse the 0.4 branch.


audit: check Accelerate linkage for core formulae

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew tests with your changes locally?

In concert with https://github.com/Homebrew/homebrew-core/pull/39809, https://github.com/Homebrew/homebrew-core/issues/39226, and https://github.com/Homebrew/homebrew-core/issues/37898#issuecomment-472779968; this new audit will check core tap formulae for undesired linkage against system Accelerate.
No new tests written since none exist for this file.

Nice! N.B., however, that veclibfort.rb, by design, will always link to Accelerate and should be an exception to this rule.
Should I change this to make an exception for veclibfort? Or should we end up removing veclibfort? (I do not favor removal, personally.)

Should I change this to make an exception for veclibfort?

Yes, please

Good point. I think adding an exception is probably the best idea. Want to file a follow up? I can do it later this week as well.

@MikeMcQuaid I think this is actually a bit too strict. There are cases in which users may want to link accelerate, as it provides more than just linear algebra.
https://developer.apple.com/documentation/accelerate
I think instead we should check for linkage against veclibfort and lapack. (Veclibfort is specifically for BLAS/LAPACK provided through Accelerate, and lapack reference implementation is old and minimally maintained and outdated.)
I can open a new PR with this. I hit an instance in core where a package links to Accelerate, seemingly for reasons other than linear algebra: https://github.com/Homebrew/homebrew-core/pull/39418

I'm tempted to add -DBLA_VENDOR=OpenBLAS to the std_cmake_flags which will prevent CMake formula using the included standard FindBLAS and FindLAPACK intrinsic modules from picking up Accelerate. The only issue I foresee arising may be if they want, e.g., scalapack over OpenBLAS.

In fact, both tests could apply on linux too. 1) veclibfort should not be ported to linux (hopefully this is already true) and 2) lapack is outdated/crusty on linux also.


Module can't be imported on Azure Functions using Linux runtime.

When trying to import the module on an Azure Function using Linux runtime there is a dll loading error.
Runtime is PowerShell ~4, host is Linux. I have not tried on other runtimes.

"PSVersion": {
"Major": 7,
"Minor": 2,
"Patch": 13,
"PreReleaseLabel": null,
"BuildLabel": null
},

Solved in 2.2.5 by #35


Could not resolve: com.firebase:geofire-java:3.0.0

searching online shows https://mvnrepository.com/artifact/com.firebase/geofire-java/2.3.0 is the latest version of geofire-java. Is there something wrong here?

@wakandan recent builds of geofire are hosted on jCenter rather than Maven Central.
The URL is https://jcenter.bintray.com/ so https://jcenter.bintray.com/com/firebase/geofire-java/


Get data back or modify data in an Action

Current behavior:
When a condition evaluates to true the assigned action func is triggered and does something with the map of tuples but the function signature does not allow for data to be returned or the tuple to be modified in any way.
Expected behavior:
If data is passed into the rules engine could we get data that is modified back to the caller
What is the motivation / use case for changing the behavior?
Ex. Given two services:  service1 and EngineService:

service1 passes data to EngineService for processing.
EngineService has a rule: "if x == 5; then set y = 10;"
how can we get 'y' back to service1 from the action

Additional information you deem important (e.g. I need this tomorrow):

You can set service1 via the rule context, which is available in the action, and pass 'y' back to service1 that way.

@balamg would you have an example of that, assuming that the two services are interacting via REST or gRPC?

I was assuming the two services to be part of the same application but looks like that not true. So then, it would depend on your setup. Is your rules service a Flogo app (with a REST trigger) or are you custom building your your rules service, where you have control over the rules service API?
If it's the former, there is no way to synchronously get back the result as part of the rest call that asserts the event. In this case, the calling service must expose an endpoint to collect the results, that can be invoked from the action callback. But that would be asynchronous. On the other hand if its a custom application and you have control over the rules API, you could set your HTTP request context object in the context.Context and extract it back  in the action callback to response back to your request. Hope this helps!

Yep!  this works, ty


JSON parser/generator improvements

Since we're using it in production, I'd like to see a few improvements to the text/json package:

It, and HashBag, should not segfault when we get() a key that doesn't exist, it should merely throw an exception or return null.

We should have an easy way to travel down HashBags, ie. something like bag path("category/38/subscribers/4/login", String) and have it throw exceptions if it can't travel along the way.

It should be namespaced correctly, right now it just throws functions like 'parse', 'generate' and 'generateString' in the namespace. Even if we did have namespaced imports in rock (ping @fredreichbier @showstopper), it's not really acceptable to pollute the namespace with such generic names. They should probably be static functions in a 'JSON' class instead.

We can check the type, yep. And.. I guess throwing an exception is alright. We can't really return null because get() in HashBag doesn't necessarily return an object/pointer, right?

I'd say do it in HashBag, it's a useful functionality no matter what.

Oh nice to know, I didn't remember the exact state of the impl. That said, I still think it should be to be non-polluting by default: after using a few node.js modules, having functions randomly appearing in your scope just feels wrong.

Maybe we can do this in a backwards-compatible manner if we keep text/json/Parser and text/json/Generator as small .ooc files that actually use the text/json module and its JSON class, providing the legacy interface? Then us sane people can switch to just importing text/json and we'll be good. How does that sound?

Ah yeah, I guess you're right. Okay, I'll do that.

Oki!

Okay. So use text/json for the JSON class? I didn't know it was possible to have text/json.ooc and text/json/{Parser,Generator}.ooc, but if it works, why not :)

Well, nothing in any spec anywhere forbids that, and oocmzq does it without a hitch :)

Well, I saw it was easier to make text/json use text/json/[Parser,Generator] due to the internal types and symbols in these modules (Token, TokenType, ...). Now, importing text/json just creates a JSON class in the global namespace.

@fredreichbier Yup, that's what I had in mind :) Thanks.

Just pushed a simple selector like you suggested. What do you think?

That looks fantastic!


[bug] genarate duplicated headers links hash

Its not working a tag hash.
If A header text is same as B header text, href# are duplicate , using Redcarpet::Render::HTML.new(     with_toc_data: true  )
I dont know why this problem happens...
I just guess It seems like no-check wherther each of headers is unique when generate headers link..
:

hoge1

hoge

hoge2

hoge

:

hoge1

hoge

xxxxxxxxxx

hoge2

hoge

xxxxxxxxxx

:

Tks help us

Hello @keiaihara,
Please see this comment: https://github.com/vmg/redcarpet/issues/307#issuecomment-261793668.
Thanks for reporting anyway !

@robin850
gotcha!
I just think so it's.not worth maintenance cost.
I'll try custom render to handle duplicates.
Anyway, thanks 4 quick ur reply!


Strange behavior of completion in string

Does this issue occur when all extensions are disabled?: No

版本: 1.60.0-insider (system setup)
提交: 1c445fe4c7c540d323a206f2f7cb8df9aa99d60e
日期: 2021-08-10T23:49:45.206Z
Electron: 13.1.8
Chrome: 91.0.4472.164
Node.js: 14.16.0
V8: 9.1.269.39-electron.0
OS: Windows_NT ia32 10.0.22000
I am the developer of a extension, I want to complete the file name of the require, just like typescript:

But I found that completion will not work in the string:

Then I tried to register letters in triggerCharacters, but something strange happened: when I typed letters at the end of the string, completion would not work; but when I typed letters in the middle of the string, completion would work :

Is this strange behavior a bug?
Is there a better way to achieve my purpose? Registering all the letters as triggerCharacters does not look very graceful.

That's the editor.quickSuggestions setting. By default suggestion don't trigger as you type when typing in strings


keras.io examples using model.stateless_call aren't setting training=True and aren't managing non_trainable state

both the examples

https://keras.io/guides/writing_a_custom_training_loop_in_jax/
https://keras.io/guides/distributed_training_with_jax/

have a training loop that uses stateless_call, but neither sets training=True ( which means they are using the training=False behaviour )
i guess it's not strictly relevant to the first example, which has no interesting non_trainables, but the second example has batch norm and dropout.
additionally i don't see where this non_trainable state would be managed?

re: batchnorm; each replica might have the same params, but is getting a different batch, so would collect different batch norm stats after the stateless_call. these aren't being aggregated?
re: dropout; the RNGKeys for dropout are in the non_trainable, but never change. shouldn't these be split after each forward pass?

Good call, training=True should be passed in both cases.

additionally i don't see where this non_trainable state would be managed?

stateless_call returns the updated value of the non_trainable_variables (as updated during the forward pass), including BN variables.

re: dropout; the RNGKeys for dropout are in the non_trainable, but never change. shouldn't these be split after each forward pass?

Similarly, they get updated during the forward pass, if you pass the updated non_trainable_variables on the next call, the next forward pass sees different seeds. There is no concept of seed "splitting", seeds are inspectable integers and are always explicitly passed and updated, like any other non-trainable state variable. No special-casing of RNG seeds.

re: batchnorm; each replica might have the same params, but is getting a different batch, so would collect different batch norm stats after the stateless_call. these aren't being aggregated?

The aggregation should happen automatically on the JAX side; JAX lets you write "local, single-process" style code and add sharding annotations which let the compiler know what to distribute and aggregate.
@qlzh727 wrote the example, maybe he can help answer your questions.
You can also try using ModelParallel, which should be somewhat easier: https://keras.io/guides/distribution/

thanks @fchollet
re: dropout & batchnorm i think i need to dive into jax.sharding to understand the aggregation ( last time i looked at this it was all pmap and psum ) i suppose it's all mean aggregation by default and that works for all batch norm stats? ( and seeds too? )
all good, i'll dive further. just got put off by the no training and thought i must be missing something fundamental
hope you're well


Fix incorrect sadiqj/dune#unravel's hash for dune.1.9.1

Thank you!

No! Thank you for your hard work for Multicore OCaml!


[PointPillars] Missing .prototxt file after compilation

I'm trying to run test_bin_pointpillars on the ZCU102 but it aborts because of a missing .prototxt file.
$ ./test_bin_pointpillars test_model0 test_model1 007463.bin 007463.png
WARNING: Logging before InitGoogleLogging() is written to STDERR
F1221 04:59:20.597560  1742 configurable_dpu_task_imp.cpp:115] cannot find /usr/share/vitis_ai_library/models/test_model0/test_model0.prototxt
*** Check failure stack trace: ***
Aborted
The models you provide (pointpillars_kitti_12000_0_pt and pointpillars_kitti_12000_1_pt) have 4 files each inside, an md5sum.txt, the .xmodel, one pointpillars_kitti_12000_0_pt_officialcfg.prototxt (which from what I can tell is the same as the .proto and config files used for training) and a pointpillars_kitti_12000_0_pt.prototxt file.
I am able to run the test_bin_pointpillars fine using these models, but after compiling the model I trained there are only 3 output files, the .xmodel, a meta.json, and the md5sum.txt.
I presume that for the configurations .prototxt I can just copy a .config file and change the extension, but I can't figure out how to generate the other .prototxt file. I can't find anything useful to solve this in the Vitis-AI user guide, as the only references to .prototxt files are for Caffe implementations, not for PyTorch.
Thanks in advance

There are 2 .prototxt config files.  For the one without "_officialcfg",  you can just copy the original pointpillars_kitti_12000_0_pt.prototxt and rename it to "test_model0.prototxt".
For the one with "_officialcfg", use your meta.json and rename it to "test_model0_officialcfg.prototxt".

There are 2 .prototxt config files. For the one without "_officialcfg", you can just copy the original pointpillars_kitti_12000_0_pt.prototxt and rename it to "test_model0.prototxt", and change the name and kernel name in it.
For the one with "_officialcfg", use your meta.json and rename it to "test_model0_officialcfg.prototxt".

Thank you for your answer but it's only partially working. With the changes you suggested, running test_bin_pointpillarsl fails with the following output:
parse error for tensorflow offical config file: /usr/share/vitis_ai_library/models/test_model_0/test_model_0_officialcfg.prototxt
I also tried using the pipeline.config from the training stage as the "_officialcfg.prototxt". It works for the model trained with the same configurations as the one provided by xilinx, but for models with different configurations I'm getting "segmentation fault". I tried running one trained instance with very slight changes and I still get "segmentation fault". Is this a problem related to using the same prototxt? Inside the original prototxt file there are 3 mean values, aren't these specific to the quantized model's configurations?

please attach your "_officialcfg.prototxt" file here.
for the 3 mean values in "prototxt" file, it's no use here (all config items are in "_officialcfg.prototxt")

please attach your "_officialcfg.prototxt" file here.
for the 3 mean values in "prototxt" file, it's no use here (all config items are in "_officialcfg.prototxt")

Here is the "_officialcfg.prototxt" file saved as a .txt.
test_model_0_officialcfg.txt

compare your cfg file with original one, you can find the difference:
yours:   anchor_generator_range
original: anchor_generator_stride
yours:  anchor_ranges
original:  strides  offsets
please carefully change your config file with correct cfg item name and value, then try again.

compare your cfg file with original one, you can find the difference:
yours: anchor_generator_range
original: anchor_generator_stride
yours: anchor_ranges
original: strides offsets
please carefully change your config file with correct cfg item name and value, then try again.

Those changes are intentional, the compiled model is based on those training configurations. The quantization and compilation had no problems. If I use the default configurations they will be different from the model being used. Using the default configurations with their respective models works fine, but since this custom training model was successfully quantized and compiled (evaluation on the docker container had no problems) it should also work on the ZCU102, or am I missing something?. Are there any specific changes I can make for running this model? Are there any steps either in the quantization or compilation process that are based on the default configuration and won't work otherwise?

the deploy code is bound to the model tightly.
Since the model is trained with different configuration,
you need make corresponding change in the deploy code.
I think it's mainly in the anchor generator part: ./pointpillars/src/postprocess/anchor.cpp
Please check ./pointpillars/include/second/protos/anchors.proto with your files, which also need be replaced with yours.

the deploy code is bound to the model tightly.
Since the model is trained with different configuration,
you need make corresponding change in the deploy code.
I think it's mainly in the anchor generator part: ./pointpillars/src/postprocess/anchor.cpp
Please check ./pointpillars/include/second/protos/anchors.proto with your files, which also need be replaced with yours.

That seems to be the problem. Thank you very much for taking the time to help.
I hadn't noticed the anchor range wasn't implemented in cpp, though it is on the anchors.proto.
After adding the code for the anchor range, what would be the steps to run it on the fpga after the changes?

I'm not sure if the anchors.proto is the only different file in all the ".proto" files.
You'd better:

replace all the .proto files with yours. if there are new file, you need update the CMakeLists.txt
please check if the anchors generated by c++ are same as python
then you can test your model with c++ deployed code.

I'm not sure if the anchors.proto is the only different file in all the ".proto" files.
You'd better:

replace all the .proto files with yours. if there are new file, you need update the CMakeLists.txt
please check if the anchors generated by c++ are same as python
then you can test your model with c++ deployed code.

That solved it. Thank you very much for the help.
I just have one last question. When I run the test_performance code on the ZCU102 with the xmodels you provide, the model runs at 18 FPS, but when using a model I trained with the exact same config file and source code the performance is only 10 FPS. My question is, do you perform any additional optimization on the model?

test with one same data by test_bin_pointpillars, add the environment as below:
env DEEPHI_PROFILING=1 ./test_bin_pointpillars ....(other parameters)
you can see the profiling of each step.
then check below items to see which cause the biggest difference.
pp_pre :
pp_dpu0 :
pp_middle
pp_dpu1 :
pp_post :
pp_total :

test with one same data by test_bin_pointpillars, add the environment as below:
env DEEPHI_PROFILING=1 ./test_bin_pointpillars ....(other parameters)
you can see the profiling of each step.
then check below items to see which cause the biggest difference.
pp_pre :
pp_dpu0 :
pp_middle
pp_dpu1 :
pp_post :
pp_total :

I was able to fix the issue with this.
Thank you for the help.

有2.原型配置文件。对于没有"_officialcfg"的，只需复制原始pointpillars_kitti_12000_0_pt.prototxt，并将其重命名为"test_model0.原毒"，并更改其中的名称和内核名称。
对于具有"_officialcfg"的，请使用元.json将其重命名为"test_model0_officialcfg.原毒"。

There are 2 .prototxt config files. For the one without "_officialcfg", you can just copy the original pointpillars_kitti_12000_0_pt.prototxt and rename it to "test_model0.prototxt", and change the name and kernel name in it.
For the one with "_officialcfg", use your meta.json and rename it to "test_model0_officialcfg.prototxt".

How to use the meta.json and rename the ".prototxt"file?This meta.json file is generated at compile,and I find it doesn't have the information of config file

So I have the same question:
cannot parse config file. config_file=/usr/share/vitis_ai_library/models/yolov4_person/yolov4_person.prototxt
How can I generate the correct meta.json files?
Thanks in advance


Getting the JWT Token Not Found Error, But Token Is In Header

I just installed this bundle and installed the sandbox application.  I can get a token just fine:
curl -X POST http://sandbox.localhost.com/login_check -d _username=test -d _password=test
This returns:
{"token":"eyJhbGciOiJSUzI1NiJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJleHAiOjE0OTczMDYwMTgsImlhdCI6MTQ5NzMwMjQxOH0.DJjYjQSRxTDKeikHUs1Dsih7WK_7BownP3SA_gVMKCVUjfn9OfaqCp3bXFErqgAPnWtYn6u-LdX5H40ytW9m6j2pHOAAk8sR_pf_8IoWl4WedMniBzHqXs4hPqPVxH9ZJkGhDYnpWZPwHgxq6iOxnHwV_bLO3ZpLtjekOkh-B2EbWFtFbAZN5wIb-GZGLmerkWXDRzr53F3pf9Zr4guY9jS5_4QAtU5y6oQmzHMKMcn1Bh45BRFjwbf9TzYUHyABUaqA9UxXwJYJkQEXFgh5lfgxZHkrhOhmA4tRnpdceV7gtF_vJpgOlXHIchDNA4SQr9oCdw0oxYubEoV_ce5gh1Jo9irfRWFRfth9T2NEGlZ6qPDcLWvt7BAXjnzLfl_jKkbPwKJid4uT3ROYxGKAnYJhkOGSp0tdgti3w5Yq1Zlqso2Aw2qQmfQtnOXNGzSwtW9mAPXhGiB8DQBKMSNgKCpoeM5BQpFJNuiFOe73LAnyUWNOJjW3YUOuT7jQt4sgq03YcSsVZSwtAhnm4nnHtFaFVgCm4DSACsAbutzFmHLDDp6coDN92mtkWNHvAJhQo1Z9aA497XbtZaFLFEbY21fxhuxBlIzNqfkzjy0lGwPHKcdxnWg29qQSBcoR7T7BVw_kT2z3ujoKlOpJioqobHq7iDA5KbJAMh_rRaEFP2M"}
But when I try to access the /api route:
curl -H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJleHAiOjE0OTczMDYwMTgsImlhdCI6MTQ5NzMwMjQxOH0.DJjYjQSRxTDKeikHUs1Dsih7WK_7BownP3SA_gVMKCVUjfn9OfaqCp3bXFErqgAPnWtYn6u-LdX5H40ytW9m6j2pHOAAk8sR_pf_8IoWl4WedMniBzHqXs4hPqPVxH9ZJkGhDYnpWZPwHgxq6iOxnHwV_bLO3ZpLtjekOkh-B2EbWFtFbAZN5wIb-GZGLmerkWXDRzr53F3pf9Zr4guY9jS5_4QAtU5y6oQmzHMKMcn1Bh45BRFjwbf9TzYUHyABUaqA9UxXwJYJkQEXFgh5lfgxZHkrhOhmA4tRnpdceV7gtF_vJpgOlXHIchDNA4SQr9oCdw0oxYubEoV_ce5gh1Jo9irfRWFRfth9T2NEGlZ6qPDcLWvt7BAXjnzLfl_jKkbPwKJid4uT3ROYxGKAnYJhkOGSp0tdgti3w5Yq1Zlqso2Aw2qQmfQtnOXNGzSwtW9mAPXhGiB8DQBKMSNgKCpoeM5BQpFJNuiFOe73LAnyUWNOJjW3YUOuT7jQt4sgq03YcSsVZSwtAhnm4nnHtFaFVgCm4DSACsAbutzFmHLDDp6coDN92mtkWNHvAJhQo1Z9aA497XbtZaFLFEbY21fxhuxBlIzNqfkzjy0lGwPHKcdxnWg29qQSBcoR7T7BVw_kT2z3ujoKlOpJioqobHq7iDA5KbJAMh_rRaEFP2M" http://sandbox.localhost.com/api
I get:
{"code":401,"message":"JWT Token not found"}
I have the rewrite code enabled in my Apache vhost, and the token is coming through in the headers:
(Inside src/AppBundle/Security/Guard/JWTAuthenticator.php)
echo print_r(getallheaders(), true);

Array
(
    [Host] => sandbox.localhost.com
    [User-Agent] => curl/7.43.0
    [Accept] => */*
    [Authorization] => Bearer eyJhbGciOiJSUzI1NiJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJleHAiOjE0OTczMDYwMTgsImlhdCI6MTQ5NzMwMjQxOH0.DJjYjQSRxTDKeikHUs1Dsih7WK_7BownP3SA_gVMKCVUjfn9OfaqCp3bXFErqgAPnWtYn6u-LdX5H40ytW9m6j2pHOAAk8sR_pf_8IoWl4WedMniBzHqXs4hPqPVxH9ZJkGhDYnpWZPwHgxq6iOxnHwV_bLO3ZpLtjekOkh-B2EbWFtFbAZN5wIb-GZGLmerkWXDRzr53F3pf9Zr4guY9jS5_4QAtU5y6oQmzHMKMcn1Bh45BRFjwbf9TzYUHyABUaqA9UxXwJYJkQEXFgh5lfgxZHkrhOhmA4tRnpdceV7gtF_vJpgOlXHIchDNA4SQr9oCdw0oxYubEoV_ce5gh1Jo9irfRWFRfth9T2NEGlZ6qPDcLWvt7BAXjnzLfl_jKkbPwKJid4uT3ROYxGKAnYJhkOGSp0tdgti3w5Yq1Zlqso2Aw2qQmfQtnOXNGzSwtW9mAPXhGiB8DQBKMSNgKCpoeM5BQpFJNuiFOe73LAnyUWNOJjW3YUOuT7jQt4sgq03YcSsVZSwtAhnm4nnHtFaFVgCm4DSACsAbutzFmHLDDp6coDN92mtkWNHvAJhQo1Z9aA497XbtZaFLFEbY21fxhuxBlIzNqfkzjy0lGwPHKcdxnWg29qQSBcoR7T7BVw_kT2z3ujoKlOpJioqobHq7iDA5KbJAMh_rRaEFP2M
)

Using Symfony 3.3.2 and latest JWT bundle (2.02 I believe?)  Also using the stock configs in the sandbox app.
Any ideas?  Thank you!

Can you dump $request->headers from the authenticator to see if the Authorization header is present?

And if it is, past the content of your config.yml + security.yml here?

Here are the headers from the request object passed to the TokenExtractor:
Symfony\Component\HttpFoundation\HeaderBag Object
(
    [headers:protected] => Array
        (
            [authorization] => Array
                (
                    [0] => Bearer eyJhbGciOiJSUzI1NiJ9.eyJ1c2VybmFtZSI6InRlc3QiLCJleHAiOjE0OTczNjk5NjAsImlhdCI6MTQ5NzM2NjM2MH0.RMmrr3Mib9LD-kSDADSHz_I2S8OPEtN2VEE5kju3nnU1rvLynl3KEt0d_jIOByqMbP453fMKzJQp_ei1K5CM7HGXzJTqYHzLwVOI_CXO2mzhjFLmPb2uEtzbza4-B82Cfj6BBIxGCFZM7tgvK6hoaU0mP55gWwqLmS77HIeZc0ilJE5g_LwqEGyAoyEBUL7e2MB7g5zVOXarcOLXtf0s49IiewuwpBTTzU_VBYlvJR-kuDTe2AhKNYmkeJ89gSX_B8DJExKo_NNPsjkxUJBmVL4SsHV2RtLZCxroW1eQnAr-KqS-2Q41vJmDXCEG_zJw3MJnhqMhZdUqSCjbmavvoDgeTEJAtxt61DdntMov4Ihipxi-w8T4Ov7VitgV3xSORp5nZosCwLoQflhDAE_A_aflQU02_c8EovvZzWa986dsLJPUR95lFP3eeYz3FP8qpGTQUlS7wZvSeyXI9RuIBQRy-I94UMPIqdNQPpUkDpjhsjb5H-Gm15I4ecDZyqsjSUNgODecKBNITtC-fKpe7BNpCv7GJVLrrmAexRpSHSehxl-gnZcnMw_YKvaTlvnCC4YkPvtpasm76Iimwwnok6LljsRFoDoceNtp9hooq9xaCFi9IjcxaiMh4GehPh33KdhQvQdrQ1In9WIKHqtKSq5WbhbWCrnWNr6fhb1lG_M
                )

            [host] => Array
                (
                    [0] => sandbox.localhost.com
                )

            [user-agent] => Array
                (
                    [0] => curl/7.43.0
                )

            [accept] => Array
                (
                    [0] => */*
                )

            [x-php-ob-level] => Array
                (
                    [0] => 0
                )

        )

    [cacheControl:protected] => Array
        (
        )

)

security.yml
security:
    encoders:
        AppBundle\Entity\User:
            algorithm: bcrypt

    providers:
        entity_provider:
            entity:
                class: AppBundle:User
                property: username

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        login:
            pattern:  ^/login
            stateless: true
            anonymous: true
            form_login:
                check_path: /login_check
                require_previous_session: false
                success_handler: lexik_jwt_authentication.handler.authentication_success
                failure_handler: lexik_jwt_authentication.handler.authentication_failure

        register:
            pattern:  ^/register
            stateless: true
            anonymous: true

        api:
            pattern:  ^/api
            stateless: true
            anonymous: false
            provider: entity_provider
            guard:
                authenticators:
                    - app.jwt_token_authenticator

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/api, roles: IS_AUTHENTICATED_FULLY }

    role_hierarchy:
        ROLE_API: [ROLE_USER]

config.yml
imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
    - { resource: services.yml }

# Put parameters here that don't need to change on each machine where the app is deployed
# http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
    locale: en

framework:
    #esi:             ~
    #translator:      { fallbacks: ["%locale%"] }
    secret:          "%secret%"
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    #serializer:      { enable_annotations: true }
    templating:
        engines: ['twig']
    default_locale:  "%locale%"
    trusted_hosts:   ~
    trusted_proxies: ~
    session:
        # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id
        handler_id:  session.handler.native_file
        save_path:   "%kernel.root_dir%/../var/sessions/%kernel.environment%"
    fragments:       ~
    http_method_override: true
    assets: ~

# Twig Configuration
twig:
    debug:            "%kernel.debug%"
    strict_variables: "%kernel.debug%"

# Doctrine Configuration
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        charset:  UTF8
        # if using pdo_sqlite as your database driver:
        #   1. add the path in parameters.yml
        #     e.g. database_path: "%kernel.root_dir%/data/data.db3"
        #   2. Uncomment database_path in parameters.yml.dist
        #   3. Uncomment next line:
        #     path:     "%database_path%"

    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true

# Swiftmailer Configuration
swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    spool:     { type: memory }

lexik_jwt_authentication:
    private_key_path: '%jwt_private_key_path%'
    public_key_path:  '%jwt_public_key_path%'
    pass_phrase:      '%jwt_key_pass_phrase%'
    token_ttl:        '%jwt_token_ttl%'

parameters.yml
parameters:
    database_host: <IP_ADDRESS>
    database_port: null
    database_name: lexik_jwt_auth
    database_user: root
    database_password: null
    mailer_transport: smtp
    mailer_host: <IP_ADDRESS>
    mailer_user: null
    mailer_password: null
    secret: ThisTokenIsNotSoSecretChangeIt
    jwt_private_key_path: '%kernel.root_dir%/../var/jwt/private.pem' # ssh private key path
    jwt_public_key_path:  '%kernel.root_dir%/../var/jwt/public.pem'  # ssh public key path
    jwt_key_pass_phrase:  'foobar'                                   # ssh key pass phrase
    jwt_token_ttl:        3600

I have traced to this part of function extract(Request $request) in AuthorizationHeaderTokenExtractor.php:
if (!(count($headerParts) === 2 && $headerParts[0] === $this->prefix)) {
            return false;
}

$headerParts[0] = 'Bearer', not 'JWT' as configured in the sandbox app.  Changing this call in JWTAuthenticator.php in function getTokenExtractor fixed it:
not-working:
$chainExtractor->addExtractor(new AuthorizationHeaderTokenExtractor('JWT', 'Authorization'));

working:
$chainExtractor->addExtractor(new AuthorizationHeaderTokenExtractor('Bearer', 'Authorization'));

I will close this issue.  Thank you!

Ah yea... This is made to demonstrate the ability to alter token extractors from the authenticator itself, but it seems more misleading than helpful, I may change this to reflect the bundle doc. Thanks for the feedback!

As this is the first search result for "JWT not found header lexik", I'll add some infos.
If you do the same thing as @becauseinterwebs and at the last step, you cant' find the authorization line in your headers, there is probably a problem with your apache vhost config.
See the documentation part which I totally missed:
Important note for Apache users
As stated in this link and this one, Apache server will strip any Authorization header not in a valid HTTP BASIC AUTH format.
If you intend to use the authorization header mode of this bundle (and you should), please add those rules to your VirtualHost configuration :
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

NOTE: Don't put this in a Directory section, it belongs to the root of your config.

Hi @leogout , where is the virtualhost folder for the apache server of symfony ?
I got the same problem for few days now and i can't resolve it.
I still got "JWT Token not found" .
And how can you get the token in a controller for checking if the user is authenticated ?
Thanks for your reply guys.

Hi @leogout , where is the virtualhost folder for the apache server of symfony ?

Depends on your machine. On my Mac its in the direction /etc/private/apache2/
The exact file name you can find in the httpd.conf in the same directory. In my case it's a custom config file: virtualhosts-private.conf
You have then to put
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
inside
<VirtualHost *:443>

It would be great if some kind of "Notice" about this will appear in documentation for Lexik? :) I spent few hours digging what the hell is going on :)
Thanks to @leogout for this answer!

Something like this: https://github.com/lexik/LexikJWTAuthenticationBundle/blob/master/Resources/doc/index.md#important-note-for-apache-users

@Spomky excactly! :)
it confirms my belief that I should read the documentation more carefully

In addition to @leogout , if someone is using htaccess, can add this:
# Fix JWT Authentication problem
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]


SDSK / SoC Listen (PSA)

Where to find the issue

Describe the issue

Suggested change

@BrittaTSI
I can't see any content to this issue which would explain what it's about. The title contains abbreviations which I'm not familiar with.
Will you elaborate?

@MikeMcC399
The T-Systems developers that will handle these tasks are familiar with the corresponding processes so the issue is simply a reminder that enables us to track the progress.
The abbreviations refer to Telekom's mandatory internal approval process called Privacy & Security Asssement (PSA)
SDSK means Sicherheits- & Datenschutzkonzept (Security and Privacy Concept).
An SoC is a Statement of Compliance checklist for security and privacy issues.

@BrittaTSI
Thanks for explaining!
I think the same applies here as well. If the issue will be resolved by adding a document to this repository or modifying an existing one in this repository, then it belongs here. If not, there is probably a better place for tracking the issue outside of the repository.


Graduate Pledge Generation into full Objecthood

Thanks for creating an issue! Please fill out this form so we can be sure to have all the information we need, and to minimize back and forth.

What are we trying to do?
Pull Pledge Generation out of in-code configuration and into its own object.

What feature or behavior is this required for?
Stable application behavior

How could we solve this issue? (Not knowing is okay!)
Right now this lives directly in the pledge geernation flow and is linked to a name set of the Fund object. Instead it should probably be a subobject of funds - needs to be optional!

Anything else?
Do we need a frontend for these fields? Maybe just on one we create for the Fund object?

I'm doing this -- it makes some stuff about generic pledge generation significantly easier, I think


🐛 | Oneline install script does not keep rotary-encoder script

Bug
What I did
I upgraded my installation using the one-line-installer script. During installation I said "yes" when I was asked if I wanted to keep my GPIO configuration.
What happened
The upgrade was performed, but the rotary-encoder scripts were missing afterwards.
I expected this to happen
Rotary controller works as it did before.
Further information that might help
Reviewing the script revealed that rotary controller is not regarded.

Yes, you are right. The new components/gpio_control covers the rotary encoder now, but it’s not correctly integrated yet and also not really documented.
Please see #991.

Thanks! I found the new gpio settings file, but could not make any sense from it. Now it is clearer.


fix(source-material): fix override not populated for part 2

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


Module import naming style

Currently our module imports look like this: `import * as name from './modules/name'
There was a comment from @nugaon saying that we could use module names starting with uppercase:
https://github.com/ethersphere/bee-js/pull/45#discussion_r543112432
However that would introduce naming collisions because we also have types called Tag, Collection etc.
One solution could be to use names like TagModule, FileModule etc.

I think since then this was not revisited and I don't see us moving in this direction, so I am closing this. Feel free to reopen if you think we should bring it on table again.


Add arm64 build(s) for Docker

Description
When attempting to run the master branch docker image on an ARM machine (M1 SoC) I encountered the following issue: https://github.com/docker/for-mac/issues/5123

qemu: uncaught target signal 11 (Segmentation fault) - core dumped

After reading through the issue I tried building an image for arm64/aarch64 by following the example in this repo. I had managed to launch the image by using the slim version of the arm64v8/openjdk image.
FROM arm64v8/openjdk:slim

# Run as non-root user
RUN groupadd -g 322 lavalink && \
    useradd -r -u 322 -g lavalink lavalink
USER lavalink

WORKDIR /opt/Lavalink

COPY Lavalink.jar Lavalink.jar

ENTRYPOINT ["java", "-Djdk.tls.client.protocols=TLSv1.1,TLSv1.2", "-Xmx4G", "-jar", "Lavalink.jar"]

It runs OpenJDK 16 while the image in this repo seems to use OpenJDK 13. I couldn't find a tag with OpenJDK 13 at arm64v8/openjdk. Honestly I have close to 0 experience with Java so I'm not sure what could be the consequences, which is why I decided to open this issue instead of trying to make a pull request.
When running the image I do get the following warning:
2021-06-03 09:12:07.409 INFO 1 --- [ main] lavalink.server.config.KoeConfiguration : OS: Linux, Arch: aarch64
2021-06-03 09:12:07.409 WARN 1 --- [ main] lavalink.server.config.KoeConfiguration : This system and architecture appears to not support native audio sending! GC pauses may cause your bot to stutter during playback.

But I guess that's still better than not being able to run it completely. I haven't managed to test audio playback on my bot yet, but I'll make sure to post here when I do. It doesn't really matter even if it stutters since I will only be running Lavalink on this ARM machine while developing. I doubt anyone will be actually running lavalink in production on an ARM chip anytime soon so this shouldn't be a problem anyway.

Okay so I actually tried playing something and I'm getting the following error:
2021-06-03 11:40:28.268 INFO 1 --- [back-1-thread-1] c.s.l.c.natives.NativeLibraryLoader : Native library libmpg123-0: loading with filter com.sedmelluq.discord.lavaplayer.natives.ConnectorNativeLibLoader$$Lambda$582/0x0000000801295d28@4016f0f7
2021-06-03 11:40:28.270 INFO 1 --- [back-1-thread-1] c.s.l.c.natives.NativeLibraryLoader : Native library connector: loading with filter null
2021-06-03 11:40:28.272 ERROR 1 --- [back-1-thread-1] c.s.l.c.natives.NativeLibraryLoader : Native library connector: loading failed.
java.lang.UnsatisfiedLinkError: Required library was not found

And a big ass backtrace

at com.sedmelluq.lava.common.natives.NativeLibraryLoader.extractLibraryFromResources(NativeLibraryLoader.java:125) ~[lava-common-1.1.2.jar!/:na]
at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadInternal(NativeLibraryLoader.java:110) ~[lava-common-1.1.2.jar!/:na]
at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadWithFailureCheck(NativeLibraryLoader.java:84) ~[lava-common-1.1.2.jar!/:na]
at com.sedmelluq.lava.common.natives.NativeLibraryLoader.load(NativeLibraryLoader.java:69) ~[lava-common-1.1.2.jar!/:na]
at com.sedmelluq.discord.lavaplayer.natives.ConnectorNativeLibLoader.loadConnectorLibrary(ConnectorNativeLibLoader.java:21) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoderLibrary.getInstance(OpusDecoderLibrary.java:13) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoder.(OpusDecoder.java:20) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.initialiseDecoder(OpusPacketRouter.java:193) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.checkDecoderNecessity(OpusPacketRouter.java:177) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:93) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:46) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:371) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:335) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:320) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:296) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:249) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:57) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:49) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:348) ~[lavaplayer-1.3.76.jar!/:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]
2021-06-03 11:40:28.273 ERROR 1 --- [back-1-thread-1] c.s.d.l.t.p.LocalAudioTrackExecutor : Error in playback of 5hEh9LiSzow
com.sedmelluq.discord.lavaplayer.tools.FriendlyException: Something went wrong when decoding the track.
at com.sedmelluq.discord.lavaplayer.tools.ExceptionTools.wrapUnfriendlyExceptions(ExceptionTools.java:44) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:293) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:249) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.process(MatroskaAudioTrack.java:38) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.DelegatedAudioTrack.processDelegate(DelegatedAudioTrack.java:25) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.processStatic(YoutubeAudioTrack.java:57) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.source.youtube.YoutubeAudioTrack.process(YoutubeAudioTrack.java:49) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.execute(LocalAudioTrackExecutor.java:104) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager.lambda$executeTrack$1(DefaultAudioPlayerManager.java:348) ~[lavaplayer-1.3.76.jar!/:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:831) ~[na:na]
Suppressed: com.sedmelluq.discord.lavaplayer.tools.exception.EnvironmentInformation:
lavaplayer.version: 1.3.76
os.arch: aarch64
os.name: Linux
os.version: 5.10.25-linuxkit
java.vendor: Oracle Corporation
java.version: 16.0.1
java.runtime.version: 16.0.1+9-24
java.vm.version: 16.0.1+9-24
Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: Required library was not found
at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadWithFailureCheck(NativeLibraryLoader.java:88) ~[lava-common-1.1.2.jar!/:na]
at com.sedmelluq.lava.common.natives.NativeLibraryLoader.load(NativeLibraryLoader.java:69) ~[lava-common-1.1.2.jar!/:na]
at com.sedmelluq.discord.lavaplayer.natives.ConnectorNativeLibLoader.loadConnectorLibrary(ConnectorNativeLibLoader.java:21) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoderLibrary.getInstance(OpusDecoderLibrary.java:13) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.natives.opus.OpusDecoder.(OpusDecoder.java:20) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.initialiseDecoder(OpusPacketRouter.java:193) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.checkDecoderNecessity(OpusPacketRouter.java:177) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.common.OpusPacketRouter.process(OpusPacketRouter.java:93) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaOpusTrackConsumer.consume(MatroskaOpusTrackConsumer.java:46) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.processFrameInBlock(MatroskaStreamingFile.java:371) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseClusterSimpleBlock(MatroskaStreamingFile.java:335) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.parseNextCluster(MatroskaStreamingFile.java:320) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaStreamingFile.provideFrames(MatroskaStreamingFile.java:296) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.container.matroska.MatroskaAudioTrack.lambda$process$0(MatroskaAudioTrack.java:39) ~[lavaplayer-1.3.76.jar!/:na]
at com.sedmelluq.discord.lavaplayer.track.playback.LocalAudioTrackExecutor.executeProcessingLoop(LocalAudioTrackExecutor.java:275) ~[lavaplayer-1.3.76.jar!/:na]
... 10 common frames omitted
Caused by: java.lang.UnsatisfiedLinkError: Required library was not found
at com.sedmelluq.lava.common.natives.NativeLibraryLoader.extractLibraryFromResources(NativeLibraryLoader.java:125) ~[lava-common-1.1.2.jar!/:na]
at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadInternal(NativeLibraryLoader.java:110) ~[lava-common-1.1.2.jar!/:na]
at com.sedmelluq.lava.common.natives.NativeLibraryLoader.loadWithFailureCheck(NativeLibraryLoader.java:84) ~[lava-common-1.1.2.jar!/:na]
... 24 common frames omitted

It seems some libraries are missing that lavaplayer is looking for. I found something similar at https://github.com/Darkside138/DiscordSoundboard/issues/124, but it doesn't have a resolution.
Will keep looking. Any help would be appreciated.

lavaplayer needs m1 natives. I myself know not much about it.
you maybe want to have a chat in the discord

@TopiSenpai sure can, do i join the JDA server or something else?

yes

Has this ever been solved?

I guess you could use these lavalink jars containing natives for lavalink and build your own image with it
https://github.com/Cog-Creators/Lavalink-Jars/releases

We don't have mac M1/aarch64e natives packaged in those releases yet but it's a planned feature that should be there soon. However we do have plain aarch64 arm natives in there.

Has there been any progress on the ARM natives or is there a jar I can add manually to my project?

https://github.com/Cog-Creators/Lavalink-Jars/releases

with v3.5.0 lavalink has added support for arm in the meantime with docker builds specifically for arm64 & arm/v7


Translate guides/tutorial/part-1/orientation.md

Closes #141

I merge to clean a bit the PR stack, review comments are applied 👍


Typo in init_py for global frame initialiser

In definition of class LocationGlobal(object):
see
       self.global_fame = None

Oy.

@tcr3dr I know you want global fame, but you just can't achieve it.

@hamishwillee Maybe if I commit to it!

No like button here, but i do :-)

Going to be fixed by #445.


Add index file to default pod

Fixes #803

@joachimvh This PR adds the index file. However, the root pod does not pick this one up yet, because it is initialized with AclInitializer.
I wonder if we should replace this one by PodGenerator such that all file are copied over?

@joachimvh This PR adds the index file. However, the root pod does not pick this one up yet, because it is initialized with AclInitializer.
I wonder if we should replace this one by PodGenerator such that all file are copied over?

We could have an initializer that just copies the entire folder instead of doing separate steps. That could replace both the root and acl initializer (would have to add a .meta file to replace the root initializer).
The one issue with that is that currently the acl initializer only gets instantiated if the web acl authorizer is used. In case the allow everything authorizer is used instead (or in the future the ACP one), that initializer does not get used since we don't want an acl file. So we would lose that flexibility.
We could also have both an acl initializer and a root initializer where the second one copies an entire folder and the first one only does the specific file (which should then be in another folder).

We could have an initializer that just copies the entire folder instead of doing separate steps. That could replace both the root and acl initializer (would have to add a .meta file to replace the root initializer).

Yeah, let's do that!

Obsoleted by #824.


Update auth, dynamodb, s3, sqs to 2.17.272

Updates

software.amazon.awssdk:auth
software.amazon.awssdk:dynamodb
software.amazon.awssdk:s3
software.amazon.awssdk:sqs

from 2.17.193 to 2.17.272.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "software.amazon.awssdk" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "@monthly" },
  dependency = { groupId = "software.amazon.awssdk" }
}]

labels: library-update, early-semver-patch, semver-spec-patch, commit-count:1

Superseded by #957.


Compilation Error for level 2 when running in code crunch

Hi for lab 6 level 2, does anybody know why theres this compilation error when i run in codecrunch?

try changing it to a small v?

Its a checkstyle error, change your variable name to v as suggested by @LauWyeRock should be fine

thank u all! i solved it :)