Configure indicator parameters

Need to be able to configure the indicator visible on the Primary Chart. For example, Moving Average or Bollinger Bands. Configuration possibilities include the period length of the indicator #150 or the price used in the calculation of the indicator #149

Some work on changing the period length of the indicators
https://github.com/djmiley/d3fc-showcase/tree/feature/indicatorperiod


Classes could not be found

Hi...
I have this problem in my main Activity , when i use this library it shows this problem:
The following classes could not be found:
- com.sqisland.android.CrossFadeSlidingPaneLayout
Please help me for fixing this error.
<EMAIL_ADDRESS>Thanks...

This is not a library. To use the code, you need to copy and paste the relevant classes into your own project.


Feature Request: dynamic entity retrieval in the spirit of state.get()

In the same spirit as state.get(), it would be good to have entity.get() (and the rest of the family) that would allow a dynamic access to the attributes of an entity, when the entity is available as a string, or otherwise computed.

This is a followup on https://github.com/custom-components/pyscript/issues/102, where @dlashua provided a solution to access group attributes via
for group_entity_id in group.michael.entity_id:
  log.info(group_entity_id)

The proposal would solve the problem where group.michael is available as a the string "group.michael". My current workaround is to use eval("group.michael") which does not seem to be a reasonable solution.

I think you are asking about entity (state) attributes.  A specific attribute is available via state.get(), and all attributes are available vis state.getattr().
Example: state.get("group.michael.entity_id") and state.getattr("group.michael").
You can also set a specific attribute via direct assignment, or using state.setattr().  If you want to set all the attributes use state.set().

@craigbarratt  Thank you, I learned something today. I now actually realized that HA has 'domains' that can be of many kind.
I thought that this was just something "tangible" such as switch (and therefore I know how to get their states) but I did not completely absorbed the fact that can also be group - and getting their attributes (and specifically entity_id) will give me the content of the group.
retrospectively  - this makes sense as group.something is part of the dev tool state table.
@dlashua thank you very much to you too for the explanation in https://github.com/custom-components/pyscript/issues/102 - it is now clear.
And of course my entity.get() does not make sense.
Ah la la, this is a lot of "Issues" uselessly opened - sorry for that.


don't waste you time on feedback or questions

all the answers will be:
I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.

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

ID: 905e2c09-ef3e-07cc-0809-6ff171157c47
Version Independent ID: c0d33162-183d-fff8-32e9-a999f391ea51
Content: Limits and specifications for Microsoft Teams - Microsoft Teams
Content Source: Teams/limits-specifications-teams.md
Service: msteams
GitHub Login: @LolaJacobsen
Microsoft Alias: lolaj

@korenron We appreciate your feedback, please let us know if there is a specific area of the docs that we can improve or make better. Thank you.


Replace guzzle with psr7 adapter and any client

I'd like to use the Symfony HttpClient rather than Guzzle.  And others may want to use something else from this list https://packagist.org/providers/psr/http-client-implementation
To do that, we'd change the instructions and code to install the adapter at the same time.
composer require guzzlehttp/guzzle http-interop/http-factory-guzzle:^1.0

Here is an example of installation with the symfony/http-client:
composer require symfony/http-client nyholm/psr7:^1.0

I think then you'd change the client code and replace Guzzle with the generic interface.

    public function __construct(
        string $apiKey,
        string $storageZoneName,
        string $storageZoneRegion = Region::FALKENSTEIN,
       ?HttpClientInterface $httpClient = null

The problem is that right now I can't even pass it my own client, as it has to a Guzzle Client.  It might be as simple as changing the signature to
\Psr\Http\Client\ClientInterface (which Guzzle implements) or the Symfony Cache contracts.
The Symfony client integrates seamlessly with the debug toolbar.  Plus, I don't want to download Guzzle in my app just for the library.
Thanks for your consideration.

I haven't had the time to look into this yet, but in the case that you might have seen it already, is there a way to handle sync/async calls with the PSR interface? Seems like Guzzle forces sendRequest to be synchronous, so I guess there isn't a PSR-18 compatible way of doing so?

I'm not quite sure.  But Toshy gave me a nice explanation at https://github.com/ToshY/BunnyNet-PHP/issues/121
I also realized that his package does support storage, so I'll probably just use that, since it appears to be a super-set of this library.


Replace godep with dep

https://github.com/golang/dep is the new way to manage dependencies from Go team. It's much easier to use then godep. For example, godep makes it really hard to update a single dependency. In contrast, updating a dependency with dep is easy.  Also, dep binds packages to semantic versions instead of git commit hashes, so is much safer.
I've refactored build, test, install and clean binaries into a Makefile to provide a much cleaner interface without a bash shell.
Etcd package is updated, which hopefully fixes #592 #607

Yes!!!


Case insensitivity of route handlers

Would it be possible to specify that we want route handlers to be triggered without caring about the case sensitivity of the url?
For example, if we have route("#/my/route", function () { ... }), I would want it to be triggered by navigating to "#/mY/ROUte" as well as "#/my/route".
To extend to this, it would be great if you could supply a function when defining routes that determines whether or not a particular url will trigger that route. For example:
route(
  function(route) {
    return route.toLowerCase() === "#/my/route"; // return true to trigger the route handler
  },
  function(config) { ... }
);

Hi @jguo35
That's a good suggestion! I will incorporate it in the next version.
Meanwhile you can use generic route if that solves your problem:
route(({ route }) => {
  ...
});

Hi @jguo35
Please use routeIgnoreCase method to set case insensitive routes. Please refer to README for more details. Let me know if you face any issues.


Dockerfile and python script to help working on Linux

This helped me while working on a previous PR and thought it would be useful for other people too.

IIRC in the past we specifically didn't have a specific docker file. If we do this, I would prefer to have docker scripts for each of the Linux environments we support. That being said:
@tkremenek are we still keeping docker stuff out of the repo?

Right now there are semi-official Docker files provided by:

https://github.com/swiftdocker/docker-swift

This was discussed at:

https://forums.swift.org/t/official-docker-image-blessing-s-of-community-platforms/821/8

However, that discussion was from a while back — before we even had public CI:

As for Docker, we expect that public CI will be up for Swift.org very soon. Once that is in place, we can talk more about mechanizing the production of Docker images.

CI support for Swift has come a long way.  I think it would be appropriate to revisit the topic of Docker images in general — now that two years have passed since that discussion (on the mailing lists).  In the meantime, I don't think we should add a Docker image to the repository as it would be confusing when one considers the other images that are being maintained.

SGTM!


Build failure on latest version (1.2.1)

Just did a new build on Heroku, which would have pulled the latest library version and got this build failure.
/app/node_modules/actions-on-google/request-extractor.js:22
const { transformToSnakeCase } = require('./utils/transform');
^
SyntaxError: Unexpected token {
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:387:25)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object. (/app/node_modules/actions-on-google/assistant-app.js:24:26)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
I've rolled back to 1.1.0 for now and that's building fine.

Hello, thanks for creating an issue.
For debugging purposes, what version of Node.js are you using right now for Heroku? We support the current LTS Node.js version and up (currently v6.11.2+) so we can use the latest JavaScript ES6 features.

Thanks for the response. I'm currently running 5.9.1 so that must be the problem then.
I'll close this issue.


Tests Cleanup

Removes many redundant tests, including all the no_plt_no_pic variants, which reduces the execution time by nearly half
Removes most of examples folder, which was largely very out of date, redundant, and not a good target for tests
Separated tests containing unresolved indirect calls into a new IndirectCallTests suite that replaces the existing IndirectCallsTests, containing many more tests and more detailed checks
Consistently uses BigInts for addresses since they can be longer than 32 bits (it may make sense to make them Longs instead)
Removed deprecated lifting scripts and replaces them with a single script, scripts/lift.sh which can be used to lift single examples
Removes deprecated MemoryRegionAnalysisMiscTest
Takes steps towards unifying test suite functionality with BASILTest (replacing TestUtil) now the base for many other tests
Adds new test suites AnalysisSystemTestsBAP and AnalysisSystemTestsGTIRB which just run all the tests in /correct and /incorrect with the static analysis enabled - this is very useful for finding bugs
Minor cleanup elsewhere in the tests

I'm still not sure what to do with all the histogram stuff in SystemTests - it doesn't really feel like it all belongs there, but I'm not sure where to put it.
I probably should move the cases where GTIRB successfully pre-resolves indirect calls back into the /correct folder, because they're at least tests of the lifter?
I'm not sure what to do with correct/syscall/clang_O2 - maybe it should be in IndirectCallTests? It regularly breaks things in interesting ways though and the indirect call isn't really the point?

Which are the borderline cases you mean? arrays_simple/gcc because it still fails? Getting it to pass requires a more sophisticated specification system.

Which are the borderline cases you mean? arrays_simple/gcc because it still fails? Getting it to pass requires a more sophisticated specification system.

Yeah, if it requires new features to pass we should put it in a separate test suite to test new features against.

Other tests that don't always pass right now are some of the malloc_memcpy_strlen_memset_free tests which tend to cause Z3 to time out (though I think this is slightly inconsistent). Should they go in their own suite, or in the same one as arrays_simple?

I think we could relax the time limit (by 5 - 10 s?) so they pass reliably, since we don't have so many tests timing out now. They should consistently pass in a reasonable amount of time, clang is 8s on my laptop and gcc < 1s.

Relaxing the time limit doesn't help for incorrect/malloc_memcpy_strlen_memset_free/gcc_O2:BAP but it does for correct/malloc_memcpy_strlen_memset_free/clang_O2:BAP.

correct/malloc_memcpy_strlen_memset_free/clang_O2:BAP still times out for the github action too. Maybe we should just put those tests in their own suite?

Yeah that's probably best

I think this is good now. I've moved the malloc_memcpy_strlen_memset_free tests to their own ExtraSpecTests suite


Build daemon exited.
Done in 9.32s.

Not sure what's going on, very often that it just silently fail.

How easily can you reproduce this?


Do not vet vendored dependencies

bin/vet was overly aggressive, vetting dependencies and failing

LGTM

Nice. Do we need to merge this for Johann, Bernerd?


Vundle should do on-demand loading like vim-plug

as you have too many plugins, or some certain plugin loading takes too much time, on-demand loading could solve this problem, like vim-plug, could somebody help with this ?

autoload depends on plugin implementations, vundle only install plugins. if a plugin has code on its autoload dir it will have on-demand loading


feat: v4 POST with signed policy

DO NOT MERGE

until production is ready and system test is updated to execute the signed policy.

Fixes #1047 🦕

alias getSignedPolicy() to getSignedPolicyV2(), and deprecate the former
Refactored getSignedPolicyV4() to only provide fields and conditions options, removing startsWith, equals, success*, acl, contentLengthRange options.
update v2 links to point to https://cloud.google.com/storage/docs/xml-api/post-object-v2

TODO: execute signed policy against production once ready

@jkwlui conformance tests were updated, please make sure your tests still pass.
That's the last request, overall LGTM. Thanks for all your work!

Updated. See 63bf22c


Require explicit to string conversion flag

By default, enable explicit conversion to string, while also support the capability to avoid string conversion for optimizing expressions that are transformed into mongo queries

Hi @tghamm , I have got another PR up! 😄
I would appreciate your code review on this one as well

@MichalBor looks great on my end, just had to reconcile a merge commit from your other PR.  Thanks for the contribution, and again for the tests!


Fix: Add resource_path() function to ApiDocGeneratorServiceProvider

The resource_path() function was not available in laravel 5.1, i created a quick fix by adding it to the ApiDocGeneratorServiceProvide class

[Current coverage][cc-pull] is 88.80%

Merging [#57][cc-pull] into [master][cc-base-branch] will not change coverage

@@             master        #57   diff @@
==========================================
  Files             6          6
  Lines           384        384
  Methods          33         33
  Messages          0          0
  Branches          0          0
==========================================
  Hits            341        341
  Misses           43         43
  Partials          0          0

Powered by Codecov. Last updated by [df1bc48...0aacb21][cc-compare]
[cc-base-branch]: https://codecov.io/gh/mpociot/laravel-apidoc-generator/branch/master?src=pr
[cc-compare]: https://codecov.io/gh/mpociot/laravel-apidoc-generator/compare/df1bc487d49a714ab57f388ebb7ca77b845f2c84...0aacb21872046eca47ccde4588464883147db00d
[cc-pull]: https://codecov.io/gh/mpociot/laravel-apidoc-generator/pull/57?src=pr

Please squash the commits into one

@mpociot done, i fixed docblock style to pass the StyleCI as well

@zakhttp thank you :)

@mpociot my pleasure to contribute


refactor(GUI): move redux store to lib/shared

After https://github.com/resin-io/etcher/pull/1569, the redux store can
run outside of a browser context. This commit moves it to lib/shared,
where we will likely move all the other models as well. As an extra, I
renamed Store to store, since there was no reason for that variable
to be capitalized.
Change-Type: patch
Signed-off-by: Juan Cruz Viotti<EMAIL_ADDRESS>

CI error:
./node_modules/.bin/npx eslint lib tests scripts bin versionist.conf.js
/etcher/lib/gui/app.js
  46:1  error  More than 1 blank line not allowed  no-multiple-empty-lines

Apart from that, LGTM!

Fixed!

Hmm, all the CI tests passed in this PR, but then Appveyor failed on the merge to master :-/
https://ci.appveyor.com/project/resin-io/etcher/build/1.0.5090
/scripts/ci/ensure-staged-shrinkwrap.sh
node version: v6.10.3
npm version: 3.10.10
wrote npm-shrinkwrap.json
><EMAIL_ADDRESS>postshrinkwrap C:\projects\etcher
> node ./scripts/clean-shrinkwrap.js
Removing: 7zip-bin-mac, 7zip-bin-win, 7zip-bin-linux
Done
There are unstaged npm-shrinkwrap.json changes. Please commit the result of:
    npm shrinkwrap --dev
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json
index c42b7d8..4cd828c 100644
--- a/npm-shrinkwrap.json
+++ b/npm-shrinkwrap.json
@@ -8698,7 +8698,7 @@
     },
     "pretty-bytes": {
       "version": "1.0.4",
-      "from"<EMAIL_ADDRESS><2.0.0",
+      "from"<EMAIL_ADDRESS>       "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
       "dev": true
     },

