protoype for forceOneShardAttributeValue

Scope & Purpose
Backport of https://github.com/arangodb/arangodb/pull/14701
Enterprise companion PR: https://github.com/arangodb/enterprise/pull/745
(Enterprise Edition only): added query option forceOneShardAttributeValue to explicitly set a shard key value that will be used during query snippet distribution to limit the query to a specific server in the cluster.
This query option can be used in complex queries in case the query optimizer cannot automatically detect that the query can be limited to only a single server (e.g. in a disjoint smart graph case).
When the option is set to the correct shard key value, the query will be limited to the target server determined by the shard key value. It thus requires that all collections in the query use the same distribution (i.e. distributeShardsLike attribute via disjoint SmartGraphs).
Limiting the query to a single DB server is a performance optimization and may make complex queries run a lot faster because of the reduced setup and teardown costs and the reduced cluster-internal traffic during query execution.
If the option is set incorrectly, i.e. to a wrong shard key value, then the query may be shipped to a wrong DB server and may not return results (i.e. empty result set). It is thus the caller's responsibility to set the forceOneShardAttributeValue correctly or not use it.
The forceOneShardAttributeValue option will only honor string values. All other values as well as the empty string will be ignored and treated as if the option is not set.
If the option is set and the query satisfies the requirements for using the option, the query's execution plan will contain the "cluster-one-shard" optimizer rule.

[ ] :hankey: Bugfix (requires CHANGELOG entry)
[x] :pizza: New feature (requires CHANGELOG entry, feature documentation and release notes)
[x] :fire: Performance improvement
[ ] :hammer: Refactoring/simplification
[x] :book: CHANGELOG entry made

Backports:

[x] No backports required

Related Information

[x] Docs PR: TO BE DONE
[x] Enterprise PR: https://github.com/arangodb/enterprise/pull/745

Testing & Verification

[x] The behavior in this PR was manually tested
[x] This PR adds tests that were used to verify all changes:

[x] Added new integration tests (shell_server, in enterprise repository)

Jenkins run green


Revert "Fix SJK download url used by jmx blackbox tests"

This reverts commit 3dee52937b4cd16b301b706a962807d0ce3bac24.
Sonatype just had temporarily hickups, I've confused sonatype wrongly with bintray. 🤦

retest this please
jenkins succeeded but GH didn't recognize it probably due to some general issues at GH


Decouple reference

Are there any references to literature or case studies explaining why/how/when would decoupling healthchecks from the service makes sense?
https://github.com/dvgica/healthful/blob/1ac9584f3178489ee4f86472b81390d8c5e25480/README.md?plain=1#L15
At first glance it seems counterintuitive so more information would help new potential users make an informed decision.

Hmm I don't have any references off-hand. Note that I'm not suggesting decoupling health checks from a service, rather decoupling them from any servers the service contains.

At first glance it seems counterintuitive

Can you elaborate on why?
Maybe you're suggesting that a health check is more accurate if it's served by the same HTTP server that the service uses for other things? If so, there are a number of reasons why that isn't necessarily true or a good idea:

What if the service has multiple HTTP servers, or one HTTP server and one Thrift server? The overall service health is then some combination of the health of all those different servers. I've found this situation to be quite frequent. Coupling the health check to just one of the service's servers doesn't make sense in this case.
What if the service doesn't have an HTTP server at all? This is also pretty frequent (e.g. some kind of queue consumer)

Additionally, I think that serving a health check via the same server as your regular service endpoints could be downright problematic. What if the server exposes its endpoints publicly? You typically wouldn't want to expose health check endpoints to the world.

I've updated the README with some of this reasoning, hope that helps.


Delete .github/workflows directory

I removed this directory already - if you sync it should disappear on your end as well


disableScroll not working?

is still actual?

Sorry, this was a duplicate, opened by mistake. Didn't know how to close/remove it.


sql: accept more input formats for date types

PR: https://github.com/cockroachdb/cockroach/pull/15177

We have closed this issue because it is more than 3 years
old. If this issue is still relevant, please add a comment and re-open
the issue. Thank you for your contribution to CockroachDB docs!


"Visit Website" button in corner of collection splash image.

