doc and impl of RewriteArrayExprs are inconsistent

def test_single_array_expr():
    def _test_impl(array):
        ret = array >= 0.1
        return ret

    jitted = sdc.jit()(_test_impl)
    arr = np.random.rand(10)
    jit_ret = jitted(arr)

Code above will be rewritten by RewriteArrayExprs Pass. But array >= 0.1 only has one operator. Is it necessary to rewrite this  expression, since loop fusion and shortcut deforestation optimizations don't seem to work?
And in numba developer doc, it wrote (https://numba.readthedocs.io/en/latest/developer/rewrites.html):

RewriteArrayExprs.match(): The rewrite pass looks for two or more array operations that form an array expression.

Is it inconsistent between doc and impl?
If this can be confirmed as a real inconsistency, I would like to contribute some code to fix it.

Is this an SDC issue, or a Numba issue? If it's a Numba issue, can you paste an executable variant of the code that uses Numba to reproduce the issue please?

Oh, sry, I didn't notice it. U can just replace sdc.jit with numba.jit in this case. SDC didn't re-implement RewriteArrayExprs Pass.
Below is the corresponding Numba IR:
----------------SSA IR DUMP: test_array_expr.<locals>._test_impl----------------
label 0:
    array1 = arg(0, name=array1)             ['array1']
    $const4.1 = const(float, 0.1)            ['$const4.1']
    ret = array1 >= $const4.1                ['$const4.1', 'array1', 'ret']
    $12return_value.4 = cast(value=ret)      ['$12return_value.4', 'ret']
    return $12return_value.4                 ['$12return_value.4']

______________________________________________________________________
REWRITING (RewriteArrayExprs):
    array1 = arg(0, name=array1)             ['array1']
    $const4.1 = const(float, 0.1)            ['$const4.1']
    ret = array1 >= $const4.1                ['$const4.1', 'array1', 'ret']
    del array1                               []
    del $const4.1                            []
    $12return_value.4 = cast(value=ret)      ['$12return_value.4', 'ret']
    del ret                                  []
    return $12return_value.4                 ['$12return_value.4']
____________________________________________________________
    array1 = arg(0, name=array1)             ['array1']
    $const4.1 = const(float, 0.1)            ['$const4.1']
    ret = arrayexpr(expr=(<built-in function ge>, [Var(array1, test_df_filter.py:162), const(float, 0.1)]), ty=array(bool, 1d, C)) ['array1', 'ret']
    del array1                               []
    del $const4.1                            []
    $12return_value.4 = cast(value=ret)      ['$12return_value.4', 'ret']
    del ret                                  []
    return $12return_value.4                 ['$12return_value.4']

Besides, I also want to know the difference between IR DUMP and SSA IR DUMP, I print some IR/SSA IR, but they look the same to me. like:
-------------------IR DUMP: __numba_array_expr_0x7f5a82fc8a90-------------------
label 0:
    array1_1 = arg(0, name=array1_1)         ['array1_1']
    $const4.1 = const(float, 0.1)            ['$const4.1']
    $6compare_op.2 = array1_1 >= $const4.1   ['$6compare_op.2', '$const4.1', 'array1_1']
    $8return_value.3 = cast(value=$6compare_op.2) ['$6compare_op.2', '$8return_value.3']
    return $8return_value.3                  ['$8return_value.3']

-----------------SSA IR DUMP: __numba_array_expr_0x7f5a82fc8a90-----------------
label 0:
    array1_1 = arg(0, name=array1_1)         ['array1_1']
    $const4.1 = const(float, 0.1)            ['$const4.1']
    $6compare_op.2 = array1_1 >= $const4.1   ['$6compare_op.2', '$const4.1', 'array1_1']
    $8return_value.3 = cast(value=$6compare_op.2) ['$6compare_op.2', '$8return_value.3']
    return $8return_value.3                  ['$8return_value.3']

IR is not in SSA form, but SSA IR is in SSA form. For example, if you have:
from numba import njit

@njit('int32(boolean)')
def f(c):
    if c:
        a = 1
    else:
        a = 2
    return a

Then the dumps are:
$ NUMBA_DUMP_IR=1 NUMBA_DUMP_SSA=1 python repro.py
-----------------------------------IR DUMP: f-----------------------------------
label 0:
    c = arg(0, name=c)                       ['c']
    bool4 = global(bool: <class 'bool'>)     ['bool4']
    $4pred = call bool4(c, func=bool4, args=(Var(c, repro.py:6),), kws=(), vararg=None, target=None) ['$4pred', 'bool4', 'c']
    branch $4pred, 6, 14                     ['$4pred']
label 6:
    a = const(int, 1)                        ['a']
    $12return_value.2 = cast(value=a)        ['$12return_value.2', 'a']
    return $12return_value.2                 ['$12return_value.2']
label 14:
    a = const(int, 2)                        ['a']
    $20return_value.2 = cast(value=a)        ['$20return_value.2', 'a']
    return $20return_value.2                 ['$20return_value.2']

---------------------------------SSA IR DUMP: f---------------------------------
label 0:
    c = arg(0, name=c)                       ['c']
    bool4 = global(bool: <class 'bool'>)     ['bool4']
    $4pred = call bool4(c, func=bool4, args=(Var(c, repro.py:6),), kws=(), vararg=None, target=None) ['$4pred', 'bool4', 'c']
    branch $4pred, 6, 14                     ['$4pred']
label 6:
    a = const(int, 1)                        ['a']
    $12return_value.2 = cast(value=a)        ['$12return_value.2', 'a']
    return $12return_value.2                 ['$12return_value.2']
label 14:
    a.1 = const(int, 2)                      ['a.1']
    $20return_value.2 = cast(value=a.1)      ['$20return_value.2', 'a.1']
    return $20return_value.2                 ['$20return_value.2']

The IR is not SSA form because there are multiple assignments to a - in the SSA form, the second assignment is to a new variable, a.1.  The introductory paragraphs of the Wikipedia article provide a reasonable summary: https://en.wikipedia.org/wiki/Static_single_assignment_form

My first guess is that the doc is wrong and arrayexpr is needed to map array operations to ufunc. But the code was written years ago and I need to look at it to confirm.

@dlee992 @gmarkall what shall we do about this one? @sklam did you ever manage to get to the bottom of this.

The code is at https://github.com/numba/numba/blob/c6e79f05639094ae7f005e8960c1b3d6e7296a85/numba/np/ufunc/array_exprs.py#L66-L94
It will match anything that can be mapped to a supported NumPy ufunc and that there is no explicit output (i.e. the out argument in ufunc).

I think this issue can be closed. All we need to do is rewrite the Numba doc from looks for two or more array operations to looks for one or more array operations, since I guess we wouldn't want to change the related code.

We should close this when a corresponding patch is merged.


scale up power and z limits

/cherry-pick release-3.6

Confirmed with performance squad, those changes are based on 3.7 version. Do not need to pick up by EUS version.


Setup AuthN for services with no native login

Details
Services such as Prometheus don't have native login oauth2 integration, this can be provided using envoy filters similar to the kiali envoy filter to enforce traffic is authenticated prior to hitting the downstream service via the virtual service resource.

    extensionProviders:
      - name: oauth2-proxy
        envoyExtAuthzHttp:
          service: oauth2-proxy.network.svc.cluster.local
          port: 80
          includeHeadersInCheck: ['authorization', 'cookie']
          headersToUpstreamOnAllow:
            [
              'authorization',
              'path',
              'x-auth-request-user',
              'x-auth-request-email',
              'x-auth-request-access-token',
            ]
          headersToDownstreamOnDeny: ['content-type', 'set-cookie']```

          v1.9.2 implements external providers which can now easily integrate with oauth2-proxy + DEX


Refactor III

Another batch of refactoring.
BEGINRELEASENOTES

Reduced default output verbosities
Added a function to conditionally attach output converter if needed
Wrapped outputs to lcio and edm4hep in a generic function
Also adds future possibility of DST ouput for edm4hep
Changed default edm4hep file ending from _edm4hep.root to .edm4hep.root
Added configuration arguments --compactFile, --conformalTracking, --truthTracking

ENDRELEASENOTES
The edm4hep DST output will only fully work once we have https://github.com/key4hep/k4FWCore/issues/226 so it is commented out for the moment.

I think I have applied all the suggestions


Fails to build after #1327, must be fixed before releasing v0.9.10

It is easy to fix but a showstopper. Postpone release until this is fixed. I'm working on this, just for the record.
Making all in chansrv
  CC       chansrv.o
  CC       chansrv_common.o
  CC       chansrv_fuse.o
  CC       clipboard.o
  CC       clipboard_file.o
  CC       devredir.o
  CC       fifo.o
  CC       irp.o
In file included from irp.c:30:
In file included from ./irp.h:27:
./chansrv_fuse.h:39:5: error: unknown type name 'time_t'
    time_t          atime;             /* Time of last access.              */
    ^
./chansrv_fuse.h:40:5: error: unknown type name 'time_t'
    time_t          mtime;             /* Time of last modification.        */
    ^
./chansrv_fuse.h:41:5: error: unknown type name 'time_t'
    time_t          ctime;             /* Time of last status change.       */
    ^
3 errors generated.
*** Error code 1

Stop.
make[3]: stopped in /tmp/xrdp/sesman/chansrv
*** Error code 1

At least on FreeBSD, it fails to build.

CC: @matt335672


Add types for Introscope v1.0.6

Added types for https://www.npmjs.com/package/introscope

run tests

Done. Also update the introscope version to the recent one.
I like that you like comments these days :)


Sort stack using recursion

Problem Statement:
Given a stack, sort the given stack using recursion such that the greatest element is on the top.
I want to add the C++ code for this in Data Structure ->Stack folder
Please assign me this issue

Sure @neha030 , you can go ahead !


Fix deletion of files and folders created during watch

What type of PR is this?
/kind bug
What does does this PR do / why we need it:
This PR fixes the deletion of files created during watch.
Which issue(s) this PR fixes:
Fixes #https://github.com/openshift/odo/issues/3438
PR acceptance criteria:

[ ] Unit test

[X] Integration test

[ ] Documentation

[ ] I have read the test guidelines

How to test changes / Special notes to the reviewer:

Create a odo component and trigger odo watch
Create a file/folder and wait for the push to be completed
Delete the file/folder and check if the file was removed from the cluster or not.

/approve

[odo] I0930 09:26:08.248503 65894 deployments.go:145] Waiting for deployment spec update to be observed...

1339

[odo] ✗ Waiting for component to start [5m]

1340

[odo] ✗ Failed to start component with name wrzwtw. Error: Failed to create the component: error while waiting for deployment rollout: timeout while waiting for wrzwtw deployment roll out

/retest

url.go:438] Listing ingresses with label selector: app.kubernetes.io/instance=mynodejs

1334

[odo] ✗ ingresses.extensions is forbidden: User "developer" cannot list resource "ingresses" in API group "extensions" in the namespace "ikrqfilgdt"

1335

Deleting project: ddrzmzjjwg

1336

Running odo with args [odo project delete ddrzmzjjwg -f]

1337

[odo] I0930 11:56:07.822584 33948 util.go:730] HTTPGetRequest: https://raw.githubusercontent.com/openshift/odo/master/build/VERSION

1338

[odo] I0930 11:56:07.822849 33948 util.go:751] Response will be cached in /tmp/odohttpcache for 1h0m0s

1339

[odo] I0930 11:56:07.823048 33948 util.go:764] Cached response used.

1340

[odo] ⚠ Warning! Projects are deleted from the cluster asynchronously. Odo does its best to delete the project. Due to multi-tenant clusters, the project may still exist on a different node.

1341

[odo] I0930 11:56:08.109656 33948 odo.go:72] Could not get the latest release information in time. Never mind, exiting gracefully :)

1342

[odo] ✓ Deleted project : ddrzmzjjwg

1343

Deleting dir: /tmp/662836011

1344

1345

1346

• Failure [90.773 seconds]

1347

odo component command tests

1348

/go/src/github.com/openshift/odo/tests/integration/cmd_cmp_test.go:13

1349

convert s2i to devfile

/retest

/retest
/lgtm


Various updates to bring in sync with deployed version

This brings in a handful of changes that had been made in the deployed version, as well as some other updates like new voices. I also simplified the project by removing the Node.js agent for now to clean up our deployment.

Was playground_agent.py deleted by mistake?

@kincaidoneil it has been renamed to main.py

@kincaidoneil I'm open to reverting that - but this project isn't versioned since it's just sample code. We had a private copy of the same codebase that was deployed in the live version but we wanted to merge them together and change it to match other deployments we have and this change helped (our deployment system assumes the existence of a main.py)


make Default{Cloner,Cacher,Match} into vars (instead of consts)

Makes it easier to use drone-exec as a library from other Go code (when you need to use a different cloner, for example).

LGTM even if i would expect to overwrite the defaults with parameters to the function calls.

@tboerger: Thanks. You can overwrite the defaults with params to the func calls, but if you are using the exec.Exec API, then you won't be able to (simply because it's a higher level interface). This PR lets you use exec.Exec and still overwrite the default cloner, etc.

LGTM

Must be rebased before it can get merged.


Changed name of parquet files for Mortgage ETL Integration test

Updated filenames per bug report.  I did not see the tar error before or after my change when running the integration tests, but perhaps I was looking in the wrong place.
Fixes #2038

build


ALTCTL requires GPS fix, but should work also without

We need to go through the system dependencies and make this one less strict.

@dogmaphobic @DonLakeFlyer the AGL altitude is quite relevant during normal operation - probably something to have as a big number in the HUD.

Works, closing.


space-cli generate remote services does not work properly

Here's the yaml file that I am applying:
api: /v1/config/projects/{project}/remote-service/service/{id}
meta:
  id: myapp
  project: myproject
spec:
  endpoints:
  - add:
      method: POST
      path: /
  url: http://localhost:8080
type: remote-services

However, after applying, when I open the config.yaml file of Space Cloud, it has the following config related to remote services:
    remoteServices:
      externalServices:
        myapp:
          endpoints: null
          id: myapp
          url: http://localhost:8080

Endpoints are empty. However, endpoints should have been present.

Fixed in v0.21.0


Tutorial in editor doesn't follow theme (dark mode)

Describe the bug
On the tutorial panel in the Sprig editor, if you have dark theme enabled the background will still be white and in light mode. The help tab on the same panel does switch to dark mode.
To Reproduce
Steps to reproduce the behavior:

Go to the Sprig gallery and enter a tutorial
Switch to dark mode
See that the tutorial panel stays on light theme

Expected behavior
I expected the tutorial panel to switch to dark theme.
Actual behavior
The tutorial panel stays on light theme.
Screenshots

cc @JosiasAurel (?)

This is unintended. I'll try to reproduce asap

@polypixeldev thank you for the excellently-described issue report.


Cannot copy to clipboard

I'm not sure if this belongs here but let's see.
I'm using the excalidraw plugin in standard notes. When i try to export the image, or copy to clipboard as png, i get the following error: "Error couldn't copy to clipboard"
I tried both, the flatpak and appimage version of standard notes. Also when using the webapp of standard notes, it works.

Hi. Never heard about Standard Notes, but their desktop apps likely don't support clipboard API we're using to copy to clipboard. You'd have to raise issue with them as we don't have any control over this.


[7.x] Add a base exception for Http exceptions

I suggest that we add a base exception that the exceptions thrown by the Http client can extend.
By doing that it's easy to catch any errors that will be thrown.
Here is a real-life Stripe portal integration before and after.
Before
try {
    $response = Http::asForm()
        ->retry(3, 500)
        ->timeout(5)
        ->withBasicAuth($secret, '')
        ->post('https://api.stripe.com/v1/billing_portal/sessions', [
            'customer' => $client->stripe_customer_id,
            'return_url' => $returnUrl,
        ])->throw();
} catch (RequestException $exception) {
    throw ClientBillingException::make('Failed to redirect to Stripe portal.', $exception);
} catch (ConnectionException $exception) {
    throw ClientBillingException::make('Failed to redirect to Stripe portal.', $exception);
}

After
try {
    $response = Http::asForm()
        ->retry(3, 500)
        ->timeout(5)
        ->withBasicAuth($secret, '')
        ->post('https://api.stripe.com/v1/billing_portal/sessions', [
            'customer' => $client->stripe_customer_id,
            'return_url' => $returnUrl,
        ])->throw();
} catch (HttpClientException $exception) {
    throw ClientBillingException::make('Failed to redirect to Stripe portal.', $exception);
}

This is a very simple addition which will not be a breaking change, as people can still catch the individual exceptions or the \Exception class.
I'm open to other names for the base exceptions.
I've called it "HttpClientException", but other names could be:

ClientExecption
HttpException
BadResponseException

You could argue that we can just catch the \Exception class, but I don't want to do that in case that any exceptions are thrown by some other logic in the try-catch block. This could e.g. be an exception thrown by $client->stripe_customer_id

FYI for the first example with common catch blocks, PHP 7.1 added catching multiple exception types so the code snippet could be shortened to:
try {
    // ....
} catch (ConnectionException | RequestException $e) {
    throw ClientBillingException::make('Failed to redirect to Stripe portal.', $e);
}


Type is not a required field on products

According to the API documentation the only required attribute for a Product is the name. Defaults will be merged in after in any case.

Perfect! Can you please upgrade the CHANGELOG with these changes and add a test to make sure that type is not required?
Also, a link to the portion of the API that confirms that type is not required would be much appreciated.

Fixed by https://github.com/stripe-ruby-mock/stripe-ruby-mock/commit/4e1759d6f12aa59ee05cd2295b9f03e0718acccd, where the check for type was removed.


chore(protoc-gen-tstypes): add github actions to build examples

Hi. I'm using protoc-gen-tstypes in our project and it's very useful. However, I found it hard to develop protoc-gen-tstypes in my own environment for several reasons.
In this PR, I do some modifications to examples.sh and test the new development workflow in my machine. I also add some CI configuration to run examples.sh for every push. Therefore we can ensure the development workflow always works well.
This PR should not affect the feature of protoc-gen-tstypes.

BTW, because of the repository permission, I can't trigger the CI in this PR. You can check the CI result in my fork.

@tmc Hi! Do you have sometime to review this pull request?


[FEATURE] Create button improvements

Is your feature request related to a problem? Please describe.
I'm working on adventure-like Hotspot scripting and I'm in the process of automatizing the creation of Atom events, hotspot conditions (BoolVariables) and other atom related assets. Each hotspot has unique atom events and atom bool conditions so I place them in Hotspot relevant folders. Something like Assets/GAME/HotspotData/ActiveScene/HotspotName.
The built in Create button, while convenient for creating new assets, is not working for us since it doesn't respect our project structure. It dumps everything in the root folder Assets. So I made my own buttons that creates atom events and atom variables, apply them in the Hotspot script and places them in folders appropriate for our project structure. This works well, except now I have my own Hotspot script Create buttons and Atoms Create buttons coexisting, which makes it confusing for designers.
Describe the solution you'd like
An option for globally disabling Atoms Create button for variables, events, etc.
Describe alternatives you've considered
Offer deeper Atoms Create button settings:

A global option to change asset path's root folder from Assets to something like, for example, "Assets/GAME/GameData" .
Optional: Let us type in not only asset name but also asset path as one of the new asset creation steps. This could build on suggestion 1 above, so when you need to type in the custom path, it already has added the new root folder path.
Option to add path modifiers that build upon suggestion 1's root path. I'm not sure how this could be realized but functionally I'd like to grab things like currently active scene, or GameObject's name the atom event/variable is currently on and where the Create button was pressed. So it would end up being something like "Assets/GAME/GameData/ActiveScene/GameObjectName". Ideally, these could be custom coded per project basis.
Let us modify Create button's path via code. Perhaps as an Attribute on top of the variable/event. Or even better - don't show Create button unless it's specifically added via the attribute [CreateButton("Assets/GAME/GameData/" + activeScene + gameObject.name)].

Added this to Backlog because it's uncertain if it's going to be in v5.

This has been added in V5 (currently in development) using EditorUtility.SaveFilePanelInProject which allows the user to specify a folder location easily and flexibly. To that end, I am closing this issue.

See this comment for a short preview of what to expect.


BHBC-2221: experimental git action improvements (WIP)

Overview
Links to Jira tickets
https://quartech.atlassian.net/browse/BHBC-2221
Description of relevant changes

{List all relevant changes, in particular anything that will help the reviewers test/verify this PR}

PR Checklist
A list of items that are good to consider when making any changes.
Note: this list is not exhaustive, and not all items are always applicable.
Code

[ ] New files/classes/functions have appropriately descriptive names and comment blocks to describe their use/behaviour
[ ] I have avoided duplicating code when possible, moving re-usable pieces into functions
[ ] I have avoided hard-coding values where possible and moved any re-usable constants to a constants file
[ ] My code is as flat as possible (avoids deeply nested if/else blocks, promise chains, etc)
[ ] My code changes account for null/undefined values and handle errors appropriately
[ ] My code uses types/interfaces to help describe values/parameters/etc, help ensure type safety, and improve readability

Style

[ ] My code follows the established style conventions
[ ] My code uses native material-ui components/icons/conventions when possible

Documentation

[ ] I have commented my code sufficiently, such that an unfamiliar developer could understand my code
[ ] I have added/updated README's and related documentation, as needed

Tests

[ ] I have added/updated unit tests for any code I've added/updated
[ ] I have added/updated the Postman requests/tests to account for any API endpoints I've added/updated

Linting/Formatting

[ ] I have run the linter and fixed any issues, as needed
See the lint commands in package.json
[ ] I have run the formatter and fixed any issues, as needed
See the format commands in package.json

SonarCloud

[ ] I have addressed all SonarCloud Bugs, Vulnerabilities, Security Hotspots, and Code Smells

Closing so I can re-open and test a fresh PR


Added a contribution issue

Added an issue template for users to open when they have an example they want to contribute.
@m3ller Please review and make any changes you see fit.

Closes #2

Looks good. I'm not sure where we are at with write-permissions to the fork, but we can do that by ear. I think this boilerplate will improve the repo, so I will just merge.


Use immuntable Capabilities

In exasol/virtual-schema-common-java#38 we introduce an update of the Capabilities class that makes it immutable and provides a builder which makes the code more readable.
This issue here exists to integrate that change.

Closed with #112


error after npm install

tried npm 18.16.1 & 14.21.3 , same error
'gyp verb which failed Error: not found: python2'
E:\h5\react-reduction>yarn install
yarn install v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>- 3".
warning " ><EMAIL_ADDRESS>has unmet peer dependency<EMAIL_ADDRESS>warning "react-infinite-calendar ><EMAIL_ADDRESS>has incorrect peer dependency<EMAIL_ADDRESS>|| ^15.0.0".
[4/4] Building fresh packages...
error B:\h5\react-reduction\node_modules\node-sass: Command failed.
Exit code: 1
Command: node scripts/build.js
Arguments:
Directory: B:\h5\react-reduction\node_modules\node-sass
Output:
Building: C:\Program Files\nodejs\node.exe B:\h5\react-reduction\node_modules\node-gyp\bin\node-gyp.js rebuild --verbose --libsass_ext= --libsass_cflags= --libsass_ldflags= --libsass_library=
gyp info it worked if it ends with ok
gyp verb cli [
gyp verb cli   'C:\Program Files\nodejs\node.exe',
gyp verb cli   'B:\h5\react-reduction\node_modules\node-gyp\bin\node-gyp.js',
gyp verb cli   'rebuild',
gyp verb cli   '--verbose',
gyp verb cli   '--libsass_ext=',
gyp verb cli   '--libsass_cflags=',
gyp verb cli   '--libsass_ldflags=',
gyp verb cli   '--libsass_library='
gyp verb cli ]
gyp info using<EMAIL_ADDRESS>gyp info using<EMAIL_ADDRESS>| win32 | x64
gyp verb command rebuild []
gyp verb command clean []
gyp verb clean removing "build" directory
gyp verb command configure []
gyp verb check python checking for Python executable "python2" in the PATH
gyp verb which failed Error: not found: python2
gyp verb which failed     at getNotFoundError (B:\h5\react-reduction\node_modules\node-gyp\node_modules\which\which.js:13:12)
gyp verb which failed     at F (B:\h5\react-reduction\node_modules\node-gyp\node_modules\which\which.js:68:19)
gyp verb which failed     at E (B:\h5\react-reduction\node_modules\node-gyp\node_modules\which\which.js:80:29)
gyp verb which failed     at B:\h5\react-reduction\node_modules\node-gyp\node_modules\which\which.js:89:16
gyp verb which failed     at B:\h5\react-reduction\node_modules\isexe\index.js:42:5
gyp verb which failed     at B:\h5\react-reduction\node_modules\isexe\windows.js:36:5
gyp verb which failed     at FSReqCallback.oncomplete (fs.js:192:21)
gyp verb which failed  python2 Error: not found: python2
gyp verb which failed     at getNotFoundError (B:\h5\react-reduction\node_modules\node-gyp\node_modules\which\which.js:13:12)
gyp verb which failed     at F (B:\h5\react-reduction\node_modules\node-gyp\node_modules\which\which.js:68:19)

this project is abandoned :(


add a interface GraceFullShutDown to supoort customized action in shutdown

Introduce:
In shutdown stage of a project ,gracefull shut down is necessary.
There is a application listener ,but it is not enough,some actions should be done with dubbo.
For example, Kafka producer should flush messages to the broker after protocol destroyed.
Another,MQ consumer should not poll new messages any more after registries destroyed.
Changelog
add a interface GraceFulShutDown
2.update SpringExtensionFactory.ShutdownHookListener to support customized actions when spring bean exists which implements GraceFullShutDown
3.add a unit test GraceFulShutDownTest
Follow this checklist to help us incorporate your contribution quickly and easily:

[x] Make sure there is a GITHUB_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GITHUB issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
[ ] Format the pull request title like [Dubbo-XXX] Fix UnknownException when host config not exist #XXX. Each commit in the pull request should have a meaningful subject line and body.
[ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
[x] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
[x] Run mvn clean install -DskipTests=false & mvn clean test-compile failsafe:integration-test to make sure unit-test and integration-test pass.
[ ] If this contribution is large, please follow the Software Donation Guide.

Codecov Report

Merging #4606 into master will decrease coverage by 0.12%.
The diff coverage is 62.5%.

@@             Coverage Diff              @@
##             master    #4606      +/-   ##
============================================
- Coverage     64.01%   63.89%   -0.13%
+ Complexity      452      451       -1
============================================
  Files           769      770       +1
  Lines         33136    33158      +22
  Branches       5224     5228       +4
============================================
- Hits          21212    21186      -26
- Misses         9496     9547      +51
+ Partials       2428     2425       -3

Impacted Files
Coverage Δ
Complexity Δ

...ubbo/config/spring/extension/GraceFulShutDown.java
0% <0%> (ø)
0 <0> (?)

...ava/org/apache/dubbo/config/DubboShutdownHook.java
82.35% <100%> (+1.1%)
0 <0> (ø)
:arrow_down:

...onfig/spring/extension/SpringExtensionFactory.java
72.88% <63.15%> (-12.49%)
0 <0> (ø)

.../apache/dubbo/qos/protocol/QosProtocolWrapper.java
64.1% <0%> (-17.95%)
0% <0%> (ø)

...ache/dubbo/remoting/p2p/support/AbstractGroup.java
45.45% <0%> (-11.37%)
0% <0%> (ø)

...che/dubbo/remoting/transport/mina/MinaChannel.java
43.42% <0%> (-10.53%)
16% <0%> (-1%)

.../remoting/transport/netty4/NettyServerHandler.java
61.9% <0%> (-9.53%)
0% <0%> (ø)

...ng/transport/dispatcher/all/AllChannelHandler.java
51.42% <0%> (-5.72%)
0% <0%> (ø)

.../org/apache/dubbo/remoting/ExecutionException.java
15.78% <0%> (-5.27%)
0% <0%> (ø)

... and 11 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 24e851e...6e0df43. Read the comment docs.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.yuantiantian seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


updates: es6, webpack2, gwp

update to es6
drop webpack1
bump globalize-webpack-plugin dependency from 0.3.x -> 1.0.0
bump version to 1.0.0 from 0.4.3 -> 1.0.0

Signed-off-by: James Bellenger<EMAIL_ADDRESS>

I mixed up my git and seemed to have gotten it into a bad state that won't merge without conflicts. Closing this PR and replacing it with #26


feat(Déclaration): ajout champ precisionDeficience #250

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


Issue while (ionic) cordova build android "Execution failed for task ':compileDebugJavaWithJavac'".

Expected Behaviour
apk is builded
Actual Behaviour
Error:
Reproduce Scenario (including but not limited to)
After adding the push-plugin is it not possible to build an apk.
Installed Plugins:
cordova-plugin-console 1.0.5 "Console"
cordova-plugin-device 1.1.4 "Device"
cordova-plugin-googleplus 5.1.1 "Google SignIn"
cordova-plugin-nativestorage 2.2.2 "NativeStorage"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.2.2 "StatusBar"
cordova-plugin-whitelist 1.3.1 "Whitelist"
ionic-plugin-keyboard 2.2.1 "Keyboard"
phonegap-plugin-push 2.0.0-rc5 "PushPlugin"
First I had the Issue #1718 and solved it by adding cordova.system.library.1=com.google.android.gms:play-services-auth:9.8.0
cordova.system.library.2=com.google.android.gms:play-services-identity:9.8.0
to project.properties and now I get the following issue: Execution failed for task ':compileDebugJavaWithJavac'.
Platform and Version (eg. Android 5.0 or iOS 9.2.1)
Android 7.1.1 (API 25)
(Android) What device vendor (e.g. Samsung, HTC, Sony...)

Cordova CLI version and cordova platform version
cordova --version                                    7
cordova platform version android                    6.2.3

Plugin version
cordova plugin version | grep phonegap-plugin-push   2.0.0-rc5

Logs taken while reproducing problem
    :compileDebugJavaWithJavac FAILED

    FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':compileDebugJavaWithJavac'.

@wolfmarcel Please copy the full output of the build command here, there's not much one can infer from what you provided.

@fredgalvao Sorry here it is:
Running app-scripts build: --iscordovaserve --externalIpRequired --nobrowser
[01:54:04]  build dev started ...
[01:54:04]  clean started ...
[01:54:04]  clean finished in 8 ms
[01:54:04]  copy started ...
[01:54:04]  transpile started ...
[01:54:09]  transpile finished in 5.39 s
[01:54:09]  preprocess started ...
[01:54:09]  deeplinks started ...
[01:54:09]  deeplinks finished in 99 ms
[01:54:09]  preprocess finished in 102 ms
[01:54:09]  webpack started ...
[01:54:15]  copy finished in 11.64 s
[01:54:27]  webpack finished in 17.26 s
[01:54:27]  sass started ...
[01:54:28]  sass finished in 1.27 s
[01:54:28]  postprocess started ...
[01:54:28]  postprocess finished in 6 ms
[01:54:28]  lint started ...
[01:54:28]  build dev finished in 24.10 s

cordova build android

Running command [01:54:34]  lint finished in 5.65 s
✖ Running command - failed!

[ERROR] Cordova encountered an error.
You may get more insight by running the Cordova command above directly.
[ERROR] An error occurred while running cordova build android (exit code 1):
    (truncated) ... ib:compileReleaseShaders
    :CordovaLib:generateReleaseAssets
    :CordovaLib:mergeReleaseAssets
    :CordovaLib:mergeReleaseProguardFiles UP-TO-DATE
    :CordovaLib:packageReleaseRenderscript UP-TO-DATE
    :CordovaLib:compileReleaseRenderscript
    :CordovaLib:generateReleaseResValues
    :CordovaLib:generateReleaseResources
    :CordovaLib:packageReleaseResources
    :CordovaLib:processReleaseManifest
    :CordovaLib:generateReleaseBuildConfig
    :CordovaLib:processReleaseResources
    :CordovaLib:generateReleaseSources
    :CordovaLib:incrementalReleaseJavaCompilationSafeguard
    :CordovaLib:compileReleaseJavaWithJavac
    :CordovaLib:compileReleaseJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution,
    etc.).
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    :CordovaLib:processReleaseJavaRes UP-TO-DATE
    :CordovaLib:transformResourcesWithMergeJavaResForRelease
    :CordovaLib:transformClassesAndResourcesWithSyncLibJarsForRelease
    :CordovaLib:mergeReleaseJniLibFolders
    :CordovaLib:transformNative_libsWithMergeJniLibsForRelease
    :CordovaLib:transformNative_libsWithSyncJniLibsForRelease
    :CordovaLib:bundleRelease
    :prepareComAndroidSupportMultidex101Library
    :prepareComAndroidSupportSupportCompat2520Library
    :prepareComAndroidSupportSupportCoreUi2520Library
    :prepareComAndroidSupportSupportCoreUtils2520Library
    :prepareComAndroidSupportSupportFragment2520Library
    :prepareComAndroidSupportSupportMediaCompat2520Library
    :prepareComAndroidSupportSupportV132510Library
    :prepareComAndroidSupportSupportV42520Library
    :prepareComGoogleAndroidGmsPlayServicesAuth980Library
    :prepareComGoogleAndroidGmsPlayServicesAuthBase980Library
    :prepareComGoogleAndroidGmsPlayServicesBase980Library
    :prepareComGoogleAndroidGmsPlayServicesBasement1101Library
    :prepareComGoogleAndroidGmsPlayServicesIdentity980Library
    :prepareComGoogleAndroidGmsPlayServicesTasks1101Library
    :prepareComGoogleFirebaseFirebaseAnalytics980Library
    :prepareComGoogleFirebaseFirebaseAnalyticsImpl980Library
    :prepareComGoogleFirebaseFirebaseCommon1101Library
    :prepareComGoogleFirebaseFirebaseCore980Library
    :prepareComGoogleFirebaseFirebaseIid1101Library
    :prepareComGoogleFirebaseFirebaseMessaging1101Library
    :prepareMeLeolinShortcutBadger1114Library
    :prepareOrgApacheCordovaCordovaLib623DebugLibrary
    :prepareDebugDependencies
    :compileDebugAidl
    :compileDebugRenderscript
    :generateDebugBuildConfig
    :generateDebugResValues
    :processDebugGoogleServices
    Parsing json file: C:\DEv\MobileProject\BarOn\IonicApplication\platforms\android\google-services.json
    :generateDebugResources
    :mergeDebugResources
    :processDebugManifest
    :processDebugResources
    :generateDebugSources
    :incrementalDebugJavaCompilationSafeguard
    :compileDebugJavaWithJavac
    :compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
    C:\DEv\MobileProject\BarOn\IonicApplication\platforms\android\src\nl\xservices\plugins\GooglePlus.java:151:
    error: cannot access AbstractSafeParcelable
    .addApi(Auth.GOOGLE_SIGN_IN_API, gso.build());
    ^
    class file for com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable not found
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error
    :compileDebugJavaWithJavac FAILED

    FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':compileDebugJavaWithJavac'.
    > Compilation failed; see the compiler error output for details.

    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    BUILD FAILED

    Total time: 16.665 secs
    Error: cmd: Command failed with exit code 1 Error output:
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    C:\DEv\MobileProject\BarOn\IonicApplication\platforms\android\src\nl\xservices\plugins\GooglePlus.java:151:
    error: cannot access AbstractSafeParcelable
    .addApi(Auth.GOOGLE_SIGN_IN_API, gso.build());
    ^
    class file for com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable not found
    Note: Some input files use or override a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    Note: Some input files use unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    1 error

    FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':compileDebugJavaWithJavac'.
    > Compilation failed; see the compiler error output for details.

    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

It seems that the push-Plugin and the GooglePlus-Plugin have problems with each other....
When a remove push-Plugin everything works fine. After installing again - same error

@wolfmarcel the problem is the Google Plus Plugin also uses play services so you need to go into your project.properties and pinning the versions of play services it uses to the same version as this plugin.
I'm talking to the Cordova community on how to solve this for all plugins.

@macdonst I changed this already as mentioned in Issue #1718 to:
cordova.system.library.1=com.google.android.gms:play-services-auth:9.8.0
cordova.system.library.2=com.google.android.gms:play-services-identity:9.8.0
Is there anything else I have to change  in the project.properties ?

@wolfmarcel I would try incrementing the version of play services to 10.0.1. The AbstractSafeParcelable class may not exist in 9.8.0.

@macdonst Thank you, how do I could find out which version is installed on my machine ?

just make sure your working folder is not synced with any online cloud backup services

facing same issue. Are you guys able to fix this?

Actually one needs to see the exact exception, as plugin you have installed might have some faults. I edited java code in plugin according to my needs so that made an exception. see for exception and code line number.


Issue on EATON UPS 3S 850

Problem/Motivation
Hello,
thanks for your work!
I'm trying to setup my EATON UPS connected to my ESXi which is linked to my HAOS VM.
Systems does recognised but something wrong append with libusb1
libusb1: Could not open any HID devices: insufficient permissions on everything
No matching HID UPS found
Driver failed to start (exit status=1)

Expected behavior
UPS should be recognised
Actual behavior
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service base-addon-banner: starting

-----------------------------------------------------------
 Add-on: SmartNUT
 Smartly manage battery backup (UPS) devices
-----------------------------------------------------------
 Add-on version: dev
 You are running the latest version of this add-on.
 System: Home Assistant OS 11.2  (amd64 / qemux86-64)
 Home Assistant Core: 2024.1.0
 Home Assistant Supervisor: 2023.12.0
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-timezone: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
[12:21:38] INFO: Configuring timezone (Europe/Paris)...
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service base-addon-timezone successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/smartnut.sh
[12:21:38] INFO: Autodetecting and configuring USB devices
Scanning USB bus.
[12:21:42] INFO: => OK
[12:21:42] INFO: Configuring MQTT...
[12:21:43] INFO: From Home Assistant service
[12:21:43] INFO: => OK
[12:21:43] INFO: ---------------------
[12:21:43] INFO: Checking configuration:
[12:21:43] INFO: /etc/nut/ups.conf
[nutdev1]
	driver = "usbhid-ups"
	port = "auto"
	vendorid = "0463"
	productid = "FFFF"
	bus = "002"
[12:21:43] INFO: /etc/nut/libnutdrv_mqtt.conf
MQTT_HOST=core-mosquitto
MQTT_USER=addons
MQTT_PASSWORD=xe5ohshu4theeg7deiluw0weweshait9theishae5Ohmil9mei3AiYe3baitee9w
[12:21:43] INFO: => OK
[12:21:43] INFO: ---------------------
[12:21:43] INFO: Starting the SmartNUT Driver(s)...
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
libusb1: Could not open any HID devices: insufficient permissions on everything
No matching HID UPS found
Driver failed to start (exit status=1)
cont-init: info: /etc/cont-init.d/smartnut.sh exited 1
Network UPS Tools - UPS driver controller 2.8.0
cont-init: warning: some scripts exited nonzero
s6-rc: warning: unable to start service legacy-cont-init: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-timezone: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service base-addon-timezone successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Steps to reproduce

Deploy HAOS on VMWare ESXi.
Map USB to the VM

Install SMARTUPS and MQTT
Run

Hi @lenoxys
Happy new year!
And thanks for testing SmartNUT.
Give me a few more days to get surface and add a driver debug + lsusb option to track this down.

Hi @lenoxys
Sorry for the eternity to answer...
I still suspect some USB passthrough issue with v12n setups, at least VMware.
I just added a list usb devices option, along with enabling driver debug when the general log is set to debug for that addon.
If you can give it a try...

Hello @aquette !
Unfortunately, nothing changes :
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service base-addon-banner: starting

-----------------------------------------------------------
 Add-on: SmartNUT
 Smartly manage battery backup (UPS) devices
-----------------------------------------------------------
 Add-on version: dev
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.3  (amd64 / qemux86-64)
 Home Assistant Core: 2024.6.3
 Home Assistant Supervisor: 2024.06.0
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-timezone: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
[10:32:33] INFO: Configuring timezone (Europe/Paris)...
Log level is set to DEBUG
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service base-addon-timezone successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/smartnut.sh
[10:32:33] INFO: Autodetecting and configuring USB devices
Scanning USB bus.
[10:32:34] INFO: => OK
[10:32:35] INFO: Configuring MQTT...
[10:32:35] INFO: From Home Assistant service
[10:32:35] DEBUG: Requested API resource: http://supervisor/services/mqtt
[10:32:35] DEBUG: Request method: GET
[10:32:35] DEBUG: Request data: {}
[10:32:35] DEBUG: API HTTP Response code: 200
[10:32:35] DEBUG: API Response: {"result":"ok","data":{"host":"core-mosquitto","port":1883,"ssl":false,"protocol":"3.1.1","username":"addons","password":"xxxxxxxxxxxxxxxx","addon":"core_mosquitto"}}

[10:32:35] INFO: => OK
[10:32:35] INFO: ---------------------
[10:32:35] INFO: Checking configuration:
[10:32:35] INFO: /etc/nut/ups.conf
debug_min 5
[nutdev1]
	driver = "usbhid-ups"
	port = "auto"
	vendorid = "0463"
	productid = "FFFF"
	vendor = "EATON"
	bus = "002"
[10:32:35] INFO: /etc/nut/libnutdrv_mqtt.conf
MQTT_HOST=core-mosquitto
MQTT_USER=addons
MQTT_PASSWORD=xxxxxxxx
[10:32:35] INFO: => OK
[10:32:35] INFO: ---------------------
[10:32:35] INFO: Starting the SmartNUT Driver(s)...
libusb1: Could not open any HID devices: insufficient permissions on everything
No matching HID UPS found
Driver failed to start (exit status=1)
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
Network UPS Tools - UPS driver controller 2.8.0
cont-init: info: /etc/cont-init.d/smartnut.sh exited 1
cont-init: warning: some scripts exited nonzero
s6-rc: warning: unable to start service legacy-cont-init: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-timezone: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-timezone successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Can you enable the list usb devices and debug log options?
Another test would be to replicate manually the provided conf, in manual mode (disable USB autoconf) and remove the bus line

Yes sure !
Test1
Here is with enabled list usb device option :
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service base-addon-banner: starting
-----------------------------------------------------------

 Add-on: SmartNUT
 Smartly manage battery backup (UPS) devices
-----------------------------------------------------------
 Add-on version: dev
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.4  (amd64 / qemux86-64)
 Home Assistant Core: 2024.6.4
 Home Assistant Supervisor: 2024.06.0
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-timezone: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
[13:36:41] INFO: Configuring timezone (Europe/Paris)...
Log level is set to DEBUG
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service base-addon-timezone successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/smartnut.sh
[13:36:41] INFO: Connected USB devices:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 005: ID 0463:ffff MGE UPS Systems UPS
Bus 002 Device 004: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
[13:36:41] INFO: Autodetecting and configuring USB devices
Scanning USB bus.
[13:36:45] INFO: => OK
[13:36:45] INFO: Configuring MQTT...
[13:36:45] INFO: From Home Assistant service
[13:36:45] DEBUG: Requested API resource: http://supervisor/services/mqtt
[13:36:45] DEBUG: Request method: GET
[13:36:45] DEBUG: Request data: {}
[13:36:45] DEBUG: API HTTP Response code: 200
[13:36:45] DEBUG: API Response: {"result":"ok","data":{"host":"core-mosquitto","port":1883,"ssl":false,"protocol":"3.1.1","username":"addons","password":"xxxxxxxxx","addon":"core_mosquitto"}}

[13:36:45] INFO: => OK
[13:36:45] INFO: ---------------------
[13:36:45] INFO: Checking configuration:
[13:36:45] INFO: /etc/nut/ups.conf
debug_min 5
[nutdev1]
	driver = "usbhid-ups"
	port = "auto"
	vendorid = "0463"
	productid = "FFFF"
	bus = "002"
[13:36:45] INFO: /etc/nut/libnutdrv_mqtt.conf
MQTT_HOST=core-mosquitto
MQTT_USER=addons
MQTT_PASSWORD=xxxxxxxxx
[13:36:45] INFO: => OK
[13:36:45] INFO: ---------------------
[13:36:45] INFO: Starting the SmartNUT Driver(s)...
libusb1: Could not open any HID devices: insufficient permissions on everything
No matching HID UPS found
Driver failed to start (exit status=1)
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
Network UPS Tools - UPS driver controller 2.8.0
cont-init: info: /etc/cont-init.d/smartnut.sh exited 1
cont-init: warning: some scripts exited nonzero
s6-rc: warning: unable to start service legacy-cont-init: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-timezone: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-timezone successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Test2
And with manual conf :
autoconf_usb_devices: false
autoconf_remote_nut_devices: false
manually_edit_devices: true
devices:
  - name: Eaton-3S850
    driver: usbhid-ups
    port: auto
    config:
      - vendorid = 0463
      - productid = FFFF
mqtt: {}
log_level: debug
list_usb_devices: true

Logs :
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service base-addon-banner: starting
-----------------------------------------------------------

 Add-on: SmartNUT
 Smartly manage battery backup (UPS) devices
-----------------------------------------------------------
 Add-on version: dev
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.4  (amd64 / qemux86-64)
 Home Assistant Core: 2024.6.4
 Home Assistant Supervisor: 2024.06.0
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-timezone: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
[13:43:22] INFO: Configuring timezone (Europe/Paris)...
Log level is set to DEBUG
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service base-addon-timezone successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/smartnut.sh
[13:43:22] INFO: Connected USB devices:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 005: ID 0463:ffff MGE UPS Systems UPS
Bus 002 Device 004: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
[13:43:22] INFO: Applying manual devices configuration
[13:43:22] INFO: Configuring Device named Eaton-3S...
[13:43:22] INFO: => OK
[13:43:22] INFO: Configuring MQTT...
[13:43:22] INFO: From Home Assistant service
[13:43:22] DEBUG: Requested API resource: http://supervisor/services/mqtt
[13:43:22] DEBUG: Request method: GET
[13:43:22] DEBUG: Request data: {}
[13:43:22] DEBUG: API HTTP Response code: 200
[13:43:22] DEBUG: API Response: {"result":"ok","data":{"host":"core-mosquitto","port":1883,"ssl":false,"protocol":"3.1.1","username":"addons","password":"xe5ohshu4theeg7deiluw0weweshait9theishae5Ohmil9mei3AiYe3baitee9w","addon":"core_mosquitto"}}

[13:43:23] INFO: => OK
[13:43:23] INFO: ---------------------
[13:43:23] INFO: Checking configuration:
[13:43:23] INFO: /etc/nut/ups.conf
debug_min 5
[Eaton-3S]
	driver = usbhid-ups
	port = auto
  vendorid = 0463
  productid = FFFF
[13:43:23] INFO: /etc/nut/libnutdrv_mqtt.conf
MQTT_HOST=core-mosquitto
MQTT_USER=addons
MQTT_PASSWORD=xe5ohshu4theeg7deiluw0weweshait9theishae5Ohmil9mei3AiYe3baitee9w
[13:43:23] INFO: => OK
[13:43:23] INFO: ---------------------
[13:43:23] INFO: Starting the SmartNUT Driver(s)...
libusb1: Could not open any HID devices: insufficient permissions on everything
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
Network UPS Tools - UPS driver controller 2.8.0
No matching HID UPS found
Driver failed to start (exit status=1)
cont-init: info: /etc/cont-init.d/smartnut.sh exited 1
cont-init: warning: some scripts exited nonzero
s6-rc: warning: unable to start service legacy-cont-init: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-timezone: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service base-addon-timezone successfully stopped
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

We're digging together, since I've not coded the libusb1 backend, just all the rest 😅 and I'm now retired from opensource for years... So missing the exact current state. And that USB issue with nut on esxi seems general and not yet addressed.
I read the libusb1 code and it misses some logs to see the light.
So let's go empiric:

Test 3: add "user root" to either global or device entry, manual conf. Well see if it's udev or esxi
Test 4: bus + device in conf... Without user root..

(From my phone ..)

Thanks ! How can I change to use root user ?

devices:

name: Eaton-3S850
driver: usbhid-ups
port: auto
config:

vendorid = 0463
productid = FFFF
user = root

Should do it

Test 3 : with user root
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service base-addon-banner: starting
-----------------------------------------------------------

 Add-on: SmartNUT
 Smartly manage battery backup (UPS) devices
-----------------------------------------------------------
 Add-on version: dev
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.4  (amd64 / qemux86-64)
 Home Assistant Core: 2024.6.4
 Home Assistant Supervisor: 2024.06.2
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-timezone: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
[09:41:57] INFO: Configuring timezone (Europe/Paris)...
Log level is set to DEBUG
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service base-addon-timezone successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/smartnut.sh
[09:41:57] INFO: Connected USB devices:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 005: ID 0463:ffff MGE UPS Systems UPS
Bus 002 Device 004: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
[09:41:57] INFO: Applying manual devices configuration
[09:41:58] INFO: Configuring Device named Eaton-3S850...
[09:41:58] INFO: => OK
[09:41:58] INFO: Configuring MQTT...
[09:41:58] INFO: From Home Assistant service
[09:41:58] DEBUG: Requested API resource: http://supervisor/services/mqtt
[09:41:58] DEBUG: Request method: GET
[09:41:58] DEBUG: Request data: {}
[09:41:58] DEBUG: API HTTP Response code: 200
[09:41:58] DEBUG: API Response: {"result":"ok","data":{"host":"core-mosquitto","port":1883,"ssl":false,"protocol":"3.1.1","username":"addons","password":"xxxxxxxxxxxx","addon":"core_mosquitto"}}

[09:41:58] INFO: => OK
[09:41:58] INFO: ---------------------
[09:41:58] INFO: Checking configuration:
[09:41:58] INFO: /etc/nut/ups.conf
debug_min 5
[Eaton-3S850]
	driver = usbhid-ups
	port = auto
  vendorid = 0463
  productid = ffff
  user = root
[09:41:58] INFO: /etc/nut/libnutdrv_mqtt.conf
MQTT_HOST=core-mosquitto
MQTT_USER=addons
MQTT_PASSWORD=xxxxxxxxxxxx
[09:41:58] INFO: => OK
[09:41:58] INFO: ---------------------
[09:41:58] INFO: Starting the SmartNUT Driver(s)...
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
libusb1: Could not open any HID devices: insufficient permissions on everything
No matching HID UPS found
Driver failed to start (exit status=1)
Network UPS Tools - UPS driver controller 2.8.0
cont-init: info: /etc/cont-init.d/smartnut.sh exited 1
cont-init: warning: some scripts exited nonzero
s6-rc: warning: unable to start service legacy-cont-init: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-timezone: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service base-addon-timezone successfully stopped
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped

Test 4 : bus + device without user root
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service base-addon-banner: starting

-----------------------------------------------------------
 Add-on: SmartNUT
 Smartly manage battery backup (UPS) devices
-----------------------------------------------------------
 Add-on version: dev
 You are running the latest version of this add-on.
 System: Home Assistant OS 12.4  (amd64 / qemux86-64)
 Home Assistant Core: 2024.6.4
 Home Assistant Supervisor: 2024.06.2
-----------------------------------------------------------
 Please, share the above information when looking for help
 or support in, e.g., GitHub, forums or the Discord chat.
-----------------------------------------------------------
s6-rc: info: service base-addon-banner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service base-addon-timezone: starting
s6-rc: info: service base-addon-log-level: starting
s6-rc: info: service fix-attrs successfully started
[09:46:12] INFO: Configuring timezone (Europe/Paris)...
Log level is set to DEBUG
s6-rc: info: service base-addon-log-level successfully started
s6-rc: info: service base-addon-timezone successfully started
s6-rc: info: service legacy-cont-init: starting
cont-init: info: running /etc/cont-init.d/smartnut.sh
[09:46:12] INFO: Connected USB devices:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 005: ID 0463:ffff MGE UPS Systems UPS
Bus 002 Device 004: ID 0658:0200 Sigma Designs, Inc. Aeotec Z-Stick Gen5 (ZW090) - UZB
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
[09:46:12] INFO: Applying manual devices configuration
[09:46:12] INFO: Configuring Device named Eaton-3S850...
[09:46:12] INFO: => OK
[09:46:12] INFO: Configuring MQTT...
[09:46:13] INFO: From Home Assistant service
[09:46:13] DEBUG: Requested API resource: http://supervisor/services/mqtt
[09:46:13] DEBUG: Request method: GET
[09:46:13] DEBUG: Request data: {}
[09:46:13] DEBUG: API HTTP Response code: 200
[09:46:13] DEBUG: API Response: {"result":"ok","data":{"host":"core-mosquitto","port":1883,"ssl":false,"protocol":"3.1.1","username":"addons","password":"xxxxxxxxxx","addon":"core_mosquitto"}}

[09:46:13] INFO: => OK
[09:46:13] INFO: ---------------------
[09:46:13] INFO: Checking configuration:
[09:46:13] INFO: /etc/nut/ups.conf
debug_min 5
[Eaton-3S850]
	driver = usbhid-ups
	port = auto
  bus = 002
  device = 005
[09:46:13] INFO: /etc/nut/libnutdrv_mqtt.conf
MQTT_HOST=core-mosquitto
MQTT_USER=addons
MQTT_PASSWORD=xxxxxxxxxx
[09:46:13] INFO: => OK
[09:46:13] INFO: ---------------------
[09:46:13] INFO: Starting the SmartNUT Driver(s)...
libusb1: Could not open any HID devices: insufficient permissions on everything
No matching HID UPS found
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
Driver failed to start (exit status=1)
Network UPS Tools - UPS driver controller 2.8.0
cont-init: info: /etc/cont-init.d/smartnut.sh exited 1
cont-init: warning: some scripts exited nonzero
s6-rc: warning: unable to start service legacy-cont-init: command exited 1
/run/s6/basedir/scripts/rc.init: warning: s6-rc failed to properly bring all the services up! Check your logs (in /run/uncaught-logs/current if you have in-container logging) for more information.
/run/s6/basedir/scripts/rc.init: fatal: stopping the container.
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service base-addon-timezone: stopping
s6-rc: info: service base-addon-log-level: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service base-addon-log-level successfully stopped
s6-rc: info: service base-addon-timezone successfully stopped
s6-rc: info: service base-addon-banner: stopping
s6-rc: info: service base-addon-banner successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped


Generate empty javadoc jar to publish to Maven Central

Maven central does not allow publishing libraries without a JavaDoc jar. GraalVM packages do not contain any public APIs and hence all sources are in the implementation package. When generating JavaDocs, we configure the plugin to skip all classes in the implementation package which results in no JavaDoc jar getting generated, by default. So, this change is required to force the generation of an empty JavaDoc jar.

/check-enforcer override


Ghost geometries on animated model

Description
When using an animated model, some geometries keep persisted after the first frame. As shown:

Expected

Tested on:

gltf-viewer
VSCode extension - gltf tools

Filament and three.js

model-viewer

https://user-images.githubusercontent.com/49691924/106521765-805b5d80-64bd-11eb-8de7-2baeca4e20cd.mp4
Link to the model
I wish I could give more information about what is happening, but I haven't found the source of the issue.
Live Demo

https://honey-bittersweet-mink.glitch.me
https://glitch.com/edit/#!/honey-bittersweet-mink

Version

model-viewer: v1.4.1

Browser Affected

[x] Chrome
[ ] Edge
[x] Firefox
[ ] IE
[ ] Safari

OS

[ ] Android
[ ] iOS
[ ] Linux
[ ] MacOS
[x] Windows 10

I bet I know exactly the source of this bug, and I bet it's closely related to this comment: https://github.com/google/model-viewer/pull/1979#discussion_r566484397
I bet it only repros for transparent, double-sided materials, right?

I bet I know exactly the source of this bug, and I bet it's closely related to this comment: #1979 (comment)
I bet it only repros for transparent, double-sided materials, right?

According to the designer: "Yes, and adding backface culling on the material solved the issue"

Glad you have a workaround! I still need to get this fixed...


[Issues] Use ViewPager with TabLayout for list of issues

Due to lack of time, RecyclerView was used in commit 7c58def


EmrEtlRunner: add bootstrap action to prepare AMI 4.1.0 for Snowplow

This will download the correct version of the commons-codec jar.

Think this is not just specific to AMI 4.1.0, but all AMI 4.x.x?

It's AMI 3.8.0 and higher.

Cool - can we refine the ticket name please...

Done!


Add QueryOption support for column-level index skipping at query time

In some cases it may be beneficial to skip the usage of an index despite its existence, such as utilizing many inverted indices over many columns, and combining the resulting bitmaps.  It may be faster to use only the more highly selective index (if that can be known at query time) and instead scan those resulting documents to fulfill another filter (as opposed to fulfill that other filter via another index and combining the bitmaps).
Something like SET indexSkipList='col1:inverted,range;col2:inverted'; (especially if also combined with SET AndScanReordering = 'True';)

Thoughts on the list scheme? How should the index names be referenced? Re-using the names from the tableSpec looks a little bit odd as it would lead to things like SET indexSkipList='col1:invertedIndexColumns';. fieldConfigList.INDEX_TYPE might work, but I've forgotten whether that is the new format being moved towards, or the old format being deprecated.

+1 to this feature. We have this for StarTree index.

After a bit of thought, I'm more in favour of matching the generally-familiar URL params scheme: indexSkipConfig='col1=inverted,range&col2=inverted'. Thoughts?

I really like this feature. What I'm not sure about is the syntax. Not because I'm against URL params. But I would like to prioritize consistency here. It doesn't seem we have other query options where the value is a Map<String, Collection<T>>, so adding this feature as it is would mean that future options should use this syntax.

@gortiz totally makes sense that we should be more careful in cases of setting precedent.  Are there any similar features in other DBs that would provide familiar syntax? I'll take a look around

I did find that Impala[1] uses : as a delimiter for list-type options. Used in this issue context, it might look like: myColumn=inverted:range.  I'll look a bit more for other examples
[1] https://impala.apache.org/docs/build/html/topics/impala_default_hints_insert_statement.html

Thanks for your findings! Anyway, if there is no clean alternative, we can just apply the one you proposed with url arguments.


Using AWS S3 with Lambda gives "No Such Key" error on getObject

I am using AWS S3 for storing images with Lambda functions (for resizing images on request).
When I try getting the resized image after uploading the original it gives error as "No Such Key" (The specified key does not exist)
How my lambda function works
I have hosted my S3 bucket with redirect rules.
When a file URL (http://******.s3-website.ap-south-1.amazonaws.com/4cpLYeFK4oxPSYQJi-original.jpg) is hit it returns the file.
Whenever a file's URL with width x height specifications is visited it runs the lambda function and creates the file in a folder named with the same resolution.
eg: http://*****.s3-website.ap-south-1.amazonaws.com/300x300/4cpLYeFK4oxPSYQJi-original.jpg
this creates 4cpLYeFK4oxPSYQJi-original.jpg with 300x300 specification in a folder named "300x300".
Typically my bucket looks like

I grabbed ideas for the above from here
Image Upload & Download Server Functions
/* Few Lines Skipped */

if (s3Conf && s3Conf.key && s3Conf.secret && s3Conf.bucket && s3Conf.region) {
  // Create a new S3 object
  const s3 = new S3({
    secretAccessKey: s3Conf.secret,
    accessKeyId: s3Conf.key,
    region: s3Conf.region,
    // sslEnabled: true, // optional
    httpOptions: {
      timeout: 6000,
      agent: false
    }
  });

  // Declare the Meteor file collection on the Server
  Images = new FilesCollection({
    collectionName: 'Images',
  storagePath:Meteor.settings.public.imagesPath,
  allowClientCode: false, // Disallow remove files from Client
  onBeforeUpload(file) {
    // Allow upload files under 10MB, and only in png/jpg/jpeg formats
    if (file.size <= 10485760 && /png|jpg|jpeg/i.test(file.extension)) {
      return true;
    }
    return 'Please upload image, with size equal or less than 10MB';
  },
    // Start moving files to AWS:S3
    // after fully received by the Meteor server
    onAfterUpload(fileRef) {
      // Run through each of the uploaded file
      _.each(fileRef.versions, (vRef, version) => {
        // We use Random.id() instead of real file's _id
        // to secure files from reverse engineering on the AWS client
        const filePath =  (Random.id()) + '-' + version + '.' + fileRef.extension;

        // Create the AWS:S3 object.
        // Feel free to change the storage class from, see the documentation,
        // `STANDARD_IA` is the best deal for low access files.
        // Key is the file name we are creating on AWS:S3, so it will be like files/XXXXXXXXXXXXXXXXX-original.XXXX
        // Body is the file stream we are sending to AWS
        s3.putObject({
          // ServerSideEncryption: 'AES256', // Optional
          StorageClass: 'STANDARD',
          Bucket: s3Conf.bucket,
          Key: filePath,
          Body: fs.createReadStream(vRef.path),
          ContentType: vRef.type,
        }, (error) => {
          bound(() => {
            if (error) {
              console.error(error);
            } else {
              // Update FilesCollection with link to the file at AWS
              const upd = { $set: {} };
              upd['$set']['versions.' + version + '.meta.pipePath'] = filePath;
              //cloning original for thumbnail
              var thumbnail = fileRef.versions.original;
              thumbnail.meta={};
             // thumbnail.path = thumbnail.path.substr(0,thumbnail.path.indexOf("."))+"-300x200."+thumbnail.extension;
              thumbnail["meta"]['pipePath'] = "300x200/"+filePath;
              upd['$set']['versions.300x200']=thumbnail;
              console.log(thumbnail);
              this.collection.update({
                _id: fileRef._id
              }, upd, (updError) => {
                if (updError) {
                  console.error(updError);
                } else {
                  // Unlink original files from FS after successful upload to AWS:S3
                  this.unlink(this.collection.findOne(fileRef._id), version);
                }
              });
            }
          });
        });
      });
    },

    // Intercept access to the file
    // And redirect request to AWS:S3
    interceptDownload(http, fileRef, version) {
      let path;

      if (fileRef && fileRef.versions && fileRef.versions[version] && fileRef.versions[version].meta && fileRef.versions[version].meta.pipePath) {
        path = fileRef.versions[version].meta.pipePath;
      }
      if (path) {
        // If file is successfully moved to AWS:S3
        // We will pipe request to AWS:S3
        // So, original link will stay always secure

        // To force ?play and ?download parameters
        // and to keep original file name, content-type,
        // content-disposition, chunked "streaming" and cache-control
        // we're using low-level .serve() method
        const opts = {
          Bucket: s3Conf.bucket,
          Key: path
        };

        if (http.request.headers.range) {
          const vRef  = fileRef.versions[version];
          let range   = _.clone(http.request.headers.range);
          const array = range.split(/bytes=([0-9]*)-([0-9]*)/);
          const start = parseInt(array[1]);
          let end     = parseInt(array[2]);
          if (isNaN(end)) {
            // Request data from AWS:S3 by small chunks
            end       = (start + this.chunkSize) - 1;
            if (end >= vRef.size) {
              end     = vRef.size - 1;
            }
          }
          opts.Range   = `bytes=${start}-${end}`;
          http.request.headers.range = `bytes=${start}-${end}`;
        }
      const fileColl = this;

        s3.getObject(opts, function (error,data) {
          if (error) {
            console.error(error); //Here Im Struck with the error
            if (!http.response.finished) {
              http.response.end();
            }
          } else {
            if (http.request.headers.range && this.httpResponse.headers['content-range']) {
              // Set proper range header in according to what is returned from AWS:S3
              http.request.headers.range = this.httpResponse.headers['content-range'].split('/')[0].replace('bytes ', 'bytes=');
            }

            const dataStream = new stream.PassThrough();
            fileColl.serve(http, fileRef, fileRef.versions[version], version, dataStream);
            dataStream.end(this.data.Body);
          }
        });

        return true;
      }
      // While file is not yet uploaded to AWS:S3
      // It will be served file from FS
      return false;
    }
  });

On the above code, when I upload the file I clone the version.original object to an another version "300x200".
Error Object

What goes behind?
When I visit the local URL (created by meteor files) for the version 300x300, the sdk is trying to get the object which is not physically present there (when we request for the file in URL it invokes the Lambda fn and creates the file) and returns the No such key Error Code.
I need the lambda function to be invoked when I request for the file which then creates the file and returns as a response.
Is it an Issue ?? or Am I doing it wrong?

Hello @jacksonrufusk ,
As you can see we send/request files to/from AWS:S3 by its key which stored as filePath variable.
But when you create thumbnail object you simply set its key to "300x200/"+filePath while it's okay, you also should associate this key with thumb which would be created only in a future upon request.
What should you do, - find a way to add a key to thumb's object at AWS:S3 after it's created at Lambda.

Here is my Image object

The problem is the Lambda function is invoked and then creates the file (which is on the key) only when we visit the URL on the browser, but not when we access it through the SDK.
Is there any way to achieve it..??

The problem is the Lambda function is invoked and then creates the file (which is on the key) only when we visit the URL on the browser, but not when we access it through the SDK.

Well, then instead of accessing a file via SDK, request it via HTTP. Something like:
request.get({ url: '<URL to the FILE>' }).pipe(http.response);

Where can I get the exact file URL in the bucket??!!

@jacksonrufusk above you've said:

only when we visit the URL on the browser

I assume you can access it via URL

I have added the End Point URL of my S3 bucket hosting into my settings (S3 Config)file.
Then when user uploads the file, after putObject a HTTP get request is made for the resize to a URL. The request will create the resized file in the bucket. later when it accessed through the SDK it displays the image perfectly.
here is my code
###settings.json
{
	"s3": {
    "key": "Key here",
    "secret": "Secrect Key Goes Here",
    "bucket": "*****",
    "region": "ap-south-1",
    "endPoint":"http://*****.s3-website.ap-south-1.amazonaws.com"
  }
}

onAfterUpload
onAfterUpload(fileRef) {
      // Run through each of the uploaded file
      _.each(fileRef.versions, (vRef, version) => {
        // We use Random.id() instead of real file's _id
        // to secure files from reverse engineering on the AWS client
        const filePath =  (Random.id()) + '-' + version + '.' + fileRef.extension;

        // Create the AWS:S3 object.
        // Feel free to change the storage class from, see the documentation,
        // `STANDARD_IA` is the best deal for low access files.
        // Key is the file name we are creating on AWS:S3, so it will be like files/XXXXXXXXXXXXXXXXX-original.XXXX
        // Body is the file stream we are sending to AWS
        s3.putObject({
          // ServerSideEncryption: 'AES256', // Optional
          StorageClass: 'STANDARD',
          Bucket: s3Conf.bucket,
          Key: filePath,
          Body: fs.createReadStream(vRef.path),
          ContentType: vRef.type,
        }, (error) => {
          bound(() => {
            if (error) {
              console.error(error);
            } else {
              // Update FilesCollection with link to the file at AWS
              const upd = { $set: {} };
              upd['$set']['versions.' + version + '.meta.pipePath'] = filePath;
              //cloning original for thumbnail
              var thumbnail = fileRef.versions.original;
              thumbnail.meta={};
             // thumbnail.path = thumbnail.path.substr(0,thumbnail.path.indexOf("."))+"-300x200."+thumbnail.extension;
              thumbnail["meta"]['pipePath'] = "300x200/"+filePath;
              upd['$set']['versions.300x200']=thumbnail;

              HTTP.call('GET', s3Conf.endPoint+"/"+thumbnail["meta"]['pipePath']);

              this.collection.update({
                _id: fileRef._id
              }, upd, (updError) => {
                if (updError) {
                  console.error(updError);
                } else {
                  // Unlink original files from FS after successful upload to AWS:S3
                  this.unlink(this.collection.findOne(fileRef._id), version);
                }
              });
            }
          });
        });
      });
    }

Thank you for your time.
Hope I am doing it right on my way, If not let me know..

@jacksonrufusk Hi there,
would there be any advantage for you to create the thumb right when the original file is written to S3? This is how I do it and if you want the same, I have the Lambda function for this using ImageMagic, optimized pretty well for small file size.
Regards,
Paul

Thanks, @paulincai  Can you share them.. !!
The function I use for resizing is grabbed from here.
@dr-dimitru  Definitely that would be the better Idea as the resources are very limited (it took 3 days for me to reach the solution) right now.

@paulincai let me know if you want to send a PR to our Wiki, or just post script and your thoughts/notes here, and someone from the team will manage it.

@dr-dimitru Let me first try a PR please.

Hi @dr-dimitru, not sure you noticed, a PR was sent the same day.

@paulincai sorry, for delay.
Yes, I saw it, and forgot to ask to re-send it to dev branch 😬
And now I see you've change it.
I'll review and merge it tonight.
Thank you, and sorry again for delay.

@dr-dimitru there is no delay at all. I actually use that in production

@paulincai thank you a lot for contribution 🎉
Pardon me for delay on it. Docs are live at Wiki.
Added minor styling fixes. Added fix for this comment, could you take a look at it?
I'll merge dev to master with next release.

@paulincai could you please quickly take a look on this comment?


Integrated tile editor.

It's kind of troublesome to go between GB studio and and tiled, always having to export a map as an image every time I want to make a change to a room.
I think it would be much more efficient to have a tile editor integrated with the studio, streamlining the room creation/editing process.

This has been requested several times. The consensus is that it’s not worth the time right now because there are limited devs working on it and an application like Tiled is dedicated to the function, so it has a lot more features than an integrated tile editor would
Basically, integrating a tile editor would take time a way from bug fixes and features when it already exists so it’s not a priority

duplicate of https://github.com/chrismaltby/gb-studio/issues/1021

OK, I understand. Thank you for your time.


[BUG] 1.4.2

Thank you for this huge update I love it!!
I'm still testing right now but I will keep add if I found new bug
"ItemComplete"
BUG 1. if I change "ShowOnScoreboard" to True it doesn't show on scoreboard
BUG 2. ShowItemName : true, the mask only work on Blue Side (Left), Red Side the mask doesn't work
"ObjectiveKill"
BUG 3. If I change UseVideo to True the Video showing only 1 to 2 sec

I have not added scoreboard yet. I will have to add proper documentation for what works, what doesnt, and how.
ForceDisplayDurationForVideo = true should make the video play for its entire duration, otherwise the duration set by DisplayDuration will be used

I have not added scoreboard yet. I will have to add proper documentation for what works, what doesnt, and how.
ForceDisplayDurationForVideo = true should make the video play for its entire duration, otherwise the duration set by DisplayDuration will be used

Thank you for quick replay
it's set as true for ForceDisplayDurationForVideo but it play 1 to 2 sec and goes away :(
and Found the new bug for teamcolor
if I change ingame.json file
I change the Circle Color "UseTeamColor" to false and if I change the score from LeagueBroadcast program the color goes back to team color

https://youtu.be/JPPmihaAdNI?t=984
CS/min working fine
Player Gold working fine
EXP per player
missing 2 people avatar
https://youtu.be/JPPmihaAdNI?t=1370
Item Finish offset is higher then Player Gold

hey I just want to make sure this is you

Yes that is me, thanks for confirming

Both champ indicators and indicator height fixed in latest commits


typo in example variable name $queueMessage != $QueueMessage (upper Q)

Create a new message using a constructor of the CloudQueueMessage class
$queueMessage = [Microsoft.Azure.Storage.Queue.CloudQueueMessage]::new("This is message 1")
Add a new message to the queue
$queue.CloudQueue.AddMessageAsync($QueueMessage)

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

ID: 7dee2eb5-36a3-51a4-d251-bd04dafcdd72
Version Independent ID: 3917ff8a-fc5c-a322-fff1-7bac71799525
Content: How to use Azure Queue Storage from PowerShell - Azure Storage
Content Source: articles/storage/queues/storage-powershell-how-to-use-queues.md
Service: storage
Sub-service: queues
GitHub Login: @normesta
Microsoft Alias: normesta

Thanks for the feedback! I have assigned the issue to the content author to investigate this and update the document as appropriate.

Thank you for finding this! I've made the correction. The updated content will appear live after 3 PM today.
Thx again!
#please-close


Game Crash

The game crashes when I run the game
The game runs fine if I remove this mod from the "mods" folder
Other mods that I use:
Auto Reset 1.2.0
Fast Reset 1.4.0
Lazy DFU 0.1.2
Lithium 0.6.3
Sodium 0.1.1
Starlight 1.0.0 RC2
Voyager 1.0.0

can you send logs pleaee?

Here it is
2022-01-25-2.log

update your fabric loader.

Oh, that's a simple fix. Thanks a lot for your help!