Which is really weird, because the previous commits all built okay, and this PR doesn't touch package.json or npm-shrinkwrap.json. Bloody NPM! :cry:  (perhaps this is also related to https://github.com/resin-io/etcher/pull/1547#discussion_r126389887 )
Ahhh, or perhaps this is related to caching node_modules, where a PR-build will produce one set of node_modules, which will then get cached and re-used by the next master-build of Etcher. So perhaps this change will indeed fix things for Appveyor, but I dunno how we'd resolve things on Travis, which doesn't seem to have a similar cache-dependency feature.
Unless, as I suggested elsewhere, we're able to remove these pesky from: lines from npm-shrinkwrap.json... (which I believe would fix a ton of problems, but I dunno if it'd introduce new problems)

Hmmmm, @jhermsmeier does https://github.com/npm/npm/pull/17076 mean that keeping the from field will make our upgrade to NPM 5 easier? (or is that irrelevant, given that we're using locked versions rather than ranges?)

Hm, let me extract those changes to a new PR, so we can get that merged sooner.


Exclude logs from openshift-logging/gitops namespace

Which issue this PR addresses:
The PR is to exclude logs from the openshift-logging namespace.

Fixes Exclude openshift-logging logs from being ingested into Azure log infrastructure
What this PR does / why we need it:
This is to exclude logs from openshift-logging and openshift-gitops logs going into the Azure Geneva logging infrastructure due to the fact that incorrectly configured customer log ingestion can result in customer workload logs being ingested

Test plan for issue:

Is there any documentation that needs to be updated for this PR?

/azp run e2e


Program error at sample code, 04-list-formats.py in examples/python/

I have some error at running of sample code, 04-list-formats.py.
Following is my environments and error code.
Please give me some help.
Details for PC
Surface laptop (64bit)
OS
Ubuntu (64bit)
OS version
18.04 LTS
Tiscamera version
0.11.1
Aravis version
0.6.3
Process of build
1. Clone git file
git clone https://github.com/TheImagingSource/tiscamera.git

2. Install build dependencies
sudo ./scripts/install-dependencies.sh --compilation --runtime

3. Build tiscamera
cd tiscamera
mkdir build && cd build
cmake -DBUILD_ARAVIS=ON -DBUILD_TOOLS=ON ..
make
sudo make install

4. Start the gige-daemon
sudo systemctl daemon-reload
sudo systemctl enable gige-daemon.service
sudo systemctl start gige-daemon.service
sudo systemctl status gige-daemon.service

5. Install aravis
cd aravis-0.6.3
./configure
make
sudo make install

Error program
/examples/python/04-list-formats.py
Details for Error
video/x-bayer rggb - 256x16 - Traceback (most recent call last):
File "04-list-formats.py", line 72, in print_formats
framerates = structure.get_value("framerate")
TypeError: unknown type GstValueList

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "04-list-formats.py", line 132, in <module>
main()
File "04-list-formats.py", line 126, in main
print_formats(source)
File "04-list-formats.py", line 76, in print_formats
substr = fmt.to_string()[fmt.to_string().find("framerate="):]
AttributeError: 'str' object has no attribute 'to_string'

Hi,
There was indeed a bug in the 04-list-formats.py example.
I pushed a fix to the master branch.
Please update your repository to the latest version of the master branch.

Hi Edgar,
After I tried to run by updated program, I had no error.
Thank you for your quickly support.

Hi Edgar,
Sorry, I overlooked one error at running updated sample program.
Please give me more help.
video/x-bayer rggbTraceback (most recent call last):
File "04-list-formats.py", line 132, in <module>
main()
File "04-list-formats.py", line 126, in main
print_formats(source)
File "04-list-formats.py", line 60, in print_formats
width = structure.get_value("width")
TypeError: unknown type GstIntRange

Hi there,
I missed checking the example with a GigE camera that has ranges.
Please pull and verify that it works. I am hopeful to have addressed all issues with this example.

Hi Edgar,
After I tried this example, there was no error in 04-list-formats.py.
I appreciate for your support.
But, I found other error like below in 05-set-format.py.
I want your help for this error.
Traceback (most recent call last):
File "05-set-format.py", line 96, in <module>
sys.exit(main())
File "05-set-format.py", line 54, in main
structure.set_value("framerate", Gst.Fraction(30, 1))
TypeError: object() takes no parameters

Hi,
I pushed a fix for this problem. The rest of the examples should not have these problems as they do less 'manual' work such as creating GstStructure objects.
If there are still problems, please let me know.

Hi,
There are still problem like below in 05-set-format.py.
I'm sorry, but please give me more help.
Traceback (most recent call last):
File "05-set-format.py", line 109, in <module>
sys.exit(main())
File "05-set-format.py", line 66, in main
caps.append_structure(structure)
TypeError: argument structure: Expected Gst.Structure, but got __main__._ResultTuple

Can you give me your camera model?

My camera model is DFK33GP1300.

Can you change the line:
structure = structure.from_string(struc_string)

to
structure, end = structure.from_string(struc_string)

I will have to test a few different ubuntu versions to ensure that there is nothing else I am missing.

Thank you for your suggestion.
After changing, there is no error.
I can watch live streaming.
If I have some problem, I want your help again.


Use Vue's teleport

e.g.: https://github.com/cylc/cylc-ui/pull/1318

This probably cannot be implemented due to how we treat the children tabs/components (we do not have a fixed type, trying to be generic). To be reviewed and documented in a future release.

This library tries to add components as they are as Lumino tabs. This means without requiring any changes to the components, any props, nothing. It will use the .name to fetch the name of the component (which every Vue component should have, I believe), and then create a LuminoWidget and sync it programmatically to the DOM, instead of with Vue3 Teleport.
That's because we receive all the components in the default slot, with no easy way to iterate through each component and teleport them to somewhere else. Will leave this open and pinned in case later we realize that there is actually a way to use it, or if there is a pull request submitted, more ideas, etc.


[InstallAppleProvisioningProfileV1] Not compatible with macOS (OSX) app signing anymore (". provisionprofile")

The extension validation added on this issue: https://github.com/microsoft/azure-pipelines-tasks/pull/12917 removed the capability of signing a MacOS app (Developer ID Application).
MacOS Provisioning Profile extension is ˜.provisionprofile˜.
The ".mobileprovision" is used just for mobile apps...
I cant find another way to sign my macOS app right now using Azure Devops.
.mobileprovision - iOS provisioning profile
.provisionprofile - OSX provisioning profile

Our team faced the same issue. The macOS tasks started to fail after the check is added for mobile app only. May I ask whether it is viable to bring it back soon? And if yes how long it gonna take to make the fix? Thank you so much!

I have the same issue here

This ironically was fixed in 2018, but now un-fixed: https://github.com/microsoft/azure-pipelines-tasks/issues/8387

Did my first fix :) Hopefully I don't bring down all the regions of DevOps: https://github.com/microsoft/azure-pipelines-tasks/pull/13074

Our team is also blocked by this. Can we get @jmartarelli 's  fix fast-tracked?

@tipa , @nshenoy
There is a workaround for this. Instead of getting the certificate uploaded into azure, put it somewhere inside your source branch and configure the task to look into your source repository... (There is a combo box for this option selection)...


fix: remove main tag in User.js causing duplicate

Removed the main element in User.js as this was causing a duplicate main element
Closes #651

maybe you can try fix the failing test?

@emmalearnscode I agree with you but the structure was pretty confusing and I also feel that the main nav should be outside of the main area as it is consistent across pages?