Thinking the easiest way to represent this in the MD would be
![splash](https://s3.amazonaws.com/wgbhstocksales.org/blahblahblah.png)
[splash](http://www.pbs.org/wgbh/nova/)

(Probably don't require link, but on the other side, error if there is a link but no image?)

deployed.


Prometheus returned no PercentileCPULoader metrics with the simple strategy

Describe the bug
When running krr version 1.8.3 (the windows binary) with the simple stratey, I can get the memory recommendations but not the CPU one.
I get those logs "Prometheus returned no PercentileCPULoader metrics with the simple strategy".
On the version 1.4.1, the cpu recommendations (and the memory one) work.
I have all the requested metrics.
To Reproduce
Steps to reproduce the behavior:

Open powershell
Port forward prometheus svc : kubectl port-forward -n monitoring svc/prometheus-server 80:80
Run .\krr.exe simple -p http://localhost:80 --memory_buffer_percentage=5
Logs such as "Prometheus returned no PercentileCPULoader metrics for Deployment" appear
Get this table:

Expected behavior
I expect that the CPU requests and limits are caclulated
Screenshots

Are you interested in contributing a fix for this?
Yes
Desktop (please complete the following information):

OS: Windows Server 2022 Datacenter Azure Edition
KRR Version 1.8.3

Additional context
It works fine with KRR 1.4.1, even though the memory recommendation given are not the same as the version 1.8.3.

Hello,
Yes looks better now thanks

Happy to hear it, thanks for the update.
On Mon, Jun 10, 2024 at 2:53 PM Dzenan Cindrak @.***>
wrote:

Hello,
Yes looks better now thanks
—
Reply to this email directly, view it on GitHub
https://github.com/robusta-dev/krr/issues/280#issuecomment-2158140656,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADYUB32E7NCC4UJKARQYQDZGWHSNAVCNFSM6AAAAABHZYHCNWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCNJYGE2DANRVGY
.
You are receiving this because you commented.Message ID:
@.***>


Implement fee payouts to block generators

Currently, transaction fees are destroyed, as they are not explicitly rewarded to anybody in the network, and simply vanish after tx acceptance.

this issue is obsolete since the fees are now handled within the fee contract


fetch*Branch + SSH: support private key in non-default locations

As of GIB 3.9.0, the embedded JGit automatically picks up ~/.ssh/id_rsa (and  id_dsa).
GIB does not (yet) provide any configuration to use any other key.

I decided to go with the default JGit/JSch/SSH-config approach, so nothing really changed except that our DelegatingCredentialsProvider now doesn't kick in for SSH connections anymore.
The documentation now reflects the differences between HTTP(S) and SSH.

PS: I decided against introducing a new config for a custom key because passing this to JGit/JSch seems rather awkward: https://stackoverflow.com/questions/13686643/using-keys-with-jgit-to-access-a-git-repository-securely


[fix] correct Nightly-build, clean up ci files.

Description
Generally hard-coding complete directories in a CI runner is a no-no.
OpenCL runtime is necessary for windows dpc testing in sklearnex
clean up windows_build.bat and add alternate install directory
remove unnecessary files which have been duplicated
create an environment variable to minimize maintenance

/azp run CI

/intelci: run

issues in docker images solved in #2922

Example of the Nightly-build which is successful https://github.com/icfaust/oneDAL/actions/runs/11072698466


[documentation] Documentation of "last" parameter default doesn't match code

In the current version of the README, the last option is documented as having a default of true:

Property
Type
Default
Description

last
boolean
true
Whether the stroke is complete.

However, in the code - getStrokeOutlinePoints and getStrokePoints - the actual default of the last option (assigned to the isComplete variable) is set to false.
I'm not sure what the intention is here, but to preserve the behaviour of the library it might be best to leave the default as false and update the documentation to match.

Fixed!


change log level dynamically

user can retrieve the log level by HTTP GET http:://localhost:15021/logging
$ curl http://<IP_ADDRESS>:15021/logging
current log level is info
$

also can set a new level by HTTP POST to  http:://localhost:15021/logging
//set to debug
$ curl  -X POST http://<IP_ADDRESS>:15021/logging -d "newlevel=debug"
set new log level to debug
$
//check debug is effective
$ curl http://<IP_ADDRESS>:15021/logging
current log level is debug
$
//debug log is visible now
2022-12-05T15:23:00.950902Z DEBUG hyper::proto::h1::role: setting h1 header read timeout timer
2022-12-05T15:23:00.950989Z DEBUG hyper::proto::h1::io: parsed 5 headers
2022-12-05T15:23:00.951009Z DEBUG hyper::proto::h1::conn: incoming body is empty
2022-12-05T15:23:00.951089Z DEBUG hyper::proto::h1::io: flushed 129 bytes

//set to info
$ curl  -X POST http://<IP_ADDRESS>:15021/logging -d "newlevel=info"
set new log level to info

//set to warn
$ curl  -X POST http://<IP_ADDRESS>:15021/logging -d "newlevel=warn"
set new log level to warn

//set to trace
$ curl  -X POST http://<IP_ADDRESS>:15021/logging -d "newlevel=trace"
set new log level to trace

//trace log is visible now
2022-12-05T15:28:25.318270Z TRACE hyper::proto::h1::conn: Conn::read_head
2022-12-05T15:28:25.318437Z TRACE hyper::proto::h1::io: received 0 bytes
2022-12-05T15:28:25.318498Z TRACE hyper::proto::h1::io: parse eof
2022-12-05T15:28:25.318553Z TRACE hyper::proto::h1::conn: State::close_read()
2022-12-05T15:28:25.318594Z DEBUG hyper::proto::h1::conn: read eof
2022-12-05T15:28:25.318637Z TRACE hyper::proto::h1::conn: State::close_write()
2022-12-05T15:28:25.318679Z TRACE hyper::proto::h1::conn: State::close_read()
2022-12-05T15:28:25.318714Z TRACE hyper::proto::h1::conn: State::close_write()
2022-12-05T15:28:25.318765Z TRACE hyper::proto::h1::conn: flushed({role=server}): State { reading: Closed, writing: Closed, keep_alive: Disabled, allow_half_close: true }
2022-12-05T15:28:25.318873Z TRACE hyper::proto::h1::conn: shut down IO complete

//invalid debug level "debugs" cannot be set
$ curl  -X POST http://<IP_ADDRESS>:15021/logging -d "newlevel=debugs"
failed to change log level invalid param: unable to find newlevel in request

//invalid "newlevesssl" key cannot be set
$ curl  -X POST http://<IP_ADDRESS>:15021/logging -d "newlevesssl=debug"
failed to get the new log level, invalid param: unable to find newlevel in request
$

echo to #165

@KfreeZ: PR needs rebase.

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

@KfreeZ: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
b27f99f652cba1e879409b574f88035227d1732d
link
true
/test test

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

@KfreeZ: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
1a5943ce8f657dc1351e51205fd8e938114c2350
link
true
/test test

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

@KfreeZ: PR needs rebase.

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

@KfreeZ: PR needs rebase.

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

@KfreeZ: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
ce109031c0668ddcec022d22eb35ec233945f0a1
link
true
/test test

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

@KfreeZ: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

test_ztunnel
ca44d5cdf480404724330b6a5a1779e96167c25e
link
true
/test test

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


Fix metrics validation

Fix metrics validation

Add resource attributes to the reconciler and reconciler-manager
that simulate those produced by the otel-collector. These uses
the downward API and the env resourcedetection processor, instead
of the k8s resourcedetection processor because it avoids needing
to grant APi permissions to the otel-collector.
Expose resource attributes as metric tags on the otel-collector
for the Prometheus exporter, since Prometheus doesn't support
aggregating resource attributes. This allows using the
k8s_deployment_name metric tag to identify metrics by reconciler
name. It also allows grouping and filtering metrics by sync kind,
name, and namespace.
The following attributes were added:

k8s.pod.name
k8s.pod.namespace
k8s.pod.uid
k8s.pod.ip
k8s.node.name
k8s.deployment.name
configsync.sync.kind
configsync.sync.name
configsync.sync.namespace

Expose resource attributes for GCE metadata using the
GCE resourcedetection processor.
Add the status tag to last_sync_timestamp metric.
This allows metrics validation to wait until after sync is complete,
instead of just using last_apply_timestamp, which doesn't include
source errors. This reduces flakiness of metric validation.
Add safety role to e2e tests. Mono-repo mode has the same
safety-check for cluster-scoped resources as it does for
namespaces. This change adds a safety Role to the e2e tests
so that tests that create more than one cluster resource will
clean up safely by default, without the need for test-specific
cleanup code.
Add nt.DefaultRootSyncObjectCount to make it easier to count how
many resources are expected for the declared_resources metric.
Add nt.ValidateNotFoundOrNoMatch to fix a race condition in the
TestAddUpdateRemoveClusterScopedCRDV1 tests.
Add DefaultMetricsTimeout to the nomostest config to shorten the
wait time to 1m from 6m.
Log all metrics recorded and received for debugging.
Don't send sync metrics if the status hasn't changed.
Fix TestDontDeleteAllNamespaces by fixing the declared_resources
metric to record the right number of resources, instead of zero,
when all namespace deletion validation fails.

I doubt the tests will pass this time. I probably messed up some of the math somewhere, since i was modifying it all manually and having to read the code to verify my guesswork.
I'm also not sure if even the expected numbers will pass tests, because they aren't actually getting filtered by reconciler name as intended.

/retest

/test kpt-config-sync-presubmit-e2e-mono-repo

/test kpt-config-sync-presubmit-e2e-mono-repo

/retest

/retest
Wow. Finally down to 1 error that's not a metrics validation error!
    nt.go:995: kubectl get pods -n config-management-system:
        NAME                                  READY   STATUS             RESTARTS   AGE
        admission-webhook-5c79b59f86-2rdwk    0/1     CrashLoopBackOff   6          12m
        admission-webhook-5c79b59f86-jtwtm    0/1     CrashLoopBackOff   6          12m
        reconciler-manager-7c599bfd8d-h2p69   1/2     CrashLoopBackOff   6          12m

Looks like a catastrophic error from one of the kind clusters. Probably a flake.

/retest

/hold
Extracted small PR for GCE/GKE resource attributes: https://github.com/GoogleContainerTools/kpt-config-sync/pull/114

Extracted small PR to change when sync metrics are sent: https://github.com/GoogleContainerTools/kpt-config-sync/pull/115

Extracted metrics logging for debugging: https://github.com/GoogleContainerTools/kpt-config-sync/pull/117

Extracted declared_resources fix: https://github.com/GoogleContainerTools/kpt-config-sync/pull/118

Extracted LastSyncTimestamp change to https://github.com/GoogleContainerTools/kpt-config-sync/pull/119

/test kpt-config-sync-presubmit-e2e-mono-repo-test-group2

/test kpt-config-sync-presubmit-e2e-mono-repo-test-group2

/unhold

/retest


Problems running ontop container in AWS as ECS task

Hi all,
I wanted to launch an ontop docker container as an ECS task in AWS but the creation of the tasks fails with an exception. The scenario I use for testing is the university-complete1 scenario which comes with the tutorials. The setup is the following

I create an ec2 instance containing the h2 database
I create an ecs service containing the task (task definition is attached to this ticket)
The ecs task is launched but terminates with an exception after some seconds.

image is from: ontop/ontop-endpoint:latest -- which I needed to move to my on ECR repository
Checking the connection from my container to the h2 database with nmap shows that the oprt and address are avaible
Also connecting from a test server to the h2 database using sqlline works.
Any idea what is going wrong and how to solve the issue is welcome.
thanks Christian
Attachment 1) contains the contents of the input and jdbc folders which are mounted into the container
university-complete.zip
Attachment 2) contains the log output of the failing task
log-events-ontop-university-complete.log.txt
Attachment 3) contains the ECS task description of the ontop endpoint
ontop-ecs-task-definition.json.txt