@emmalearnscode I agree with you but the structure was pretty confusing and I also feel that the site nav should be outside of the main area as it is consistent across pages?
I'm happy to amend but I also feel we should look at pulling the main navigation out of the main area? maybe in another issue ? Happy to hear your thoughts
thanks

Oh interesting, I hadn't noticed that the navbar was inside different components like that. Yes, ideally the navbar is outside of the routes so we should probably raise another issue.

Attached are the Screenshots
Hope this is all in order now 😄
Home Page

Profile Page

Error Page


mejs.Features.isIE Unable to recognize IE11

https://github.com/mediaelement/mediaelement/blob/master/src/js/utils/constants.js#L14
IE 11 has a different user agent string than other IE versions

const USER_AGENT = window.navigator && window.navigator.userAgent || '';
const result = (/MSIE\s(\d+).\d/).exec(USER_AGENT);
let version = result && parseFloat(result[1]);
if ( !version && (/Trident/7.0/i).test(USER_AGENT) && (/rv:11.0/).test(USER_AGENT)) {
version = 11.0;
}

@a526672351 Thanks for the report. May I ask you for a PR ? We'd like to include your fix in upcoming 4.2.11


Problematic enum names are passed through unchecked

Hi,
I've been tinkering with the SVD for the STM32F334x microcontrollers, adding enums to make the generated API more useful. At some point, rustfmt started throwing errors and it took me a little bit of effort to figure out why. It turned out I'd named an enum value push-pull, which isn't a valid Rust identifier.
While it makes sense that this breaks, and it was trivial to fix, it would be helpful if svd2rust recognised this sort of error in the SVD file, rather than generating output that then results in a non-obvious compiler error. A similar check could have caught the duplicate enum value names in #112 too.
I'm pretty new to Rust but I'll try to have a look at the code to see how easy this would be to implement. Just thought I'd make an issue first to see what other people think and prevent duplicate effort. :)

It turned out I'd named an enum value push-pull, which isn't a valid Rust identifier.

It's true that 'push-pull' is not a valid Rust identifier but I think it's a valid, although uncommon, enumeratedValue name as defined by the SVD specification. So I think this may actually be a svd2rust bug where it should have normalized that name to uppercase.

it would be helpful if svd2rust recognised this sort of error in the SVD file

IMO this kind of verification should be in the SVD parser. I'm reluctant about doing such verification though, specially if we want 100% compliance to the SVD standard, because no vendor SVD file I have seen passes cleanly a verification of the SVD schema.

My reasoning for addressing it here was that this is an issue that doesn't stem from parsing the file, but from turning it into Rust code. In going over the schema, though, I found that enumeratedValue names are identifierType which is defined as the pattern [_A-Za-z0-9]*, so it's invalid according to the spec too.
I'm inclined to say "validate the files and have people fix them if they don't conform" but I realise that might be a bit idealistic… This specific case definitely seems worth addressing, though, since it results in code that won't compile anyway. Detecting the issue in svd2rust (or the parser) makes it possible to refer the user directly to the problem with the SVD file, instead of them having to deduce this from the compiler error.

Another apparent example of this is in the LPC43xx SVD:
                                <enumeratedValue>
                                    <name>RESUME_DETECTED/DRIV</name>
                                    <description>Resume detected/driven on port.</description>
                                    <value>1</value>
                                </enumeratedValue>

The slash is passed without being sanitized:
pub enum FPRR {
    # [ doc = "No resume (K-state) detected/driven on port." ]
    NO_RESUME_K_STATE_ ,
    # [ doc = "Resume detected/driven on port." ]
    RESUME_DETECTED/DRIV
}

I encountered something similar today when using svd2rust on a file generated from msp430_svd. The error came ultimately from rustfmt where I got:
error: expected `where`, `{`, `(`, or `;` after struct name, found `-`

due to
pub struct REAL-TIME_CLOCK

These SVD files do not follow the spec as the names have to be ANSI C compatible (according to spec)
The spec has varying requirements on identifiers (which can be found here) but the more general statement is

All name tags must comply with the ANSI C identifier naming restrictions. In particular, they must not contain any spaces or special characters. This is necessary to support the generation of device header files thus providing consistency between the names being shown by the debugger and the symbols being used in the CMSIS compliant target software. [link]

@japaric I think you are wrong in the assumption that push-pull is an valid enumeratedValue name.
enumeratedValue is defined as such
  <xs:complexType name="enumeratedValueType">
    <xs:sequence>
      <!-- name is a ANSI C indentifier representing the value (C Enumeration) -->
      <xs:element name="name" type="identifierType"/>
      <!-- description contains the details about the semantics/behavior specified by this value -->
      <xs:element name="description" type="stringType" minOccurs="0"/>
      <xs:choice>
        <xs:element name="value" type="enumeratedValueDataType"/>
        <!-- isDefault specifies the name and description for all values that are not
             specifically described individually -->
        <xs:element name="isDefault" type="xs:boolean"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

and the type identifierType is defined as
  <xs:simpleType name="identifierType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[_A-Za-z0-9]*"/>
    </xs:restriction>
  </xs:simpleType>

However, the fact that many SVDs are not compliant puts a lot of effort on us as we'll have to decide whether we make svd-parser know of these common errors or demand the user to patch their SVDs. I'm not sure which one would be the best alternative between these two paths.

@jaycle Please file an issue at msp430_svd