Hi Christian
"IO Exception: null [90028-196]" looks like an H2 error message indicating a corrupt database. I wonder if it is caused by the relative path in the connection URL (jdbc.url=jdbc:h2:tcp://<IP_ADDRESS>:9092/../university-session1).
Best
Roman

Hi Christian
"IO Exception: null [90028-196]" looks like an H2 error message indicating a corrupt database. I wonder if it is caused by the relative path in the connection URL (jdbc.url=jdbc:h2:tcp://<IP_ADDRESS>:9092/../university-session1).
Best
Roman

Hi Roman,
thanks for your response. This helped me to solve the problem. Finally it was a bug in the database URL generation and a missing baseDir assignment in h2. So everyting i working fine now and I will close this ticket.
best, Christian

Hi Roman,
thanks for your response. This helped me to solve the problem. Finally it was a bug in the database URL generation and a missing baseDir assignment in h2. So everyting i working fine now and I will close this ticket.
best, Christian


⚠ Bofrost.at has degraded performance

In 86ffcc1, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1872 ms

Resolved: Bofrost.at performance has improved in 8f71d3a.


TESTS: add test for unreachable container

Did you intentionally submit this PR to my fork?

yes, it will be a good addition PR #585 since it shows a scenario in which the current nginx-proxy fails and would be fixed by your changes.
Tests also describe the behavior nginx-proxy will have with yours changes: i.e.: the new HTTP 502 error when calling a virtualhost with no upstream up.

Ah OK, so this was just for triggering a Travis test with the patch and the tests?


Display "No matching resources found." after selecting "Sign in to Azure"

OS: Win10
Azure Resource Group Build Version: 20230215.10
Azure Storage Build Version: v0.15.1
Repro Steps:

Sign out.
Back to Explorer -> Right-click on a folder in the explorer and select "Deploy to Static Website via Azure Storage...".
Click "Sign in to Azure...".

Check whether succeeds to display "Signing in to Azure...".

Expect:
Succeeds to display "Signing in to Azure...".

Actual:
Display "No matching resources found".

More Info:

This issue also reproduces when clicking "Create an Azure Account.../Create an Azure for Student Account...".
This issue also reproduces when executing command "Azure Storage: Deploy to Static Website via Azure Storage..." from command palette.
This issue also reproduces when executing command "Azure: Sign In with Device Code" but don't paste the code into the webpage and go to deploy.

@v-chenzha can you verify that this is now fixed?

@alexweininger  Verified this issue on the latest resource group build 20230219.1, it doesn't reproduce for now.


Release Google.Cloud.Domains.V1 version 2.1.0

Changes in this release:
This is primarily a promotion of the previous beta, which includes REST transport support. No API surface changes; just dependency updates.

Created release for Google.Cloud.Domains.V1-2.1.0


Update auth, dynamodb, s3, sqs to 2.17.89

Updates

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

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

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

labels: library-update, early-semver-patch, semver-spec-patch

Superseded by #768.


How to order by multiple columns ?

How to implement order by column1, column2 in node-orm2 ?

Try passing an array to .order


Implement one-shot history reports

The design for this should be:

The VEN includes a METADATA_HISTORY_USAGE report in its oadrRegisterReport message
The VTN stores this report under server.registered_reports[ven_id].
In order to trigger a oadrCreateReport, the vtn owner calls server.create_report(ven_id: str, report_id: str, r_id: str, sampling_interval: timedelta, report_back_duration: timedelta).
The VEN will receive this message on its next poll, will then call the function to retrieve the historic data, and package it up and send it off into a oadrUpdateReport message.

@stan-janssen if I understand this correctly the VEN stores the report data and the VTN does not?

The VEN will receive this message on its next poll, will then call the function to retrieve the historic data, and package it up and send it off into a oadrUpdateReport message.

So the VEN should have some db running collecting telemetry data from the building, where upon request from VTN owner, the VEN (not VTN) will provide the historical telemetry data ...
For some reason I thought the VTN would have a db running collecting data (report values) from VEN's

I made a report on VEN side for HISTORY_USAGE:
  client.add_report(callback=collect_Energy_value,
                    resource_id = 'resource1',
                    measurement = 'RealEnergy',
                    data_collection_mode = 'incremental',
                    report_specifier_id =None,
                    r_id = None,
                    report_name='HISTORY_USAGE')

and I use a handler for registering the report (which works okay with TELEMETRY_USAGE registration) on server side:
async def on_register_report(ven_id, resource_id, measurement, unit, scale, min_sampling_interval, max_sampling_interval):
  print(f"Called on register report {ven_id}, {resource_id}, {measurement}, {unit}, {scale}, {min_sampling_interval}, {max_sampling_interval}")
  callback = partial(on_update_report, ven_id=ven_id, resource_id=resource_id, measurement=measurement)
  sampling_interval = min_sampling_interval
  return callback, sampling_interval

and seems the server is not able to register HISTORY_USAGE and will respond with an empty report_requests:
Responding to oadrRegisterReport with a oadrRegisteredReport message: {'report_requests': [], 'vtn_id': 'TH_VTN', 'ven_id': 'DUT_VEN', 'response': {'request_id': '44dfb810-9bde-4a26-a663-71e58e88fb55', 'response_code': 200, 'response_description': 'OK'}, 'request_id': '54697425-8d6a-4f98-a809-0697e4fb1e0d'}.

Could you please elaborate more on how should I make a on_register_report handler that supports both TELEMETRY_USAGE  and HISTORY_USAGE?

HISTORY_USAGE reports are not yet supported in OpenLEADR, as mentioned in the documentation for historic reports.
Only the reports with TELEMETRY_USAGE are propagated to your on_register_report handlers. The reason for this is that the on_register_report handler returns the reports which you want to receive at set intervals, which (to my mind) is usually not the case with the HISTORY_USAGE reports.
The HISTORY_USAGE report definitions that the VEN registers with the VTN are still available in the server.registered_reports property though, but you can't do anything automated with them at the moment.
This issue was intended to track the progess on me implementing a convenient way for you te request these historic reports from the VEN, but I haven't gotten to that yet.

Actually the VEN is the party that initiates reporting, and it would request registering the data_collection_mode = 'full' and report_name = HISTORY_USAGE. By this the VEN indicates how far it can go for HISTORY_USAGE considering its constraint.  The easiest way (I think) of implementing HISTORY_USAGE is modifying lines 102-121 in report_service.py and include METADATA_HISTORY_USAGE in the accepted report names by VTN. Then VEN can reply back with a full report and includes a historical data for a period of time that was registered before. The suggesting modification could be:
            elif (report['report_name'] == 'METADATA_TELEMETRY_USAGE' or report['report_name'] == 'METADATA_HISTORY_USAGE'):
                if mode == 'compact':
                    results = [self.on_register_report(ven_id=payload['ven_id'],
                                                       resource_id=rd.get('report_data_source', {}).get('resource_id'),
                                                       measurement=rd['measurement']['description'],
                                                       unit=rd['measurement']['unit'],
                                                       scale=rd['measurement']['scale'],
                                                       min_sampling_interval=rd['sampling_rate']['min_period'],
                                                       max_sampling_interval=rd['sampling_rate']['max_period'])
                               for rd in report['report_descriptions']]
                    results = await utils.gather_if_required(results)
                elif mode == 'full':
                    results = await utils.await_if_required(self.on_register_report(report))
            elif report['report_name'] in ('METADATA_HISTORY_GREENBUTTON'):
                if payload['ven_id'] not in self.registered_reports:
                    self.registered_reports[payload['ven_id']] = []
                report['report_name'] = report['report_name'][9:]
                self.registered_reports[payload['ven_id']].append(report)
                report_requests.append(None)
                continue

Your thoughts?


stdProcess - Use CreateProcess() instead of Shell()

Currently we are using Shell() for simplicity. We have built some (bodge) 64-bit code as follows:
Private Type SECURITY_ATTRIBUTES
    nLength              As Long
    lpSecurityDescriptor As LongPtr
    bInheritHandle       As Long
End Type

Private Type STARTUPINFO
    cb              As Long
    lpReserved      As String
    lpDesktop       As String
    lpTitle         As String
    dwX             As Long
    dwY             As Long
    dwXSize         As Long
    dwYSize         As Long
    dwXCountChars   As Long
    dwYCountChars   As Long
    dwFillAttribute As Long
    dwFlags         As Long
    wShowWindow     As Integer
    cbReserved2     As Integer
    lpReserved2     As LongPtr
    hStdInput       As LongPtr
    hStdOutput      As LongPtr
    hStdError       As LongPtr
End Type

Private Type PROCESS_INFORMATION
    hProcess    As LongPtr
    hThread     As LongPtr
    dwProcessId As Long
    dwThreadId  As Long
End Type

Public Enum ECreationFlags
    CREATE_BREAKAWAY_FROM_JOB = &H1000000
    CREATE_DEFAULT_ERROR_MODE = &H4000000
    CREATE_NEW_CONSOLE = &H10&
    CREATE_NEW_PROCESS_GROUP = &H200&
    CREATE_NO_WINDOW = &H8000000
    CREATE_PROTECTED_PROCESS = &H40000
    CREATE_PRESERVE_CODE_AUTHZ_LEVEL = &H2000000
    CREATE_SECURE_PROCESS = &H400000
    CREATE_SEPARATE_WOW_VDM = &H800&
    CREATE_SHARED_WOW_VDM = &H1000&
    CREATE_SUSPENDED = &H4&
    CREATE_UNICODE_ENVIRONMENT = &H400&
    DEBUG_ONLY_THIS_PROCESS = &H2&
    DEBUG_PROCESS = &H1&
    DETACHED_PROCESS = &H8&
    EXTENDED_tStartupInfo_PRESENT = &H80000
    INHERIT_PARENT_AFFINITY = &H10000
    PRIORITY_CLASS_NORMAL = &H20&
    PRIORITY_CLASS_IDLE = &H40&
    PRIORITY_CLASS_HIGH = &H80&
End Enum

Public Enum EStartupFlags
    STARTF_FORCEONFEEDBACK = &H40&
    STARTF_FORCEOFFFEEDBACK = &H80&
    STARTF_PREVENTPINNING = &H2000&
    STARTF_RUNFULLSCREEN = &H20&
    STARTF_TITLEISAPPID = &H1000&
    STARTF_TITLEISLINKNAME = &H800&
    STARTF_UNTRUSTEDSOURCE = &H8000&
    STARTF_USECOUNTCHARS = &H8&
    STARTF_USEFILLATTRIBUTE = &H10&
    STARTF_USEHOTKEY = &H200&
    STARTF_USEPOSITION = &H4&
    STARTF_USESHOWWINDOW = &H1&
    STARTF_USESIZE = &H2&
    STARTF_USESTDHANDLES = &H100&
End Enum

Private Declare PtrSafe Function CreateProcess Lib "kernel32" Alias "CreateProcessA" ( _
       ByVal lpApplicationName As String, _
       ByVal lpCommandLine As String, _
       ByRef lpProcessAttributes As SECURITY_ATTRIBUTES, _
       ByRef lpThreadAttributes As SECURITY_ATTRIBUTES, _
       ByVal bInheritHandles As Long, _
       ByVal dwCreationFlags As Long, _
       ByRef lpEnvironment As Any, _
       ByVal lpCurrentDirectory As String, _
       ByRef lpStartupInfo As STARTUPINFO, _
       ByRef lpProcessInformation As PROCESS_INFORMATION) As Long

Private Declare PtrSafe Function SuspendThread Lib "kernel32" (ByVal hThread As LongPtr) As Long
Private Declare PtrSafe Function ResumeThread Lib "kernel32" (ByVal hThread As LongPtr) As Long
Private Declare PtrSafe Function CloseHandle Lib "kernel32.dll" (ByVal hObject As LongPtr) As Long
Private Declare PtrSafe Function DebugActiveProcess Lib "kernel32" (ByVal dwProcessId As Long) As Long
Private Declare PtrSafe Function DebugActiveProcessStop Lib "kernel32" (ByVal dwProcessId As Long) As Long
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Function WinApi_CreateProcess(strCommandLine As String, Optional strCurrentDirectory As String = vbNullString) As Long
    If strCurrentDirectory = vbNullString Then
        strCurrentDirectory = ThisWorkbook.Path
    End If
    Dim sap As SECURITY_ATTRIBUTES: sap.nLength = Len(sap)
    Dim sat As SECURITY_ATTRIBUTES: sat.nLength = Len(sat)
    Dim si As STARTUPINFO: si.cb = Len(si)
    si.wShowWindow = STARTF_USESHOWWINDOW
    Dim pi As PROCESS_INFORMATION
    Debug.Print Err.LastDllError ' 0 => ERROR_SUCCESS
    Dim dwResult As Long: dwResult = CreateProcess(vbNullString, strCommandLine, sap, sat, 0, PRIORITY_CLASS_NORMAL, 0, strCurrentDirectory, si, pi)
    WinApi_CreateProcess = pi.dwProcessId
End Function

which appears to be able to create cmd.exe processes correctly, however any application with UI like mspaint.exe, explorer.exe, notepad.exe and calc.exe are all unopenable using this function...
Need to figure out what we are missing and integrate this into stdProcess

Related to https://github.com/sancarn/stdVBA/issues/17


Add "make" as an alias for "Makefile" (#2883)

Closes #2883, add make as an alias for Makefile
Changes
Add the alias and include it in SUPPORTED_LANGUAGES.md
Checklist

[ ] Added markup tests, or they don't apply here because...
[X] Updated the changelog at CHANGES.md
[ ] Added myself to AUTHORS.txt, under Contributors

@tripleee thanks!


Remove Runner reference

https://t3n.zendesk.com/agent/tickets/1600392

Closing per https://t3n.zendesk.com/agent/tickets/1625329


Run editor action on save

Hi,
I was wondering if it could be possible to add an option to run an external tool on the file on save.
My use-case
I've got a markdown that I edit and a script that parses it to generate the ToC.
I'd like to run the script each time I save the file.

Use https://plugins.jetbrains.com/plugin/7177-file-watchers instead
Den 27 okt. 2017 3:58 em skrev "Cyprien Quilici"<EMAIL_ADDRESS>
Hi,
I was wondering if it could be possible to add an option to run an
external tool on the file on save.
My use-case
I've got a markdown that I edit and a script that parses it to generate
the ToC.
I'd like to run the script each time I save the file.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/dubreuia/intellij-plugin-save-actions/issues/118, or mute
the thread
https://github.com/notifications/unsubscribe-auth/ABxWR7obBr3Jxxq6GZ7kx7omNigg_Urqks5sweGSgaJpZM4QJGYd
.

I'm not exactly sure file watchers is what I'm looking for, correct me if I'm wrong but what I gathered from looking at both these plugins was that:

File watchers: is to be used when one wants to generate other files from the file that are being edited.

Typical use cases:

Less files => one CSS file
JS files => one bundle file

Save actions: is to be used when the file currently being edited should be edited further by a script

Typical use cases:

Formatting of code
Code style updates

When I try to use file watchers, the script execution triggers the file watcher which make a recursive call that crashes IntelliJ.
I was hoping save actions would not get triggered by external modifications like file watchers.

Hey @quilicicf,
This was already asked for similar purposes see #72, and #61 that was actually implemented by jetbrains. I think what you're asking fits the save-actions plugin: "user modifies file -> save-actions automatically modifies it too -> intellij saves on disk"
The problem is that I'm not going to call a random script on disk, this is a security issue (commit a settings file and a script file in a repo that uses save-actions, bam you have remote execution). I don't even know if that would work, because intellij calling a (bash?) script is probably async, so it would probably save before the script ends.
The only solutions I see for now is to implement your TOC generation directly in save-actions (nope) or call another plugin in intellij (better, but not great).
So I don't really have a solution for you, but I'm not against the idea. Probably @markiewb 's solution is your best way to go for now.
PS hey you work at restlet, say hi to jonathan :)

It looks like I'm gonna keep running the external tool by hand with a shortcut then, it's not that bad.
Thanks for taking the time to get into details!
I'm not sure if I should close this ticket or if you want to keep it open for reference, I'll let you guys see to it?
PS: Jonathan says hi too ;-)

I never realized that you could launch an external tool from Intellij... You can probably retrieve the Action with ActionManager.getInstance().getAction("ACTION ID").actionPerformed(event); so the save actions plugin could have a list of custom configurable actions to launch (ids).
I won't have time to implement that anytime soon, but it's definitely possible to do and and you can submit a PR anytime. Check out the https://github.com/dubreuia/intellij-plugin-save-actions#contributing section to get you started.

I'll get a look (not next month) thanks!

Yes, IDEA supports external tools. I guess there is also API to find and invoke the configured external tools.
The current integration of external tools is as follows

It would be great to be able to run any webstorm action. This would enable you to use the newly added prettier functionality on save.

Or any other IDE actions Ctrl + Shift + A

My tests are that of the other comments above, It feels like this is so close to being working.

I also tested RC5 for my use case, rustfmt, which is the same thing as Prettier but for Rust code.
I also have the issue that it should be run on all open files, not just the one in front.
In any case, I created the quick list, tested it from the actions menu (it works) and enabled it in Save Actions... but nothing. The quick list does not seem to be run by Save actions. This is what I see in idea.log:
2019-02-22 02:35:09,853 [ 724065]   INFO - re.component.SaveActionManager - [+] Start SaveActionManager#beforeAllDocumentsSaving
2019-02-22 02:35:09,854 [ 724066]   INFO - re.component.SaveActionManager - Unsaved documents (1): [DocumentImpl[file:///home/tobia/******.rs]]
2019-02-22 02:35:09,854 [ 724066]   INFO - re.component.SaveActionManager - Processing Project '/home/tobia/******' ****** files [FILE] mode normal
2019-02-22 02:35:09,858 [ 724070]   INFO - re.component.SaveActionManager - Filtered files [FILE]
2019-02-22 02:35:09,858 [ 724070]   INFO - re.component.SaveActionManager - Start processors (24)
2019-02-22 02:35:09,858 [ 724070]   INFO - re.component.SaveActionManager - Filtered processors [executeAction]
2019-02-22 02:35:09,859 [ 724071]   INFO - re.component.SaveActionManager - Execute command executeAction on 1 files
2019-02-22 02:35:09,859 [ 724071]   INFO - re.component.SaveActionManager - Exit processors with results [executeAction:OK]
2019-02-22 02:35:09,859 [ 724071]   INFO - re.component.SaveActionManager - End SaveActionManager#beforeAllDocumentsSaving processed 1 documents
2019-02-22 02:35:11,282 [ 725494]   INFO - re.component.SaveActionManager - [+] Start SaveActionManager#beforeAllDocumentsSaving
2019-02-22 02:35:11,283 [ 725495]   INFO - re.component.SaveActionManager - Unsaved documents (0): []
2019-02-22 02:35:11,284 [ 725496]   INFO - re.component.SaveActionManager - End SaveActionManager#beforeAllDocumentsSaving processed 0 documents

Using RC5, For me prettier is working but Fix ESLint Problems is not.

@tobia Thanks for the test I'll check it out
@blowsie When you say it's not working, do you have a stack? Or it just doesn't do anything?

No error is shown in the event log or directly in the IDE,

You can actually get more information from  ~/.IntelliJIdea<VERSION>/system/log/idea.log.

Note: make sure your IDE outputs there though (tail -F $filePath). It may be in a file suffixed with a number idea.log.2

When this will be completed, would I be able to use the google-java-format plugin as an action? :thinking:

Maybe I'll try to test this specific formater

Any updates about this ?

My Log for "Fix Eslint Problems" Action
2019-06-13 15:22:26,534 [  29359]   INFO - tellij.openapi.util.IconLoader - replace '/general/inspectionsError.svg' with '/icons/general/inspectionsError.svg'
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - [+] Start SaveActionManager#beforeAllDocumentsSaving
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - Unsaved documents (1): [DocumentImpl[file://C:/Project/layouts/default.vue]]
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - Processing Project 'C:\Project' project files [HtmlFile:default.vue] mode normal
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - Filtered files [HtmlFile:default.vue]
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - Start processors (7)
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - Filtered processors [executeAction]
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - Execute command executeAction on 1 files
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - Exit processors with results [executeAction:OK]
2019-06-13 15:22:42,312 [  45137]   INFO - re.component.SaveActionManager - End SaveActionManager#beforeAllDocumentsSaving processed 1 documents
2019-06-13 15:22:42,444 [  45269]   INFO - rationStore.ComponentStoreImpl - Saving appCachedDictionaryState took 15 ms, FindSettings took 16 ms, ScratchFileService took 16 ms
2019-06-13 15:22:42,586 [  45411]   INFO - rationStore.ComponentStoreImpl - Saving Project 'C:\Project' projectGit.Settings took 15 ms, ProjectCodeStyleConfiguration took 33 ms, RunManager took 16 ms
2019-06-13 15:22:42,623 [  45448]   INFO - mponents.impl.stores.StoreUtil - saveProjectsAndApp took 326 ms

@raydaim I won't have time to implement this in any near future, but PR are welcome.
I did the ground work for it already, you can check the branch "add_editor_action" (might be a bit old but the code is there).

I might release this in next version, even if it doesn't work for all actions. It seems some people are actually using the old old RC5 for prettier to work...

Thanks - I've been using the RC5 for prettier along with a bunch of other people I work with so this would be great :+1:

Thank you for your feedback @davecoates, I have no idea who uses what so it is always nice to know.

I second that, RC5 works great for prettier, just not ESLint

I'm also using the RC5 version while staying away from updates. So it would be great if this feature will be in the next version ❤

For 1.4 RC5 Reformat with Prettier is working but Fix ESLint Problems is not.
@dubreuia could you please include Fix ESLint Problems in upcoming 1.8.
Many thanks,

@ozum I won't have time to implement "Fix ESLint Problems", PRs welcomed.

@dubreuia if I know java, I would happily PR. Anyway, thanks for this awesome plugin. Please keep eslint in roadmap, if you have time in the future.

Can you guys help me test this version please? I've re-added editor actions in the settings, it looks good and could be released in the next 1.8.0 if it works ok for you. I've changed the order of the quick lists, so you might have to re-choose your quick list in the save action settings page.
Here is the jar: intellij-plugin-save-actions-1.8.0-RC1.zip
(it will work on 2019.x only, if you need another version I'll change the manifest version)

It Works
Plugin: 1.8.0-RC1
WebStorm: 2019.3
What
Quick List:

"Reformat with Prettier

What Not

I won't have time to implement "Fix ESLint Problems"

Not expecting this to work, but tried anyway:
Quick List

"Fix ESLint Problems"

Works for me in Pycharm 2019.3 :+1:

Ok thank you for testing guys. I'm releasing 1.8.0 this weekend.
I'll close this issue, but please reopen an issue for specific actions that doesn't work (ie @ozum for ESLint).

Confirmed working as a charm in Webstorm 2019.3, using prettier from quick lists

:clap: :tada: Thanks all

Released in 1.8.0.

@ozum I created #287

@ozum I created #287

Thanks, I added a summary to that issue for those who don't desire to read this long thread.

Since there can be multiple quicklists defined and there is only a checkbox (experimental) to enable this, how does it know what to run?

Sorry, in my theme the drop down to select the quick list wasn't very noticeable.

@rcollette Yes, I was about to tell you about the drop down. I can make it show more, I'm using the light theme which makes it more visible.
The code has been written to execute multiple quick lists but I haven't coded the UI to support that (I don't know if its useful or not).

I can't think of a use case for multiple lists.   Thanks for the UX consideration.

@dubreuia maybe you can exchange checkbox with an empty field in list. i.e. when it is empty it means no action.

Hi there,
I use Build actions feature to fix stylelint errors and it works great. But I got 1 issue. When I open my project in PhpStorm and save my changes I got error:
java.lang.IllegalArgumentException: Argument for @NotNull parameter 'action' of com/intellij/openapi/actionSystem/AnActionEvent.createFromAnAction must not be null
	at com.intellij.openapi.actionSystem.AnActionEvent.$$$reportNull$$$0(AnActionEvent.java)
	at com.intellij.openapi.actionSystem.AnActionEvent.createFromAnAction(AnActionEvent.java)
	at com.dubreuia.processors.BuildProcessor.lambda$static$4(BuildProcessor.java:84)
	at com.dubreuia.processors.SaveReadCommand.execute(SaveReadCommand.java:25)
	at com.dubreuia.core.component.Engine.lambda$processPsiFiles$5(Engine.java:81)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
	at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
	at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
	at com.dubreuia.core.component.Engine.processPsiFiles(Engine.java:82)
	at com.dubreuia.core.component.Engine.processPsiFilesIfNecessary(Engine.java:65)
	at com.dubreuia.core.component.SaveActionManager.guardedProcessPsiFiles(SaveActionManager.java:144)
	at com.dubreuia.core.component.SaveActionManager.lambda$beforeDocumentsSaving$3(SaveActionManager.java:128)
	at java.base/java.util.HashMap.forEach(HashMap.java:1336)
	at com.dubreuia.core.component.SaveActionManager.beforeDocumentsSaving(SaveActionManager.java:127)
	at com.dubreuia.core.component.SaveActionManager.beforeAllDocumentsSaving(SaveActionManager.java:112)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.util.messages.impl.MessageBusImpl.invokeListener(MessageBusImpl.java:513)
	at com.intellij.util.messages.impl.MessageBusConnectionImpl.deliverMessage(MessageBusConnectionImpl.java:142)
	at com.intellij.util.messages.impl.MessageBusImpl.doPumpMessages(MessageBusImpl.java:438)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpWaitingBuses(MessageBusImpl.java:398)
	at com.intellij.util.messages.impl.MessageBusImpl.pumpMessages(MessageBusImpl.java:388)
	at com.intellij.util.messages.impl.MessageBusImpl.sendMessage(MessageBusImpl.java:372)
	at com.intellij.util.messages.impl.MessageBusImpl.lambda$createTopicHandler$1(MessageBusImpl.java:241)
	at com.sun.proxy.$Proxy23.beforeAllDocumentsSaving(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.multiCast(FileDocumentManagerImpl.java:162)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.lambda$new$0(FileDocumentManagerImpl.java:125)
	at com.sun.proxy.$Proxy23.beforeAllDocumentsSaving(Unknown Source)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveAllDocuments(FileDocumentManagerImpl.java:311)
	at com.intellij.openapi.fileEditor.impl.FileDocumentManagerImpl.saveAllDocuments(FileDocumentManagerImpl.java:301)
	at com.intellij.ide.actions.SaveAllAction.actionPerformed(SaveAllAction.kt:20)
	at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:298)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:315)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$1.performAction(IdeKeyEventDispatcher.java:604)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$processAction$3(IdeKeyEventDispatcher.java:657)
	at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:193)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:656)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processActionOrWaitSecondStroke(IdeKeyEventDispatcher.java:517)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:472)
	at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:221)
	at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:830)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:775)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

And code is not fixed. So every time I have to go to Settings -> Tools -> External Tools and re-apply Stylelint tool. After that there is no errors and stylelint works.
Can you please check if it's 'Save Actions' issue? Thanks
PhpStorm: 2019.3
Save Actions: 1.9.0+2019.3
External tool: Stylelint

Quick lists: Force refresh -> Stylelint
Save Actions config:

Thanks @OlgaLevanova, I've created #292

A fix for #292 has been released in 2.0.0 (https://plugins.jetbrains.com/plugin/7642-save-actions/update/77136 / https://github.com/dubreuia/intellij-plugin-save-actions/releases/tag/v2.0.0)

@dubreuia  Works perfect. Thanks!

Would it be possible to pass the file path that is being saved as an input to the script that would be called by the external tools? (or to setup an environment variable with this?)
use case:
to run custom reformattings only on the saved files instead of all modified files


FAQ:  2 . 0 . 3 How do I compile Charm++?

Original issue: https://charm.cs.illinois.edu/redmine/issues/1595

update email address

Original date: 2017-07-07 19:27:31

~~https://charm.cs.illinois.edu/gerrit/#/c/2757/~~ https://github.com/UIUC-PPL/charm/commit/a7690842b6bd423ed8bfc3ea20de04ed2681d9f2