I might suggest that we consider "fixing" bad names, but trigger a WARNING once we have some kind of Logging infrastructure (see https://github.com/japaric/svd2rust/issues/183).
Normal name transforms to meet Rust variable naming standards could be an INFO/DEBUG level log.

Closing as should be fixed in svd-parser with ValidationLevel::Strict


Install-ADDcoreComponent contains wrong redirPath

The function tries to redirect default user / computer location to "OU=Provisioning" but the OU in SQLite is called "OU=Provision"
                #$RedirPath = "OU=Provisioning,OU=$($FocusHash['Stage']),OU=Tier-2,$DomDN"
                $RedirPath = "OU=Provision,OU=$($FocusHash['Stage']),OU=Tier-2,$DomDN"

This information should come out of the SQLite DB and not being hardcoded.
It should also use the well known GUIDs not the names:
                #$CompWKO = $WellKnownObjects | Where-Object {$_ -like "*CN=Computers,*"}
                $CompWKO = $WellKnownObjects | Where-Object {$_ -match '\:AA312825768811D1ADED00C04FD8D5CD\:'}

                # Corrected to "Users" and using wellknown GUID
                #$UserWKO = $WellKnownObjects | Where-Object {$_ -like "*CN=Computers,*"}
                $UserWKO = $WellKnownObjects | Where-Object {$_ -match '\:A9D1CA15768811D1ADED00C04FD8D5CD\:'}

Good call out on the bad name...I believe I have this fixed in the active code base already, but I'll double check. As for using the wellknown GUID, that is a good idea...admittedly this was one of the items I was still working on figuring out how to do without using the Microsoft AD module. The active code base currently just calls the old DOS commands as I haven't had any time to work this item in the lab.

I solved it this way (as the DOS commands didn't work)
                # Corrected to Provision
                #$RedirPath = "OU=Provisioning,OU=$($FocusHash['Stage']),OU=Tier-2,$DomDN"
                $RedirPath = "OU=Provision,OU=$($FocusHash['Stage']),OU=Tier-2,$DomDN"

                $WellKnownObjects = Get-ADObject -Identity $DomDN -Properties wellKnownObjects | Select-Object -ExpandProperty wellKnownObjects
                Write-Debug "$($LPB1)`t`tWellknownObjects:`r`n$($WellKnownObjects | Out-String)"

                # Update to use guid instead of DN as this changes after first run
                #$CompWKO = $WellKnownObjects | Where-Object {$_ -like "*CN=Computers,*"}
                $CompWKO = $WellKnownObjects | Where-Object {$_ -match '\:AA312825768811D1ADED00C04FD8D5CD\:'}
                Write-Verbose "$($LPB1)`t`tCurrent Computer OU:`t$CompWKO"

                # Corrected to "Users"
                #$UserWKO = $WellKnownObjects | Where-Object {$_ -like "*CN=Computers,*"}
                $UserWKO = $WellKnownObjects | Where-Object {$_ -match '\:A9D1CA15768811D1ADED00C04FD8D5CD\:'}
                Write-Verbose "$($LPB1)`t`tCurrent User OU:`t$UserWKO"

                #$NewCompWKO = $CompWKO -replace ($CompWKO.Split(':')[-1]),$RedirPath
                $NewCompWKO = $CompWKO -replace "(.*\:).*","`$1$RedirPath"
                Write-Verbose "$($LPB1)`t`tNew Computer OU:`t$NewCompWKO"

                #$NewUserWKO = $UserWKO -replace ($UserWKO.split(':')[-1]),$RedirPath
                $NewUserWKO = $UserWKO -replace "(.*\:).*","`$1$RedirPath"
                Write-Verbose "$($LPB1)`t`tNew User OU:`t$NewUserWKO"

                Write-Verbose "$($LPB2)`t`tAttempting to update default computers location"
                try {
                    Set-ADObject -Identity $DomDN -Add @{wellKnownObjects = $NewCompWKO} -Remove @{wellKnownObjects = $CompWKO}
                    Write-Verbose "$($LPB2)`t`tUpdate Default Computers:`tSuccess"
                }
                catch {
                    Write-Verbose "$($LPB2)`t`tUpdate Default Computers:`tFailed"
                    Write-Warning "Updating the default computers OU failed - Run 'redircmp.exe' manually"
                }

                Write-Verbose "$($LPB2)`t`tAttempting to update default users location"
                try {
                    Set-ADObject -Identity $DomDN -Add @{wellKnownObjects = $NewUserWKO} -Remove @{wellKnownObjects = $UserWKO}
                    Write-Verbose "$($LPB2)`t`tUpdate Default Users:`tSuccess"
                }
                catch {
                    Write-Verbose "$($LPB2)`t`tUpdate Default Users:`tFailed"
                    Write-Warning "Updating the default users OU failed - Run 'redirusr.exe' manually"
                }

Yeah, using the redir DOS commands from PowerShell is a bit of a pain...especially if you are not an admin on the system in question and cannot run elevated. It can be worked around, but I'm trying to find a better approach that uses the API. I know it is possible to accomplish, it's just not straight forward and I have yet to find a good example online.
As for your own solve, unfortunately it isn't viable as it still depends on the Set-ADObject cmdlet to make the change. The updated copy of the Dev branch still has somewhat similar code unfortunately as, like I mentioned above, I haven't found the right fix yet. My current approach, because I'm for some reason loathe to comment out the code, is to allow the steps to be skipped via a switch (noredir) I added to the cmdlet.
As to why, I would note that avoiding the use of the Microsoft modules was a conscious choice initially just to avoid dependency issues in the event that the RSAT tools weren't available. Later, I discovered another issue that made this a necessity. Both Microsoft's ESAE model, and NISTs Zero Trust framework, stipulate the use of a Privileged Admin Workstation (PAW) from which all administrative activities should be performed. Also per both models, the admin performed work from the PAW should not have local administrative rights to the PAW to prevent potential misconfiguration or exposure of the PAW. As it turns out, both ADUC and the ActiveDirectory module require running elevated in order to effect changes to the directory, though ADUC is a bit inconsistent in this regard. For ADUC, this isn't a huge issue, as I have found a way to make it run without the elevation prompt and this allows the admin to make changes provided they have the required access. The ActiveDirectory module, on the other hand, has a hard coded elevation check that doesn't appear to be able to be bypassed (I cracked open the DLL and looked at the code).
Naturally this means that using the API is the correct way to go, once I figure out how to make it work. I planned to dive into the ActiveDirectory module code a bit deeper, but first I have to substantially progress my programming knowledge enough to understand all the twists and turns they have going on (you think my code is hard to follow)...or find a good example somewhere.

You should checkout the  S.DS.P from Jiri Formacek. I makes use of S.DS.P PRotocol which is, like ADSI, on each Windows OS. But its a more basic and really fast protocol. The module is written nicely and allows to manage AD Objects. Not as simple as Microsoft module, but does not require ADWS and talks straight to LDAP(s).
Your code would get simpler by using the module as you wouldn't need all the DirectorySearcher and other .net parts. And it would simplify providing credentials instead of running it in the context of the current user.


num_of_rollouts

Hi!
Excellent codebase - so useful. I have one silly question - do you have a variable for num_of_rollouts in your code? If not, any thoughts how can I implement it?
Thank you!

Soujanya

What would you like to control with that variable?


chore(package): update mongoose to version 5.4.3

:tada: This PR is included in version 2.2.0 :tada:
Your semantic-release bot :package::rocket:


CLI autogeneration.

This is a very nice project, thanks for sharing it.
While browsing through the examples, I was wondering whether you would be interested in generating a CLI automatically by compile time introspection of function signatures. We use a similar approach here to generate a light weight RPC interface.
Just let me know if you are interested.

I was thinking about something along these lines.

I am not sure which "further information is requested". A specification of the question would be nice.


Add Russian translate

Will there be added options in the application to play with the Russian translation?

Russian font isn't supported and work to modify the font stalled last year. If I have time I will revisit it.

I endorse this topic. It would be nice to have a Russian translation

Closing this as it isn't on the roadmap for this project - lack of ability to change font & certain geopolitical events make this not worth persuing further for the immediate future.


Added buildscriptConfiguration option to dependencies task

Recently I have been helping a lot of people work with buildscript dependency issues (where plugins upgrade shared libraries). It seemed like the dependencies task should be able to put this report out.
When adding the buildscriptConfiguration option with dependencies the task will now look at the buildscript's configurations vs the project configurations allowing people to list all of their buildscript dependencies to find conflicts.

Hi @ethankhall
Thanks for the contribution. It would indeed be good to have better visibility over the build script classpath. I've kicked off a discussion about this on the developer list here: https://groups.google.com/forum/#!topic/gradle-dev/2arhYw5PT5s
Just going to wait and see what the others think before proceeding.
Thanks for initiating this.

So summarising from the dev list thread, our preferred way to do this would be to add a new task to do this (i.e. shows a dependency report for project.buildscript.configurations.classpath). A working name is buildscriptDependencies, but we need something better before release.
@ethankhall are you up for this?

@alkemist Sure. Will we also need to do the same thing with dependencyInsight?

We probably will, but let's do that as a separate step. We can still potentially use the same PR, but let's the “dependencies” task first. Once that's done, I think we should raise the question of how we deal with a dependencyInsight type task on a new dev list thread.

@alkemist I think that should be it

@alkemist Would we be able to get this into 2.4 or will it have to wait for 2.5?

It will have to wait for 2.5.

@alkemist can I get a code review?

@ethankhall it's in the queue. I'll post back as soon as I have an update.

Hi @ethankhall ,
I'm very sorry that it's taken 3 months (!) to get back to you.
@adammurdoch: here's my recollection of our discussion on this a while ago. I can't find any notes of that, so it is from memory.
In short we'd like to add a new task called buildscriptDependencies that is an analog to dependencies, but for project.buildscript.configurations.classpath.

@alkemist / @bigdaz Any update on this guy?

Hi @ethankhall , we need to change things so that we expose less for this new task. We want to create something that we can evolve to be more accurate later, and making it a dependency report task limits this. If you can make this change, I'll merge.

Hey @alkemist,
I make the update (ci is running) but instead of using DefaultTask I used ConventionTask for the output file like the other diagnostic tasks use.

Many thanks @ethankhall, for the work and your patience.
I left a comment on the new task that we need to remove some of the config options. We'll be good to merge after that.

I updated the review to remove most of those setters/getters. I kept one but moved it to protected so I can use it for testing.

Thanks Luke!

This will be in Gradle 2.10, with some minor changes: https://github.com/gradle/gradle/commit/7c64ea6fe39d2f55f045a817cf8259bd0acd29d7
Many thanks for your work, persistence and patience @ethankhall .


[Candidate 3v3 Epsilon 6 ZH v1] Map lightning has magenta color cast

Observed behaviour
Map lightning has magenta color cast.
Expected behavior
Map lightning is natural for this time of day.
Screenshots

Shadow also appears to be dark.


internal node diff-insert

Simplified version of #253 that only diff-updates the internal nodes.

superseded by #261


Root nodes in scenes inconsistently have or lack an "index" property

Godot version: Various 3.0.x versions, most recently, 3.0.6. All with Mono.
OS/device including version: Ubuntu 18.04 64-bit
Issue description: For some reason, the root node in my scenes seems to randomly have the index="0" property. Sometimes it is there, sometimes it is not there. It is really annoying especially for Git history, where I have commits constantly changing the file back and forth.
In one commit (this one created pre-3.0.6):

And in another commit (this one made with 3.0.6):

In both commits, this is the only line of the scene file that is changed. This doesn't break the project or anything, but it is quite annoying for users of version control software.
Please, either always include index, or always exclude it. I assume the former is better.
Steps to reproduce: I have no idea how to reproduce it. It seems fairly random.

Same on Windows 7 Pro SP1 x64. No Mono.
And Godot's supposed to have

Friendly filesystem usage that works great with version control systems like Git, Subversion, Mercurial, PlasticSCM, Perforce, you name it

:(

It is possible that Godot wrote those useless indexes before 3.0.6, but stopped in 3.0.6.
Anyway, duplicate of #17562.


add UI-visible versioning to trifecta binary  (and check if there's an update available?)

add a version-number to the header/footer to actually see if you're running the latest and greatest and maybe add a notification if there's an update available (so you can poke the admin if needed).

Half of this has been done! There is now a version in the footer.

as this is still open, just updating with some extra info:
the version footer shows as "undefined"  when using docker-compose
"Learn more about Trifecta on Microsoft GitHub — version undefined"


PostgreSQL: Create Role Wizard

In the Roles context menu it should be possible to open a wizard to create a  new role. The wizard should consist of pages which contain the following configuration items:

name
password (password repetition)
privileges (like superuser, can create database, roles etc.)
and optionally
connection limit and expiration date for that user

Agreed..seems like a pretty foundational feature.

Wizard should allow also viewing/setting attributes like search_path.
Today for testing some libraries I used MySQL instead of Postgresql because of lack of this functionality (there is wizard for MySQL) :smiley:


Add Coreum

Description
Adding chain: Coreum
Adding token: CORE from chain Coreum
See CORE/OSMO pool 1244

Checklist

Adding Chains

If adding a new chain, please ensure the following:

[x] Chain is registered to the Cosmos Chain Registry.
Note:

Chain's registration must have staking defined, with at least one staking_token denom specified.
Chain's registration must have fees defined; at least one fee token has low, average, and high gas prices defined.

[x] Add chain to bottom of zone_chains.json
Note:

RPC and REST must not have any CORS blocking of the Osmosis domain.
RCP node must have WSS enabled.

Adding Assets

If adding a new asset, please ensure the following:

[x] Asset is registered to the Cosmos Chain Registry.

[x] Add asset to bottom of zone_assets.json.
Note:

The IBC channel referenced in path must be registered to the Chain Registry.
osmosis_main defaults to false (or else cite the listing rule that justifies enlisting to the Main app)

On-chain liquidity
If adding a new asset, please provide the plan for on-chain liquidity of the asset: (choose one)

[ ] The submitting team will ensure a pool will be created soon. Please hold off until further communication, which will notify of the Pool ID. (Please set the PR's status to Draft until the pool has been created)

OR

[ ] A preview link is requested for the submitting team to be able to create a pool using the Osmosis Frontend.

OR

[ ] The token is, or will be, going through a StreamSwap stream; thus, the token should be listed without requiring on-chain liquidity. A Pool ID will be provided in this PR following the stream's completion once the team has had a chance to create a pool using the earned funds.

Validation Testing
If adding or updating a chain or asset, the changes must be validated from the updated build of the Osmosis Frontend. Testers will need a small amount of tokens to validate.

[ ] Validaters can buy a small amount of this asset from Pool ID: {PROVIDE POOL ID}.
[ ] Preview build has been validated.

Thoughts on replacing your square image in the Chain Registry with a circular one so it looks more like a token (and better matches the theme on many interfaces) ?

Hello @JeremyParish69. I made a PR in the chain registry with the circular logos.


removing preview for GA

@buchananwp : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@buchananwp : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off

@buchananwp: I'm sorry - only the author of this article, @gvashishtha, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.

Hi @buchananwp - This pull request was opened in the public repo. PMs should work in the private repo, per the Microsoft Docs contributor guide. Would you make this content update in the private repo instead? You can sign off directly in a pull request in the private repo. Thank you! We'll close this PR.

@ktoliver this needs to be public. How do I move this forward?


Missing .deb package

Hi,
I try to install cyborg on Debian by fallowing your install instruction, but the deb package for the UI is missing.

Hello,
You can find the latest deb package under the "Actions" tag on Github.
I have reuploaded the deb package on the release page.
Regards


[Doc] Update LDAP Doc

close #13454

Codecov Report

Merging #13507 (340496e) into dev (5a9cb7e) will decrease coverage by 0.02%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##                dev   #13507      +/-   ##
============================================
- Coverage     39.60%   39.58%   -0.02%
+ Complexity     4356     4352       -4
============================================
  Files          1097     1097
  Lines         41157    41127      -30
  Branches       4714     4695      -19
============================================
- Hits          16299    16279      -20
+ Misses        23048    23039       -9
+ Partials       1810     1809       -1

Impacted Files
Coverage Δ

...er/master/dispatch/host/assign/RandomSelector.java
77.77% <0.00%> (-5.56%)
:arrow_down:

...erver/master/processor/queue/TaskEventService.java
75.00% <0.00%> (-5.36%)
:arrow_down:

...org/apache/dolphinscheduler/remote/utils/Host.java
42.55% <0.00%> (-2.13%)
:arrow_down:

...dolphinscheduler/remote/future/ResponseFuture.java
81.96% <0.00%> (-1.64%)
:arrow_down:

...hinscheduler/plugin/alert/script/ScriptSender.java
70.58% <0.00%> (-1.64%)
:arrow_down:

...e/dolphinscheduler/remote/NettyRemotingClient.java
51.38% <0.00%> (-1.39%)
:arrow_down:

...cheduler/plugin/alert/dingtalk/DingTalkSender.java
34.13% <0.00%> (-0.78%)
:arrow_down:

...rver/master/runner/task/BlockingTaskProcessor.java
75.86% <0.00%> (-0.55%)
:arrow_down:

...inscheduler/plugin/registry/etcd/EtcdRegistry.java
50.69% <0.00%> (-0.35%)
:arrow_down:

.../dolphinscheduler/plugin/task/datax/DataxTask.java
36.62% <0.00%> (-0.26%)
:arrow_down:

... and 17 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

@zhongjiajie Yeah, it's works in 3.1.x


Correctly trap errors/failures through the Operation plugin framework

Is your feature improvement request related to a problem? Please describe.
The operations plugin publishes its own “EXECUTING” and “SUCCESS” notifications to the topic “c8y/s/us” using SmartREST templates 501 & 503 respectively.   But unlike sm-plugins, it appears to ignore the exit code of the custom plugin script.   This means that every custom operation - whether successful or not - is registered as successful by a Cumulocity tenant.
Describe the solution you'd like
Ideally, the operations plugins would behave the same as the sm-plugins:  Trapping exit codes other than “0” and mapping the output of stderr to the “Failure reason” field of the original operation object in c8y.
Describe alternatives you've considered
An alternative would be to return to the methodology implied in the current documentation, where the plugin doesn’t generate any SmartREST responses, but instead relies on the plugin script to take care of notifying Cumulocity.   See below…
Additional context
The functionality currently described in the documentation (which is different that what is implemented) is that the custom script should take care of generating success/failure notifications:
https://thin-edge.github.io/thin-edge.io/html/tutorials/supported_operations.html
“””
In this example we want thin-edge.io to pick up a message on specific topic and execute the command on the device, our topic is c8y/s/ds. We also know that the message we expect is going to use SmartRest template 511 and our plugin is located in /etc/tedge/operations/command. Then we need to add the configuration to the file (/etc/tedge/operations/c8y/c8y_Command):
[exec]
topic = "c8y/s/ds"
on_message = "511"
command = "/etc/tedge/operations/command"
And now the content of our command plugin:
#!/usr/bin/sh
mosquitto_pub -t c8y/s/us -m 501,c8y_Command
OUTPUT=$(echo $1)
mosquitto_pub -t c8y/s/us -m 503,c8y_Command,"$OUTPUT"
This simple example will execute the command echo $1 and send the result back to the cloud
“””

On reflection, I think that returning to to the documented behaviour is the more scalable/future-proof option...
Consider the situation where a child device is listening to the "c8y/s/ds" or "c8y/s/dc" topics, looking for a custom Operation that is supported by both thin-edge.io and the child device:

The custom plugin on thin/edge will be triggered for all messages (regardless of whether thin/edge is the target device).  So the custom plugin running on thin-edge.io will have to examine the SmartREST payload to determine if the Operation is intended for it, or the child device.
If the Operation is targetted at the child device, it must do nothing - including NOT sending an EXECUTING response to the platform - and trust that the child device will respond appropriately to the Operation.

I think the only way to accomplish this is to make EXECUTING, FAILED and SUCCESS responses the responsibility of the custom operation script, and not generated by thin/edge based on the outcome of the script.

I didn't see this before I created a similar ticket. #1603
I suspect there will not be a one-size-fits-all solution when it comes to who is responsible for updating the operation status.
But maybe first a bit of background about plugins and some of the goals of tedge.
Currently there are two approaches to writing a custom plugin like the c8y_Command handler:
Option 1: Service based plugin
The service base plugin has an always running service, and tedge only triggers a signal via a custom defined interface (e.g. DBUS, REST, file-based queue etc.)
Advantages

Can handle unexpected errors such as OOM killer (but still relying on each plugin to implement the same logic)

Disadvantages

More complex and takes longer to implement
Wasteful with resources as it is always running even when there is no operation

Option 2: Script based plugin
The plugin is only launched when an operation is received. Once the operation action is completed, the plugin process exits.
Advantages

Uses less memory because it is only run on demand
Easy to implement

Disadvantages

Can't resume an already in process operation if it is killed by the OOM Killer or if the device is restarted unexpectedly

Though one of the goals we are trying to achieve is to make writing a robust agent easier. And this means that we don't just push the "harder to implement" aspects on the plugin authors.
So some of the design goals would be to:

Provide common mechanisms (state persistence, resuming interrupted operations etc.)
Abstract cloud interactions from the plugins so that plugins remain cloud agnostic
Don't always assume that plugin authors know the cloud implementation details and do the right thing.

Though the your point regarding the scalability aspect is very important (especially when it comes to child devices). So I think we will still have be open to special cases when the plugin knows better than tedge, but this interaction could be abstracted to still achieve the "agnostic cloud" goal.

I guess another option for the "Script-based plugin" is for thin/edge to only trigger the script if the SmartREST device_id matches thin/edge's id.   Your point about plugins remaining cloud agnostic is an important consideration, and I don't know how this would play with operations (or their equivalent) generated by platforms other than C8y (Azure etc.) - e.g. whether they are smart enough to identify the target device in the payloads they send...
Another alternative, of course, is to make the response handling behaviour configurable throught the config file in /etc/tedge/operations/<whatever>.

Yes I would probably opt for the configurable option to make it more flexible.
There are already some steps underway looking at how to handle the dispatching of operations based on the target device, so that the wrong device does not get invoked.


Error when generating the results document

generateResultsDocument(
results,
outputFolder,
docTemplate = "EHDEN",
authors=authors,
databaseId = databaseId,
databaseName = databaseName,
databaseDescription = databaseDescription,
smallCellCount = smallCellCount,
silent = FALSE
)
Error in order(df_t1$COUNT, decreasing = TRUE) :
  argument 1 is not a vector

I was able to run the cmdInspection() and generate the results. I ran this for marketscan and verified that the results were generated correctly. Now I am trying to generate the report and immidiately I encounter this error.
log_cdmInspection.txt

did u solve the issue? I have the same problem


Toggle field and CSS issue

I have problem with toggle field with CSS output like this:
Kirki::add_field('behold-basic', [
    'type' => 'toggle',
    'settings' => 'show_header_top_bar_on_scroll',
    'label' => esc_html__('Pokaż pasek górny przy przewijaniu', 'behold-basic'),
    'section' => 'header_top_bar',
    'default' => '1',
    'priority' => 10,
    'transport' => 'auto',
    'output' => [
        [
            'element'       => '.on_scroll .l-header-nav-contacts',
            'property'      => 'max-height',
            'value_pattern' => '0',
            'exclude'       => [ true, 1, '1', 'true' ]
        ],
        [
            'element'       => '.on_scroll .l-header-nav-contacts',
            'property'      => 'border',
            'value_pattern' => 'none',
            'exclude'       => [ true, 1, '1', 'true' ]
        ],
        [
            'element'       => '.on_scroll .l-header-nav-contacts',
            'property'      => 'max-height',
            'value_pattern' => '999px',
            'exclude'       => [ false, 0, '0', 'false' ]
        ],
        [
            'element'       => '.on_scroll .l-header-nav-contacts',
            'property'      => 'border',
            'value_pattern' => '1px solid',
            'exclude'       => [ false, 0, '0', 'false' ]
        ],
    ],
]);

the problem is 'max-height' attribute. When toggle is on it should be "999px" and it is, but when Is off, should be "0" and this is working only on preview. When I reload site only "border: none" is added. Max-height isn't overwriting by other CSS either. What could be wrong?

I haven't tested this but looking at your code I'd try using '0px' instead of '0' for the max-height value.
I vaguely remember seeing something like that months ago, I think that should do the trick.
There's a check somewhere that checks if the value is empty and only prints CSS for settings that have a value. PHP sometimes considers 0 as an empty value depending on how you do the actual checking, so that may be the cause. If you use 0px that is a non-numeric string so it's not considered "empty".
If this fixes your issue let me know and I'll mark this ticket as a bug so I can fix the 0 value comparison in the next update.

Confirmed the 0px fix does work.
I think the issue could be fixed by replacing:
https://github.com/kirki-framework/module-css/blob/96b59f65100233a59ac049341c4e871a2e1600fe/src/CSS/Output.php#L108
with:
if ( isset( $output['value_pattern'] ) && strlen( $output['value_pattern'] ) && is_string( $output['value_pattern'] ) ) {

I checked this one and the empty check really doesn't do anything...
If no value_pattern is defined, then it falls-back to $ which is not an empty string.
If a user adds an empty string then we have to assume it's by choice.
I removed the check entirely (didn 't replace it with strlen, this should be OK now.


Conntrack: Handle TCP and UDP connections and support TCP_FIN

Distinguish TCP and UDP connections.
Implemented all TCP flags (TCP_FIN included).
Replaced techcrunch.pcap for lamernews.pcap.
Can pass a pcap file as argument.
Refactored tests.

This patch implements #4 and #5.

How to run:
input.pcap
$ sudo ./snabb snsh apps/conntrack/main.lua apps/conntrack/tests/input.pcap
Results written at: /tmp/output.pcap
ConntrackApp:report
Total connections (UDP): 95
Total connections (TCP) (opened): 5
Total connections (TCP) (closed): 5
Total packets: 871
Total packets (UDP): 465
Total packets (TCP): 406

udp.pcap
$ sudo ./snabb snsh apps/conntrack/main.lua apps/conntrack/tests/udp.pcap
Results written at: /tmp/output.pcap
ConntrackApp:report
Total connections (UDP): 15
Total connections (TCP) (opened): 0
Total connections (TCP) (closed): 0
Total packets: 35
Total packets (UDP): 35
Total packets (TCP): 0


Is it possible to detect the calendar has been changed by using gesture

The Calendar Scroll example is buttons, so you can use buttons to switch the calendar view and then trigger actions to update information on the calendar.
https://github.com/GGJJack/SwiftUICalendar#calendar-scroll
But in this case, if the user tries to swipe the calendar, there is no way to detect this gesture and do related actions. Is there any way to achieve this? Thank you!

Thanks for the answer! Thank you :)


[Concurrency] Allow nonisolated to prevent global actor inference.

Implement changes proposed by https://github.com/swiftlang/swift-evolution/pull/2560.

[ ] Investigate if there is a better route to stop types nested inside a nonisolated type from inferring non-isolated context.

Resolves rdar://119628202.

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test


Release latest version on Central

The latest version Version 3.21, December 2015 wasn't released on Central.
http://central.maven.org/maven2/tw/edu/ntu/csie/libsvm
3.17/  29-Aug-2013 02:36
For java projects it's easier to fetch from Central than from GH.
Thanks!

+1

@davido @datumbox maybe you can work together for this: https://github.com/datumbox/libsvm
:)

The Datumbox Machine Learning framework uses libsvm. Given that @cjlin1 does not publish the library on Maven, I always prepare a mavenized version as soon as a new release becomes public. Both version 3.21 and 3.22 are available on Maven: https://search.maven.org/#search|gav|1|g%3A"com.datumbox" AND a%3A"libsvm"

Nice! @datumbox any luck making @cjlin1 accept a pull request? :)

I have set up the project with all the required pom files here: https://github.com/datumbox/libsvm
Nevertheless I'm not sure if a pull request makes sense in this case. This is because @cjlin1 won't be able to publish under com.datumbox groupid. I think the proper way to go it to create his own groupid, sign up with sonatype and be able to publish on maven central repo.
At any case I agree that it would be way better if the author of the project actually produces one official release on maven repo, rather than me or anyone else produce "unofficial" releases.

We can do that if it's not too complicated. Can someone give me the instructions for doing that? Thanks

Hey @cjlin1
thanks for your response.
We need to add some files to mavenize the libsvm project in order to publish to Maven Central (via Sonatype). I would propose, that we send you a PR with the related pom.xml, which is needed for that step.
In addition, some steps on Sonatype need to be conducted (see https://central.sonatype.org/pages/ossrh-guide.html):

Create a JIRA Account
Create a Ticket to claim the namespace / groupid tw.edu.ntu.csie.libsvm or tw.edu.ntu.csie or something else like com.github.cjlin1 / com.github.cjlin1.libsvm for the project.
After the ticket is processed, we are ready for deployment on Sonatype
You will need a GPG Key to sign the resulting JAR artifacts (we can explain this in the related PR)

@datumbox Do you the time to provide a related PR? If not, I can conduct this as well.

@cjlin1 thanks for looking into it. It may help: Gerrit Code Review project has in depth documentation how to do it: [1].
[1] https://github.com/GerritCodeReview/gerrit/blob/master/Documentation/dev-release-deploy-config.txt

Thanks. Before I do anything let me ask a question. I recall that
some time ago my student came close to do this, but we faced an issue
that because the current repository were not maintained by us
(we were not the one putting 3.17 there), we couldn't really do the
release (or some permission issue I forgot). I think we contacted
the person but failed to get a reply. Do you expect
we face the same problem now?
rz writes:

Hey @cjlin1
thanks for your response.
We need to add some files to mavenize the libsvm project in
order to publish to Maven Central (via Sonatype). I would
propose, that we send you a PR with the related pom.xml, which
is needed for that step.
In addition, some steps on Sonatype need to be conducted (see
https://central.sonatype.org/pages/ossrh-guide.html):

Create a JIRA Account
Create a Ticket to claim the namespace / groupid
tw.edu.ntu.csie.libsvm or tw.edu.ntu.csie or something else
like com.github.cjlin1 / com.github.cjlin1.libsvm for the
project.
After the ticket is processed, we are ready for deployment
on Sonatype
You will need a GPG Key to sign the resulting JAR artifacts
(we can explain this in the related PR)

@datumbox Do you the time to provide a related PR? If not, I
can conduct this as well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the
thread.*

Thanks for the reply @cjlin1
If the Sonatype Repository for tw/edu/ntu/csie/libsvm already exists, it might be a problem. However, the guys from Sonatype can handle such a situation, because you can proof, that you are the original author of libsvm. Or they will ask some additonal question in the issue tracker,
An alternative would be to use com.github.cjlin1 / com.github.cjlin1.libsvm as the groupId, which is not yet taken.

It's always best if the owner of the library releases official versions rather than relying on others maintaining forks. :)

+1.

Create a JIRA Account

Well I got a problem even for this step. Apparently
the student handled this matter registered an account
under my name before
https://issues.sonatype.org/browse/OSSRH-27464
and it seems he/she has been granted the permission
(though we then didn't finish it)
I don't even remember who were assigned to do this then.
On sonatype what's the way to send someone a message?
I need to get the account back.. Thanks

Create a Ticket to claim the namespace / groupid
tw.edu.ntu.csie.libsvm or tw.edu.ntu.csie or something else
like com.github.cjlin1 / com.github.cjlin1.libsvm for the
project.
After the ticket is processed, we are ready for deployment
on Sonatype
You will need a GPG Key to sign the resulting JAR artifacts
(we can explain this in the related PR)

@datumbox Do you the time to provide a related PR? If not, I
can conduct this as well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the
thread.*

On sonatype what's the way to send someone a message?

the way we communicate with the guy is to leave a message on a issue. But to leave an account on a issue, and claim an account back, you need account first. maby create a second account and claim the first one is you, and when ut assigned to you, close the second?

On sonatype what's the way to send someone a message?

the way we communicate with the Sonatype guys is to leave a message on an issue and ask for the help. But to leave a message on an issue, and claim an account back, you need account first. May be create a second account and claim the first one is actually your account, and when it assigned to you, close the second account?

I agree with that. I would open an ticket... this is the fastest way to communicate with them.

Many thanks. I filed a support request. Let's see how it goes.
rz writes:

    On sonatype what's the way to send someone a message?

the way we communicate with the Sonatype guys is to leave a
message on an issue and ask for the help. But to leave a
message on an issue, and claim an account back, you need
account first. May be create a second account and claim the
first one is actually your account, and when it assigned to
you, close the second account?

I agree with that. I would open an ticket... this is the
fastest way to communicate with them.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the
thread.*

It seems, that they have responded very quickly :) - https://issues.sonatype.org/browse/OSSRH-45008
Thank you very much for pushing this forward @cjlin1

Yes, they responded. But what does
"I've granted your cjlin1 user the appropriate permissions."
mean? I don't think they have given the account
"cjlin" back to me (tried to sign up with it but they
still said the account exists)
It seems they just allowed the account "cjlin1" (regerested
yesterday) to work on the libsvm
maven release? If so, probably I should ignore the account issue
now and proceed to the next step? What do you think?
Thanks
rz writes:

It seems, that they have responded very quickly :) -
https://issues.sonatype.org/browse/OSSRH-45008
Thank you very much for pushing this forward @cjlin1
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the
thread.*

Hey @cjlin1 ,
imho, that means, that they have granted your account cjlin1 the permissions to publish under tw.edu.ntu.csie (if I get the groupID in the first tickets correct).
I think, you can proceed with mavenizing the project now. Let us know, if you need some support on doing this.

After the ticket is processed, we are ready for deployment
on Sonatype
You will need a GPG Key to sign the resulting JAR artifacts
(we can explain this in the related PR)

So getting GPG key seems to be my next step. But
the guide mentioned by you is down now.
https://central.sonatype.org/pages/ossrh-guide.html
So I plan to follow
https://help.ubuntu.com/community/GnuPrivacyGuardHowto
to generate GPG key. Let me know if you see any problem.
But then I don't know how to publish the key as
http://central.sonatype.org/pages/working-with-pgp-signatures.html
is also down
After that, what's next? it seems I need to upload
files in
https://github.com/cjlin1/libsvm/pull/129/files
to sonatype?
Exactly how to do that?
In
https://github.com/cjlin1/libsvm/pull/129/files
svm.java is removed. Does this mean they will generate
it using svm.m4?
why do we need .gitignore?
Thanks

@datumbox Do you the time to provide a related PR? If not, I
can conduct this as well.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the
thread.*

Hey @cjlin1
the website is indeed down atm. I think, that it will be available again soon.
To answer some of your questions:
The svm.java is generated from the .m4 file in line 69ff and added to the resulting source file.
You should also consider to change
<java-version>11</java-version>

to
<java-version>8</java-version>

to maintain compatibility with older environments. I guess, that a lot of people still depend on Java 8.
Related to the process to publish a release artifact:

You need to get the current project mavenized by applying (most of, but not all) changes in the PR you mentioned.
You need to conduct the release via Maven. The files will then be uploaded via Maven to Sonatype into a "Staging"-Repository. Afterwards, some automatic checks will be conducted by Sonatype. If they pass, you can "promote" the artifact as a release (via the Web-UI of Sonatype).
.gitignore is not mandatory here, but Maven will generate some files, which shouldn't be pushed into a Git-Repository.

You need to get the current project mavenized by applying
(most of, but not all) changes in the PR you mentioned.

Do you mean I clone a copy of libsvm and apply the patch?
But I think only java code is needed?

You need to conduct the release via Maven. The files will
then be uploaded via Maven to Sonatype into a

OK. But how to upload?? Is this described on the page (which is now
down)

"Staging"-Repository. Afterwards, some automatic checks
will be conducted by Sonatype. If they pass, you can
"promote" the artifact as a release (via the Web-UI of
Sonatype).

.gitignore is not mandatory here, but Maven will generate
some files, which shouldn't be pushed into a
Git-Repository.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the
thread.*

Hello @cjlin1 ,
Related to your questions above:
You need to

(1) checkout libsvm from Github
(2) apply the changes from above
(3) push the changes to GitHub (so you do not have to repeat them for the next release again)
(4) build it via Maven  (this step requires a JDK + Maven on your local PC) with the activated Maven Profile release-sign-artifacts. This step will automatically upload the artifacts to the "Staging Repository" in Sonatype.
(5) If the checks in the "Staging Repository" on Sonatype pass, you can promote the artifacts as a release. This step is conducted in the Web-UI of Sonatype.

Steps (1) to (4) need manual intervention on your local PC.
I can support with the steps mentioned above, if you like. For this purpose, I will send you a mail to your institutional mail address.

@cjlin1 Apologies for the late response, it's been a busy week.
I think @rzo1 did an awesome job answering your questions but just to be safe I added a couple of comments on my original PR for all the things that need to change. I also turned on the "allow edits from maintainers" feature so that you can push your changes on the PR if you want.

Many thanks..  I have been in contact with @rzo1 via emails for
details.. I have granted him the permission to publish,
so he will handle some details subsequently. Thanks
Vasilis Vryniotis writes:

@cjlin1 Apologies for the late response, it's been a busy week.
I think @rzo1 did an awesome job answering your questions but
just to be safe I added a couple of comments on my original PR
for all the things that need to change. I also turned on the
"allow edits from maintainers" feature so that you can push
your changes on the PR if you want.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the
thread.*

Good morning,
3.23 is now available via Maven Central under the official groupID of the Dept. of Computer Science & Information Engineering of the National Taiwan University.
        <dependency>
            <groupId>tw.edu.ntu.csie</groupId>
            <artifactId>libsvm</artifactId>
            <version>3.23</version>
        </dependency>

I think, we can close the issue now.
Best,
rzo1

Thanks!

Good morning,
3.24 is now available via Maven Central under the official groupID of the Dept. of Computer Science & Information Engineering of the National Taiwan University.
        <dependency>
            <groupId>tw.edu.ntu.csie</groupId>
            <artifactId>libsvm</artifactId>
            <version>3.24</version>
        </dependency>

Note, it will take some more time till all mirrors are in sync.
Changelog as usual: https://www.csie.ntu.edu.tw/~cjlin/libsvm/log
Best,
rzo1

@rzo1 Thanks for the heads up. I tried updating the dependencies of Datumbox Framework and it seems that the mirrors are not in sync. Any change you could confirm that the release was indeed completed successfully? Typically syncing does not take so much long.
Thanks a lot in advance!

Good catch! Sync should now be on the way!

It works! :) Thanks for making it available.

Good morning,
3.25 is now available via Maven Central under the official groupID of the Dept. of Computer Science & Information Engineering of the National Taiwan University. It will take some time to sync as I jsut released the artifact on Sonatype.
        <dependency>
            <groupId>tw.edu.ntu.csie</groupId>
            <artifactId>libsvm</artifactId>
            <version>3.25</version>
        </dependency>

Best,
rzo1


How do you use this

I would love to use this, I have a raspberry pi did you use the uart on a raspberry pi or did you use a usb to serial adapter from Napco?
I am just wondering also what kind of hardware you ran this on and what JDK just to maybe start trying to integrate this to work with my alarm panel.
Hope to hear from you soon.
Michael
@poflynn

Oh gosh, this is very old code ;-).And even when it was new code it was super ugly ;-).
First off, for my panel at least, I had to buy some extra hardware, namely a "PCI-MINI Interface" like this https://www.jmac.com/Napco_PCI_MINI_p/NAPCO-PCIMINI.htm https://www.napcosecurity.com/media/pdfs/PCI-MINI_WI767.pdf
I recall that also required a new ROM chip for the panel to support the PCI-MINI. But once I had those in place and the correct passcode set I could simply call the servArm class to arm the panel, servDisarm to disarm it etc. The code did actually work BTW although it is such a mess it might be hard to reverse engineer.
What JDK? Sun's, Java 4 if I recall. Good luck!

I do have a pci mini interface already, but it runs on a really old dell laptop from the early 2000's that runs the quick loaer so I was wondering if a napco serial to usb adapter would work, since I think the serial is 12 volts, because I want to replace that laptop.  That laptop is going to die some time this decade.  What kind of computer did you use to run it?  Do you think that I could use a raspberry pi to make it work?

I would imagine the Napco USB adapter would work but I can't be certain. You could also buy a USB to RS232 adapter which would definitely work. Lastly I'm sure a Pi would work just fine as long as it has an RS232 port. My original plan a million years ago was to jam some little computer in there and have it talk to my wifi, this was the days before the Pi existed, the Pi would be perfect for that. If you ever get anything going do let me know.

I will definitely let you know, but I am currently finding out that the Napco usb to serial is the adapter I need to use, because I think the standard adapters are regular 5v serial and not 12v serial. Also I think the chipset matters.


Using read handles, not fake.

Why we should give up fake handle:
https://docs.google.com/document/d/1T2MpmhmeSJfn42ZNCUJcJZsMpuuWH3nrVqNJgtY5SJw/edit
For this PR:

Generate VulkanStateHandleTable to store those pair of VkHandle and
wrapper. It's similar with VulkanStateTable. The different is
VulkanStateHandleTable uses mutex. VulkanStateTable uses mutex
outside the class.

GetWrapper replaces reinterpret_cast<Wrapper*>

wrapper.handle replaces reinterpret_cast(wrapper)

Remove the code that changed handle to wrapper address, and Add the
new wrapper to VulkanStateHandleTable

Rmove data from VulkanStateHandleTable when the wrapper is deleted.

It doesn't need trasnform functnions between real and fake handles
any longer. Remove GetWrappedHandle and UnwrapHandles.

One issue: Multithreading DestroyHandle and CreateHandle. Wolfenstein II The New Colossus use multithreading to destroy massive handle and create massive handle at the same time. When it destroys a handle, and then create the same type new handle, the new handle value could be the same with the destroyed one.  It causes conflict when it removes the destroyed one and adds new one to the same map by multithreading. After I added mutex in vulkan_state_table_base.h, the issue was better, but it still has 10% chances to cause conflict. The conflict handle seems always to be VkRenderPass. Maybe I should add mutex in somewhere else.
The following PR: Rename UnwrapStructHandles, HandleUnwrapMemory, and everything about unwrap. They would look confused if we don't use unwrapped handles any longer. They should rename to something like, Copy Pointer Memory.

CI gfxreconstruct build queued with queue ID 23636.

CI gfxreconstruct build # 2427 running.

CI gfxreconstruct build # 2427 failed.

CI gfxreconstruct build queued with queue ID 23655.

CI gfxreconstruct build # 2428 running.

CI gfxreconstruct build # 2428 failed.

CI gfxreconstruct build queued with queue ID 23673.

CI gfxreconstruct build # 2429 running.

CI gfxreconstruct build # 2429 failed.

CI gfxreconstruct build queued with queue ID 23695.

CI gfxreconstruct build # 2430 running.

CI gfxreconstruct build # 2430 failed.

CI gfxreconstruct build queued with queue ID 25614.

CI gfxreconstruct build # 2436 running.

CI gfxreconstruct build # 2436 failed.

CI gfxreconstruct build queued with queue ID 25823.

CI gfxreconstruct build # 2438 running.

CI gfxreconstruct build # 2438 failed.

CI gfxreconstruct build queued with queue ID 26165.

CI gfxreconstruct build # 2439 running.

CI gfxreconstruct build # 2439 failed.

CI gfxreconstruct build queued with queue ID 26192.

CI gfxreconstruct build # 2440 running.

CI gfxreconstruct build queued with queue ID 26206.

CI gfxreconstruct build queued with queue ID 26208.

CI gfxreconstruct build # 2442 running.

CI gfxreconstruct build # 2442 failed.

I wonder if the error is in the application's external synchronisation and
it just happens to affect us worse than it does the downstream driver.
It would be an interesting experiment to change the shared lock at the top
of our vk(Create|Delete)RenderPass() into an exclusive lock and see if that
makes any difference.
If that does make the errors go away we could add envars to either make all
vkcreate/vkdestroy functions exclusively locked or make a list of pairs of
then exclusively locked as a workaround for buggy apps, effectively
serialising their use of create/destroy from multiple threads.
On Sat, 25 Feb 2023, 03:06 Locke Lin, @.***> wrote:

@.**** commented on this pull request.
In framework/encode/vulkan_state_table_base.h
https://github.com/LunarG/gfxreconstruct/pull/995#discussion_r1117855568
:

template

bool InsertEntry(typename Wrapper::HandleType                      handle,

                Wrapper*                                          wrapper,

                std::map<typename Wrapper::HandleType, Wrapper*>& map)

{

   const std::lock_guard<std::mutex> lock(mutex_);

   const auto&                       inserted = map.insert(std::make_pair(handle, wrapper));

   return inserted.second;

}

template
bool RemoveEntry(const typename Wrapper::HandleType handle, std::map<typename Wrapper::HandleType, Wrapper*>& map)
{

   const std::lock_guard<std::mutex> lock(mutex_);

   return (map.erase(handle) != 0);

}

template
Wrapper* GetWrapper(typename Wrapper::HandleType handle, std::map<typename Wrapper::HandleType, Wrapper*>& map)
{

   const std::lock_guard<std::mutex> lock(mutex_);

   auto                              entry = map.find(handle);

   return (entry != map.end()) ? entry->second : nullptr;

}

template
const Wrapper* GetWrapper(typename Wrapper::HandleType                            handle,

                         const std::map<typename Wrapper::HandleType, Wrapper*>& map) const

{

   const std::lock_guard<std::mutex> lock(mutex_);

   auto                              entry = map.find(handle);

   return (entry != map.end()) ? entry->second : nullptr;

}

mutable std::mutex mutex_;

Can anyone help me to use mutex lock correctly?
—
Reply to this email directly, view it on GitHub
https://github.com/LunarG/gfxreconstruct/pull/995#pullrequestreview-1314441309,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AZDANZ6ZWBKZEWM2V77LAB3WZFZM5ANCNFSM6AAAAAAVADQBOA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

I wonder if the error is in the application's external synchronisation and it just happens to affect us worse than it does the downstream driver.
It would be an interesting experiment to change the shared lock at the top of our vk(Create|Delete)RenderPass() wrappers and perhaps our vkCmdBeginRenderPass() wrapped into an exclusive lock and see if that makes any difference *.
The general principal here would be to start with the widest lock possible and then experiment with narrowing the scope down if you need to until it covers only the region of conflict. The widest scope for the lock might not just be this function pair but it might actually be generating the change for all Vulkan functions that we intercept. I mean injecting  auto api_call_lock = VulkanCaptureManager::AcquireExclusiveApiCallLock(); into all of them to make our layer effectively one thread at a time as a first step before narrowing down on the problem.
If that does make the errors go away we could add envars to either make all vkcreate/vkdestroy functions exclusively locked or make a list of pairs of then exclusively locked as a workaround for buggy apps, effectively serialising their use of create/destroy from multiple threads.
It might also be possible to narrow the scope of the lock back down by flipping AcquireExclusiveApiCallLock calls back to AcquireSharedApiCallLock incrementally until only the relevant ones remain exclusive, and then debugging/eyeballing through to find ways to bring the exclusive api lock or another lock even tighter, inside the body of our code.
* Like this:
diff --git a/framework/generated/generated_vulkan_api_call_encoders.cpp b/framework/generated/generated_vulkan_api_call_encoders.cpp
index ae64beff..80253f53 100644
--- a/framework/generated/generated_vulkan_api_call_encoders.cpp
+++ b/framework/generated/generated_vulkan_api_call_encoders.cpp
@@ -2520,7 +2520,7 @@ VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass(
     const VkAllocationCallbacks*                pAllocator,
     VkRenderPass*                               pRenderPass)
 {
-    auto api_call_lock = VulkanCaptureManager::AcquireSharedApiCallLock();
+    auto api_call_lock = VulkanCaptureManager::AcquireExclusiveApiCallLock();

     bool omit_output_data = false;

@@ -2560,7 +2560,7 @@ VKAPI_ATTR void VKAPI_CALL DestroyRenderPass(
     VkRenderPass                                renderPass,
     const VkAllocationCallbacks*                pAllocator)
 {
-    auto api_call_lock = VulkanCaptureManager::AcquireSharedApiCallLock();
+    auto api_call_lock = VulkanCaptureManager::AcquireExclusiveApiCallLock();

     CustomEncoderPreCall<format::ApiCallId::ApiCall_vkDestroyRenderPass>::Dispatch(VulkanCaptureManager::Get(), device, renderPass, pAllocator);

CI gfxreconstruct build queued with queue ID 28914.

CI gfxreconstruct build # 2452 running.

CI gfxreconstruct build # 2452 failed.

CI gfxreconstruct build queued with queue ID 29107.

CI gfxreconstruct build # 2453 running.

CI gfxreconstruct build # 2453 failed.

CI gfxreconstruct build # 2455 running.

Add option GFXRECON_ENABLE_EXCLUSIVE_LOCK to set all Vulkan Capturing function using GetEnableExclusiveLock(). It actually avoid thread conflict for Create/Destroy. When conflicts happens, we can see logs,  like Create a duplicated Handle, because it couldn't remove the destroyed one from the map in time.
But crash still happens about one every 30 times. This link includes the crashes data, like .gfxr, .jsonl, VVL(Validation Layers info).txt. Replay could re-generate the issue. The crash reason is that it didn't run vkBeginCommandBuffer before vkCmdBeginRenderPass. I feel this might be the application's issue. We couldn't fix it.
https://drive.google.com/drive/folders/1Om2M5YT1R76yxRInB0ThgoZn3bTenTb2

CI gfxreconstruct build # 2455 failed.

CI gfxreconstruct build queued with queue ID 29522.

CI gfxreconstruct build # 2456 running.

CI gfxreconstruct build # 2456 failed.

CI gfxreconstruct build queued with queue ID 29554.

CI gfxreconstruct build # 2457 running.

CI gfxreconstruct build # 2457 failed.

CI gfxreconstruct build queued with queue ID 29624.

On Ubuntu 22.04.1 I tried this:
python3 ./scripts/build.py -a x64 -c debug

And saw build errors in the encode unit tests*. I think that framework/encode/test/main.cpp needs updating. Not sure how CI missed it.
*
In file included from /home/andrew/dev/andrew-lunarg-gfxreconstruct-2/framework/encode/test/main.cpp:27:
/home/andrew/dev/andrew-lunarg-gfxreconstruct-2/framework/encode/test/main.cpp: In function ‘void C_A_T_C_H_T_E_S_T_0()’:
/home/andrew/dev/andrew-lunarg-gfxreconstruct-2/framework/encode/test/main.cpp:58:35: error: ‘GetWrappedHandle’ is not a member of ‘gfxrecon::encode’; did you mean ‘CreateWrappedHandle’?
   58 |         REQUIRE(gfxrecon::encode::GetWrappedHandle(buffer) == kBufferHandle);
      |                                   ^~~~~~~~~~~~~~~~
In file included from /home/andrew/dev/andrew-lunarg-gfxreconstruct-2/framework/encode/test/main.cpp:27:
/home/andrew/dev/andrew-lunarg-gfxreconstruct-2/framework/encode/test/main.cpp:58:35: error: ‘GetWrappedHandle’ is not a member of ‘gfxrecon::encode’; did you mean ‘CreateWrappedHandle’?
   58 |         REQUIRE(gfxrecon::encode::GetWrappedHandle(buffer) == kBufferHandle);
      |                                   ^~~~~~~~~~~~~~~~
/home/andrew/dev/andrew-lunarg-gfxreconstruct-2/framework/encode/test/main.cpp:58:35: error: ‘GetWrappedHandle’ is not a member of ‘gfxrecon::encode’; did you mean ‘CreateWrappedHandle’?
   58 |         REQUIRE(gfxrecon::encode::GetWrappedHandle(buffer) == kBufferHandle);
   ...

CI gfxreconstruct build # 2460 running.

CI gfxreconstruct build # 2460 failed.

CI gfxreconstruct build queued with queue ID 29705.

CI gfxreconstruct build # 2461 running.

CI gfxreconstruct build # 2461 failed.

CI gfxreconstruct build queued with queue ID 29743.

CI gfxreconstruct build queued with queue ID 29747.

CI gfxreconstruct build queued with queue ID 29763.

@andrew-lunarg  Thank you. Fixed framework/encode/test/main.cpp issue.

CI gfxreconstruct build # 2465 running.

CI gfxreconstruct build # 2465 failed.

CI gfxreconstruct build queued with queue ID 30280.

CI gfxreconstruct build # 2469 running.

CI gfxreconstruct build # 2469 failed.

Does the commit Add option ENABLE_EXCLUSIVE_LOCK mostly fix the threading issue all by itself? If so, perhaps we should give it its own PR and integrate it as a workaround for games that trigger threading issues irrespective of the approach taken to handle wrapping/management.

Looking at the main part of the PR, I see one map per handle type, all protected by a single shared mutex. I can imagine some other ways of structuring things with different tradeoffs:

One map for all handle types with one mutex.

All the map instantiations are from a handle to a pointer and so will make bit-identical data layouts in memory and machine code. Some template get/set wrappers could hide the casting required to share the map.
Avoids duplication of template generated code for one map type per handle/wrapper type. We would only instantiate one map type <uint64_t,void*> not 43 duplicates.
This may have unforeseen (by me) interactions with code already using these maps though.

Many maps: one for each handle types but with one mutex per map for lower contention.

Multiple threads can access the different maps without getting in each others way.

Even with one map object per handle type it should be possible to instantiate only a single map<uint64_t,void*> type and have two level accessors: type erased that take the lock and call the map functions, and templated type safe wrappers that inline and are optimised away.
These are just thoughts and I don't know this part of the code as well as others in the team so I understand that I may be missing key points for why things are the way they are, especially since we already had multiple maps. In fact some of this may be out of scope of the PR, relating to how the code was already structured.

CI gfxreconstruct build queued with queue ID 30860.

CI gfxreconstruct build # 2475 running.

CI gfxreconstruct build # 2475 failed.

@andrew-lunarg

Creating an individual PR for threading issue is a good idea. But we still have an issue for Wolf II. I can't identify if it's related to threading.
There a ReadMe about the issue in this shared folder.
https://drive.google.com/drive/u/3/folders/1Om2M5YT1R76yxRInB0ThgoZn3bTenTb2

Every type handles has its own map because I'm afraid of the different type handles could have the same handle value.

According to vkspec:
non-dispatchable handles may encode object information directly in the handle rather than acting as a reference to an underlying object, and thus may not have unique handle values.

https://registry.khronos.org/vulkan/specs/1.3-extensions/html/vkspec.html#fundamentals-objectmodel-overview
If it's sure that active handle value of different handle type won't duplicate, I'm ok to use one map for the whole handles.

According to vkspec

My bad then. Having multiple maps is a good solution.

CI gfxreconstruct build queued with queue ID 35065.

https://github.com/LunarG/gfxreconstruct/issues/1027
Moved a commit about thread and crash issue to this issue.

CI gfxreconstruct build # 2500 running.

CI gfxreconstruct build # 2500 failed.

CI gfxreconstruct build queued with queue ID 35562.

CI gfxreconstruct build # 2504 running.

CI gfxreconstruct build # 2504 failed.

CI gfxreconstruct build queued with queue ID 35628.

CI gfxreconstruct build # 2507 running.

CI gfxreconstruct build # 2507 passed.

CI gfxreconstruct build queued with queue ID 35887.

CI gfxreconstruct build # 2508 running.

CI gfxreconstruct build # 2508 passed.

CI gfxreconstruct build queued with queue ID 37959.

CI gfxreconstruct build # 2514 running.

CI gfxreconstruct build # 2514 passed.


chore: promote test15 to version 0.0.20

chore: promote test15 to version 0.0.20
this commit will trigger a pipeline to generate the actual kubernetes resources to perform the promotion which will create a second commit on this Pull Request before it can merge

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To complete the pull request process, please assign q1323829945
You can assign the PR to them by writing /assign @q1323829945 in a comment when ready.
The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

OWNERS

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

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

Test name
Commit
Details
Rerun command

verify
fc60c75c0d996f2c97458b52dcf33f2a4c06de05
link
/test verify

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


hide-text doesn't hide text ?

I'm not receiving any errors when using the Mixin, but it doesn't seem to work either.
Sass 3.3.6 (Maptastic Maple)
Bourbon 4.0.1
I just upgraded from Bourbon 3.2.X  so I'm guessing that something has changed since ? Do I have to roll my own hiding mixin now ?
It's compiling now to:
.belly-button {
  overflow: hidden; }
  .belly-button:before {
    content: "";
    display: block;
    width: 0;
    height: 100%; }

.selector:pseudo is obsolete CSS2. Please use CSS3 instead.
What the hack is that ? Where did the normal hide-text method go ?

Looks like it doesn't work with the a element. Actually I had to wrap the element which uses the hide-text mixin inside an a tag.

AFAIK... a display inline:block solves this.

hide-text has gone through lots of refinements, so these issues are highly dependent on the version of Bourbon you are using.
Certain elements will indeed need to be made block-level for this to work.

I see. Tried adding display: inline-block and it works. Thanks for the support :smile:

There was a PR to update the docs, but I was late in getting it merged. Hope it helps in the future


Improve JavaDocs

I don't know if any of these changes are wanted (or welcome) or whatever - but I thought I'd PR them anyway. The only thing changed is formatting - there are no behavioural differences.
I've only just noticed that this repo is now under the SpongePowered umbrella. Does that mean it's now being actively maintained by Sponge - or did zml just want to hand over the responsibility?
If "improvement" PRs (as opposed to bug fixes) aren't going to be considered, then I'll stop submitting them & just maintain my own fork :) It would be nice to know the status - I know this probably isn't a priority for the Sponge team.
Introduce consistent formatting in Maven poms
The current poms have inconsistent formatting and indentation in some places. I rearranged & fixed indentation where it was appropriate to do so - without any change in build behaviour.
Use the correct "slashstar" style when generating license headers
The current "javadoc" style is reserved for JavaDocs - and is not meant to be used for license headers.
IntelliJ gives this suggestion/warning

:-1:
/**
 * Configurate
 * Copyright (C) zml and Configurate contributors
 *
 * and so on...
 */

:+1:
/*
 * Configurate
 * Copyright (C) zml and Configurate contributors
 *
 * and so on...
 */

JavaDoc (and other misc) improvements
These are all still WIP.
I feel like better documentation would go a long way in making configurate easier to use and understand.
The only breaking change is...
The method signature of TransformAction has been changed from
Object[] visitPath(SingleConfigurationTransformation.NodePath inputPath, ConfigurationNode valueAtPath)

to
Object[] visitPath(NodePath inputPath, ConfigurationNode valueAtPath)

SingleConfigurationTransformation is a package private class - it was previously impossible to implement the interface as a result.

Ok - good to hear :)
I think this PR is ready now - would welcome any comments or further suggestions.

@Meronat look good to you?

@kashike Will review this and the other PRs when I return home tonight.