Move My Reporting Section from Portfolio to Reporting Section

1 px Divide : #0F0A19. 12px spacing top and bottom

[ ] Move My Reporting from portfolio to reporting.
[ ] Remove the top section of My reporting, the user now has a modal for claiming stake and fees.
[ ] Remove the side-out/origami menu for Portfolio

closing


This exercise can have a single creator and many contributors to make it faster

splitting folks into larger groups seemed to be better than small pairs.
I could even have only one creator, or create it myself.

Everyone could actually be a creator

Change bug-fix to be the contributors name for the branch, since there could be multiple contributors.


Google cloud documentation is outdated

I tried to use Google cloud with lithops following the current available documentation, but I found the following error:
Exception: ('project_name', 'service_account', 'credentials_path', 'region') is mandatory under 'gcp' section of the configuration

But according to Lithops documentation only 'credentials_path', 'region' are the only mandatory keys.

Which version are you using?
Currently reuired params are only Region
https://github.com/lithops-cloud/lithops/blob/73480bdb985690f4fc97eaebf9baa82bb5925fc3/lithops/storage/backends/gcp_storage/config.py#L20

I was using 2.6.
Updating to 2.7 solved the issue. I close it.


Allow obtaining client IP in authe plugin

Add X-Forwarded-For header for proxy
Add client IP in plugin request

Thanks for this PR!


Clarify what is interpretted as trust anchor for chain

This standardizes client behavior on considering the last certificate in the chain as a trust anchor, regardless if it's a root or intermediate. This means clients should use all preceding CA certificates as chain-builders or intermediates.
We do document the case where an intermediate may be issued from multiple roots, specifying that multiple chains should be provided. Another solution for a later PR could be to provide two pools, trusted and untrusted, as an alternative to chains.

Summary

Release Note

Documentation

@woodruffw jsut to check, is it expected that [gen/pb-rust/sigstore-protobuf-specs/src/generated/file_descriptor_set.bin](https://github.com/sigstore/protobuf-specs/pull/245/files#diff-2481ead977c11c843867edf07aac10bd147af87f4a2b709da3dfe06e715bba6d) is updated?

Rebased

is it expected that gen/pb-rust/sigstore-protobuf-specs/src/generated/file_descriptor_set.bin is updated?

I believe so, but CCing @tnytown to confirm 🙂


Change Serial Number (ro.serialno) on Android Virtual Device (Emulator) on Apple Silicon

Hi everyone
I am using the Android Studio Preview Version and thought, maybe this is the right place :)
I need to change the Serial Number (ro.serialno, and other IDs) of an emulated Android Device. There are not many ressources concerning that issue.
Ideas:

Change it by adb shell (setprop ro.serialno=123), but it is a read only property
Add serial number by kernel parameters (emulator -avd my_device -prop ro.serialno=123456 -no-snapshot-load), but I get a warning: WARNING: unexpected '-prop' value ('ro.serialno=123456'), only 'qemu.*' properties are supported
Change the Number by editing the emulator (or virtual device) in a hex editor. But I could not find, where it is stored

Do you have any ideas?
Environment: MacBook M1, Android 11, arm64-v8a (Api-Level 30)
Thank you very much!

Have you managed to find solution to your problem? Having the same issue and would appreciate any help.

Any update on this? I'm basically at the same point @simonhuwiler was. I tried rooting the emulator and setting the serialno via setprop and also via the kernel params, but no luck.
Would love to know if you ever solved this @simonhuwiler

@fielding Unfortunately not. I switched to a real device.


Update vscode.py with Python3 fixes

Without these changes, the code throws exceptions on 'fips gen' running under Python 3

Thanks! The new string handling is exactly why I don't like Python3 that much ;)

Yep - agreed - I don't use python that much anymore.


POJO modified in the 2nd level cache

MyBatis version

MyBatis 3.4.5
mybatis-spring 1.3.1
mybatis-ehcache-1.1.0
Spring 4.3.3

Database vendor and version
Problem discovered when using PostgreSQL 9.6,  but reproduced with H2 DB 1.4.196
Test case or example project
I created a sample maven project with 2 tests to show the problem : https://github.com/sebdavid/mybatis-cache-modified
Steps to reproduce
The problematic scenario is :

cache is empty at the beginning
begin a transaction
read an object from mapper
modify the POJO
close the transaction
read the object from mapper --> the returned version of the object is the modified one

Expected result
Step 5 should return the POJO as it is read from the mapper the first time
Actual result
The returned POJO is the one which has been modified on step 3.
Additional info
Transactions are managed by Spring with @Transactional.
In the XML mapper, I'm declaring a cache of type EhcacheCache, but the same issue occurs with the default cache (i.e. <cache />).
From what I understand : the object is written in the cache when the transaction is closed (step 4). But it seems that the POJO returned after the first read (step 2) is the same object (same reference) than the one stored in the TransactionalCacheManager (CachingExecutor, line 104 ?). So when it is modified in step 3, those modifications are stored in the cache when the transaction is committed. That is why when the object is retrieved from the cache at step 5, it is the modified object which is returned.
As the documentation states that "The cache will be treated as a read/write cache, meaning objects retrieved are not shared and can be safely modified by the caller, without interfering with other potential modifications by other callers or threads. " (http://www.mybatis.org/mybatis-3/sqlmap-xml.html#cache), I'm wondering if it is a bug or if I am missing something.
If the object already exists in the cache before the process, the steps 1 to 4 have no impact on the object stored in the cache.

I just had a look to the mybatis-spring repository, and found a similar issue reported by @honzasmuk : https://github.com/mybatis/spring/issues/219

Hi @sebdavid ,
Thank you for the report and the example project!

As the documentation states that "The cache will be treated as a read/write cache, meaning objects retrieved are not shared and can be safely modified by the caller, without interfering with other potential modifications by other callers or threads.

This is about the objects retrieved from the cache (or, more precisely, the built-in cache).
In your case, the above explanation is not applied because the POJO is modified before it is put into the cache.
If you need to modify returned objects in a transaction with 2nd level cache enabled, you may have to create a copy beforehand.

Hi,
I understand now that the rule

objects retrieved are not shared and can be safely modified by the caller

is only concerning objects retrieved from the cache (i.e. already existing in this cache). It is not a global rule which would say "when you read an object from a mapper, you will always get a different object reference than the one written in the 2nd level r/w cache".
But, something seems weird to me. I will try to explain my thoughts.
My app is split in independent layers: the service layer (business logic) and the persistence layer (MyBatis). The service layer is managing transactions and calling the mappers. From the point of view of the service layer, objects are get from the persistence layer without knowing if there is a cache enabled or not, and without knowing if the objects are retrieved from the cache or read from the DB. From the service layer, we can have two different behaviors when calling personMapper.get(...) in a transaction :

in one case the returned object can be modified: when the object is retrieved from the cache ;
in the second case it cannot, a copy must be done before the modifications : when the object is read from the DB.

This is not consistent for me : in one case we should do a copy (object not retrieved in the cache), in the other case MyBatis is doing the copy for us (object retrieved in the cache). In other words: in one case the mapper returns a reference to an object managed internally by MyBatis (to be written in the cache), and in the other case MyBatis is returning a clean copy. I would expect that the objects, written in the 2nd level r/w cache (or which are "going to be written" in the case of a transaction), are never the same than those returned by the mapper, to keep the cache independent from the rest.
The question could be : in a transaction, why couldn't we modify the object returned by the mapper when it does not exist in the cache, whereas we can modify the object returned by the same mapper when it exists in the cache?
However, if this is really the expected behavior, a copy of the objects to modify should always be performed, as you said. But then, maybe the documentation should mention the case when an object is read within a transaction: if this object is modified, a copy should be performed previously (unless it has been retrieved from the cache, but as the caller doesn't know from where the object comes, a copy should always be done).

Hi @sebdavid ,
It is reasonable that you think the behavior is inconsistent.
A possible (obvious) solution would be to return a copy of the object while storing the original object into TransactionalCache (or the other way around), but it won't be as efficient as copying in users' code because we won't be able to ignore some complex use cases (we may have to perform deep copy even when shallow copying is sufficient, for example).
Do you still think it should be handled in MyBatis side?
Or is there a better idea?
🗒Taking notes before I forget. Things to consider if we fix this.

It has to be configurable because 1) not all objects are serializable, 2) copying object can be slow and 3) there could be a solution that relies on the current behavior (is global on/off setting sufficient?).
Can we assume that the list implements Serializable?
Does it have to work with objects with lazy properties?

Cc-ing @emacarron in case I missed some history regarding this topic.

Hi guys, thank you you are looking into it. My problem in mybatis/spring#219 is mainly with (in my oppinion) bad behavior of tx rollback - the modified pojo was written into 2nd level cache even if I marked the tx as rollback-only.

Hi @harawata ,
You're right about the performance. For now, I'm doing a copy of the object in my transactionnal method, before modifying it. I implemented the clone() method on the concerned object and child objects, and I coded it by cloning only what is really necessary. Of course MyBatis cannot guess that.
But I was asking to myself : "but MyBatis is already doing copies when an object is retrieved from the cache?" and then I had a look into it.
With the default cache (<cache />), MyBatis is serializing objects to byte[], and storing this array in the cache : all the concerned objects have to implement Serializable (otherwise an exception is thrown). But, when using another cache implementation, say EhcacheCache, the mecanism can be different depending on the configuration of ehcache, and MyBatis doesn't know anything about this config. From what I saw :

either the object is serialized (readOnCopy=true, readOnWrite=true) with the prerequisite that it must implement Serializable ;
or its reference is directly put in the cache.

Something like the config of ehcache is maybe a solution, with copyOnWrite / copyOnRead :
copyOnRead would be similar to the readOnly attribute of MyBatis Cache

copyOnWrite :

if false, the behavior would be the same as currently, but the documentation has to warn the users that if any modification is performed on the object, it will be also sent to the cache ;
if true, a copy is performed. An optimization would maybe be to check if the object is implementing the Cloneable interface : if it is, the clone() method is called to do the copy; if it is not, a serialization+deserialization is performed.

But with this solution, there is a thing: currently the readOnly attribute on <cache /> is used by the default cache implementation of MyBatis. The copyOnWrite setting would have to be managed at a higher level, or globally maybe: because the copy should be done before the object is sent to the implementation.
Another additional configuration (but this is maybe a little bit out of the scope of this discussion) would be to let the user choose the wanted copy mecanism: clone, serialize (, ...?)
But then... the configuration of the cache may be weird when EhcacheCache is used. From MyBatis side, copyOnWrite would be "true" but false on the EhCache side, otherwise the copy would be done twice.

FUNK

Hi all, I found that solution can solve this problem.
public class TransactionCacheManager {
    private Map<Cache, TransactionalCache> transactionalCaches = new HashMap<Cache, TransactionalCache>();

    public void clear(Cache cache) {
        getTransactionalCache(cache).clear();
    }

    public Object getObject(Cache cache, CacheKey key) {
        return getTransactionalCache(cache).getObject(key);
    }

    public void putObject(Cache cache, CacheKey key, Object value) {
        getTransactionalCache(cache).putObject(key, SerializationUtils.deserialize(SerializationUtils.serialize((Serializable) value)));
    }

    public void commit() {
        for (TransactionalCache txCache : transactionalCaches.values()) {
            txCache.commit();
        }
    }

    public void rollback() {
        for (TransactionalCache txCache : transactionalCaches.values()) {
            txCache.rollback();
        }
    }

    private TransactionalCache getTransactionalCache(Cache cache) {
        TransactionalCache txCache = transactionalCaches.get(cache);
        if (txCache == null) {
            txCache = new TransactionalCache(cache);
            transactionalCaches.put(cache, txCache);
        }
        return txCache;
    }
}

When the value try to put in cache, just serialize and deserialize values which can deep copy all fields.
Then, I just replace the class by bytebuddy.
ByteBuddyAgent.install();

new ByteBuddy()
                .redefine(TransactionCacheManager.class)
                .name(TransactionalCacheManager.class.getName())
                .make()
                .load(TransactionCacheManager.class.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent());

Hi all, I found that solution can solve this problem.
public class TransactionCacheManager {
    private Map<Cache, TransactionalCache> transactionalCaches = new HashMap<Cache, TransactionalCache>();

    public void clear(Cache cache) {
        getTransactionalCache(cache).clear();
    }

    public Object getObject(Cache cache, CacheKey key) {
        return getTransactionalCache(cache).getObject(key);
    }

    public void putObject(Cache cache, CacheKey key, Object value) {
        getTransactionalCache(cache).putObject(key, SerializationUtils.deserialize(SerializationUtils.serialize((Serializable) value)));
    }

    public void commit() {
        for (TransactionalCache txCache : transactionalCaches.values()) {
            txCache.commit();
        }
    }

    public void rollback() {
        for (TransactionalCache txCache : transactionalCaches.values()) {
            txCache.rollback();
        }
    }

    private TransactionalCache getTransactionalCache(Cache cache) {
        TransactionalCache txCache = transactionalCaches.get(cache);
        if (txCache == null) {
            txCache = new TransactionalCache(cache);
            transactionalCaches.put(cache, txCache);
        }
        return txCache;
    }
}

When the value try to put in cache, just serialize and deserialize values which can deep copy all fields.
Then, I just replace the class by bytebuddy.
ByteBuddyAgent.install();

new ByteBuddy()
                .redefine(TransactionCacheManager.class)
                .name(TransactionalCacheManager.class.getName())
                .make()
                .load(TransactionCacheManager.class.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent());

But it works for me while getting cache with deep copy


Cannot find GH_IO Assembly! Aborting

Hello :)
I am running the componentize from my machine and it looks like that GH_IO needs to be inside the folder ./lib
I would suggest to look for the GH_IO in the same folder where the .py is runned.

This folder structure seems to work but we should probably specify it in the repository

Starting now, when the action is run locally, it will no longer try to find a local version of GH_IO.dll and instead (if not manually specified), it will automatically download it from NuGet. I hope this makes it easier to use!


Unable to compile when getters are private

Initially had the "Non-private methods in Log detected"  error but after changing getters to private, this issue came up. Not sure how to get around this without making getters public? The initial non-private method error still persists when uploaded to codecrunch as well.

may i know what values are you trying to get from Log? seems like you are using multiple getters for multiple purposes which could be avoided.

i think ur not supposed to use getters at all,, since everyth is done in log, i believe u can just access by using this.value or this.output

You won't need getters. You can access properties via the 'this' keyword, since the interactions are between instances of Log.

Many other people say the same thing: no need getter at all!
Step 1: You tell me or tell yourself what you use the Getter for
Step 2: Do you think these purposes can be handled by Log themselves?
Step 3: Do you know that private actually means the object of the same class can access it?
Step 4: In case you didn't realise, there's two of() options, one to add a logging message, and the other just sets the value.

Since it is in the same class, you do not need getters and it could be accessed using this.value instead

use 'this' keywords instead of getters

getters should be public if not other classes cannot access it (the purpose of the getter is for other classes to 'see' the value)


APIM - Network Watcher Connectivity Check integration specs

MSFT employees can try out our new experience at OpenAPI Hub - one location for using our validation tools and finding your workflow.
Changelog
Please ensure to add changelog with this PR by answering the following questions.

What's the purpose of the update?

[ ] new service onboarding
[ ] new API version
[X] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When you are targeting to deploy new service/feature to public regions? Please provide date, or month to public if date is not available yet.
When you expect to publish swagger? Please provide date, or month to public if date is not available yet.
If it's an update to existing version,  please select SDKs of specific language and CLIs that require refresh after swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[X] No, no need to refresh for updates in this PR

Contribution checklist:

[X] I commit to follow the Breaking Change Policy of "no breaking changes"
[X] I have reviewed the documentation for the workflow.
[X] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[X] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
[ ] Ensure to copy the existing version into new directory structure for first commit (including refactoring) and then push new changes including version updates in separate commits. This is required to review the changes efficiently.
Adding a new service

[X] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

@atharos1 can you add a sample for HTTP Connect also. It is not very straightforward.

Hi @msyyc @ArcturusZhang would  you please check the python and go breaking changes? thanks


[Onnx][UnitTests] Excluded additional onnx tests

The onnx tests test_basic_convinteger, test_convinteger_with_padding, test_range_float_type_positive_delta_expanded, and test_range_int32_type_positive_delta_expanded don't run correctly on CUDA targets, so they are added to the exclusion.

Parametrized over the relative directory name, rather than the full directory name.  This improves readability of the pytest output, and keeps the same parametrized test name across different python version.

Changed the target-specific skips to check the target kind, rather than the full target string.

@mbrookhart Can you review this, especially the addition of the cuda-specific excluded tests?

Closing, this clean-up will be done along-side #8542, which was based on this.


6895 integrate layers api

Resolves #6895
Replicated how new layers are created in the current editor, i.e. cloning an existing layer and remove/change values as necessary to avoid inconsistent layers.
Sorting of layers needs to be done later, that's out of scope for this issue, for now you can go to some tab view and return to layers to see them sorted.
I added a snippets object to the entry point, where we can add temporary code while WIP, and keep'em up-to-date as we change things, instead of each one of us stashing their own snippets.
snippets.createTableLayer('trazado_metro')
// wait for layer to be created
l = layerDefinitionsCollection.first()
// try changing some props
l.set({
  name: 'my layer',
  visible: false
})

@xavijam @javierarce can you both review? I think the layers part is quite important to get right.
cc @alonsogarciapablo @juanignaciosl

retest this please

:+1:

FYI, I'll merge on first thing on Monday morning unless there's more comments

Sorry, I forgot to give my approval to this PR yesterday. I think is :+1:


Link not working in documentation of sap.m.DatePicker

OpenUI5 version: latest
The following link

is just a link to the current page (#)

You can only open it if you copy & paste the URL, which is a little too complicated for my taste.

Hello @mschleeweiss ,
Thank you for sharing this finding. I've created a internal incident<PHONE_NUMBER>.
Regards,
Marin

I updated the screenshot. The old screenshot was from a different issue. I am sorry if this was misleading. Now it should be clear what I actually meant.

Hello,
the documentation has been updated. Everything should be fine now.
Best regards,
Georgi


generated_cmake_targets for clang

Thank you for releasing llvmbzlgen. By relying on the kythe bazel rules as an external dependency, I've been able to use it to generate bazel rules for building LLVM passes for the version of LLVM that I use. I run llvmbzlgen on the LLVMBuild.txt and CMakeLists.txt files at the root of the LLVM repo and, with a very small amount of modification, I can build LLVM passes.
I'm having trouble getting it to work with clang. Specifically, I'm interested in building clang SA checkers with bazel.
What process do you use to create the kythe generated_cmake_targets.bzl?
I tried running it on the CMakeLists.txt from the clang subdirectory in llvm-project, but the existing bazel rules, borrowed from kythe, seem to assume that clang lives under llvm/tools.

Thank you for sharing your script! This clarifies the process.

Thank you for sharing your script! This clarifies the process.


Display language identifier in Language Mode drop down

Source: #11977

@mrmlnc happy to review a PR if you wanna give it a shot 👍

@bpasero, I'm not sure about the output format for language identifiers. It seems to me that the Configured Language label visually lost.

Thanks 👍

Coverage decreased (-0.002%) to 61.094% when pulling bf65a1907d0656e200cf15ae92ad0d3d1b7b3aaf on mrmlnc:language-mode-identifier-11977 into 94eb60a29272ba41273c76c821cc8900f028dc67 on Microsoft:master.


Confusing inconsistency

Most of the document shows 'Settings' and 'ProtectedSettings' appearing at the same level
But the first two samples show 'PublicSettings' and 'ProtectedSettings', both under 'Settings'.
So which is it?

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

ID: a4ebf9bf-fb61-e694-1711-4fa00fc8a875
Version Independent ID: c0b1ab45-6775-b84b-09fa-c77709bbb5d0
Content: Desired State Configuration extension with Azure Resource Manager templates
Content Source: articles/virtual-machines/extensions/dsc-template.md
Service: virtual-machines-windows
GitHub Login: @DCtheGeek
Microsoft Alias: dacoulte

Thanks for the feedback! We are currently investigating and will update you shortly.

@DCtheGeek can you take a look and help to make the doc more clear?

@MicahMcKittrick-MSFT Yup!  Working with the PG on this issue.
@jtuliani Thanks for the feedback!  We are working to ensure all scenarios for the various schema's work appropriately and will update the document with the full information once that is completed.  I'll update and let you know as soon as I can.

@jtuliani Sorry for the delay.  The complete update to this article will get published tomorrow. If you feel something is still incorrect or missing, feel free to re-open this Issue or create a new one.  Thank you again for your feedback!


Why not using a configuration management tool?

I went through the code, there is lots of code and i was just asking myself why not using Puppet, Chef, Ansible or any other configuration management tool. The code is great no question.
I just see a lot of code that could be replaced while still being more readable...
@rootzoll  What do you think?

There are multiple factors to cosider.

reduce tools and external dependencies needed to setup your miniumum node: bitcoind & lnd ... thats also the reason why we dont use docker. even if they are open-source they add a lot of extra complexity that can widen the attack surface - we running a hat wallet here, so less is more. Sure if you install additional services like RTL you also install nodeJS .. but thats then an optional choice later. The minimum should stay just to the really required.

I checked quickly puppet and chef and they run and it seems you need to have a client sevice of them running in the systemd services. Also I quick look at Ansible talks abour cient and master servers. That makes sense if you have to control a server farm or a scalable production setup for a startup, but RaspiBlitz is a single Homenode that should not depend on a master server. Maybe you can use those tools without a master, but this shows that those tools are comming with a different mindset and problem to solve.

Such tools add another layer of complexity in understanding the code. Everybody running a linux based server knows at least some bash script because its basically unix commands with some basic syntax sugar. That made it easy in the past for a lot of people to contribute and take a look at the code. Tools like chef, puppet and asible are frameworks that are not familar to everybody. For some it will make the code more clean - most others would have to learn a new framework first. There are some ideas to maybe use more python code for RaspiBlitz in the future .. but thats at least a very basic and common programing lang.

Yes there is a lot of configuration ... but there is also a lot of processes and interaction wit the user. Also this interaction creates a lot of different configurations ... this sounds also very complicated to setup is such frameworks or at least needs some bash/python on the side.

You got me thinking if Ansible might be something to look deeper into for the future, because it would fit well with python. But can it be used without installing this master server stuff?

yes it is an added dependency but

All these tools (puppet, chef, ansible, ...) abstract the underlining operating system -> with the same code you could run Raspiblitz on any kernel or Linux LSB. (not required for now)
You don't need an agent nor a puppet master you can just apply a script on the host
yes and no, these tools are really common and solve all the complexity to install service descriptor, define services dependencies, restart service automatically if needed.
All interactions could just configure the puppet YAML (i don't know how to do it in other tool but for sure it is also there)

I'm just surprised to see some much bash code for stuff like changing permissions, modifying configuration files, getting dependencies and more...
-> you could create templates in puppet
-> puppet could monitor files changed and revert these permissions according to the descriptor automatically reducing misconfiguration and undetected filesystem changes
-> you don't need to open a new port in the firewall, puppet could just every 15min checking that all files, permissions, and service are there according to the plan.
-> if one service (LND, Bitcoin, RTL, ...) fails and crash puppet could restart them in the correct order, if any
-> you get repeatable runs and proper error messages without the need to code them yourself
And the list goes on
Just my 2 cents, I'm also a big fan of bash!

@rootzoll Ansible is agentless and would be a perfect fit. I'm 100% sure that it would be easier to maintain.
I think converting the existing sh file is a bearable task but will it be accepted or not is another topic.


Create matbench_genmetrics_basic.py

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 25.784%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
124

Relevant Lines:
428

💛  - Coveralls


Bluepill robot tests

This is a proposed implementation of tests using Robot. If this is accepted, writing more tests like that should be fairly simple.

Hi @petewarden is there anything else blocking us here?


getSSRProps is not defined in the directive

Hello! Thanks for making this library! I am going to use it in my project :)
I am using SSR though and that will throw an error when you include the v-tippy directive in any template that gets rendered during SSR.
The directive needs a getSSRProps function, as explained here: https://vuejs.org/guide/scaling-up/ssr.html#custom-directives. I don't think this directive has to do anything on SSR as tooltips are not really something that is relevant for the initial HTML rendered
As a current workaround you can do something like this:
import { TippyDirective } from "tippy.vue";

const _directive = TippyDirective as ObjectDirective;
_directive.getSSRProps = () => {
return {};
};
app.directive("tippy", _directive);

But it would be nice to include the getSSRProps in the actual source.

Thanks for the report! I'll definitely take a look. The v-tippy directive does add prop/attributes, but they aren't used until after everything is mounted, which is probably why the empty implementation still works. I've had my fair share of frustration with libraries that don't work in SSR, so I'm glad the workaround is so simple :)


react scripts@next build issue

I am using react-scripts@next and storm-react-diagrams-^5.1.1 to build my app.
npm run build giving below error.
Creating an optimized production build...
Failed to compile.
Module not found: Error: Can't resolve '_' in 'C:\sourcecode\myapp\node_modules\storm-react-diagrams\dist'

Please create a reproducing case.
Since you ignored the issue template we can't help in any way.

Hi, with the 1.1.5 version the issue is resolved. Please close the issue

@ramspassion I think you're able to close this issue since you're the reporter?


Update helm2 to helm3

Updated scripts and the travis.yaml to install helm3 to install cephcsi charts and to do helm lint
fixes #920
Signed-off-by: Madhu Rajanna<EMAIL_ADDRESS>

@humblec @nixpanic @ShyamsundarR can you please review this?

@nixpanic changes done PTAL

@humblec please review

@humblec PTAL


Added Class for Deck and Cards

@cbas check out the use case for fat arrow functions :trollface:

@cbas ; @sevresbabylone  please review
stuck at how to compare deal card with previous card

@cbas @sevresbabylone please review game logic .. will touch up on CSS and other event listeners

@sevresbabylone pls comment


⚠ Bofrost.lu has degraded performance

In f6f677b, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 1271 ms

Resolved: Bofrost.lu performance has improved in 59fff5b.