argmin / argmax behavior doesn't match documentation

The documentation reads

Returns:
reduced : DataArray
New DataArray object with argmin applied to its data and the indicated dimension(s) removed.

However, what happens is that the numpy argmin output (single index into the flattened array at which the maximum/minimum is found) is wrapped in a dummy DataArray (similar behavior for Datasets also):
[In1]: x = np.linspace(0,1,5)

[In2]: y = np.linspace(0,1,6)

[In3]: z = np.random.randn(5,6)

[In4]: example = xr.DataArray(z, {'x':x,'y':y},('x','y'))

[In5]: print(example.argmin())

[Out5]: <xarray.DataArray ()>

        array(10)

[In6]: example_ds = xr.Dataset(data_vars={'ex':example})

[In7]: print(example_ds.argmin())

[Out7]: <xarray.Dataset>

        Dimensions:  ()

        Data variables:

        ex       int64 10

I realize that maybe for compatibility reasons it is necessary to make Datasets/DataArrays do this, but it seems like the documented behavior would be nicer.  At any rate, the documentation should match the behavior.
Specs:
python 2.7
xarray 0.9.1
numpy 1.11.3

Agreed, the current implementation of argmin() only gives the correct result when given one dimension. It's not entirely obvious what argmin() should yield when done to multiple dimensions, certainly this is not very useful. I would prefer raising an error to this current behavior.

Well, xarray at least agrees with numpy's implementation of that function, but that's not to say it is 'correct.' It would be nice if numpy.argmin worked intuitively. That aside, it seems to me that applying min() to a xr.DataArray should return a reduced array with length 1 in each dimension; then you could just query this object and find the coordinate/dimension values. Perhaps then argmin() would just get a tuple of axis indices, such that arr[*arr.argmin()] == arr.min() would hold.
The next question is, what happens if you start supplying coordinate/dimension optional arguments to argmin?   It doesn't make sense to minimize over a coordinate, so only dimensions should be accepted.  This should result in a tuple of lists, the way numpy.where does.
Does that seem reasonable?

I agree that arr[arr.argmin(dim)] == arr.min(dim) is a useful invariant, but currently xarray's indexing works a little differently from NumPy. Probably arr.isel_points(**arr.argmin(dim)) == arg.min(dim) is the better invariant for now, and in the future arr[arr.argmin(dim)] will change to work consistently (#974).
The main downside of returning a tuple or dict from argmin() is that it makes the common case of taking the max/min over one dimension a little harder. So possibly it would be better to write two methods:

argmin would work like it does currently (returning an xarray object), but error if reducing over multiple dimensions.
argmin_indices would return a dict suitable for use in indexing.

I'm working to fix this and I would like to make some design decisions;

What should max() look like?
I guess this method should work also for multi-dimensional data.
To satisfy the arr.isel_points(**arr.argmin_indices(dim)) == arg.min(dim) relation,
the result array should have proper coordinates?

Multiple dim arguments
Currently, doc says argmin accepts multiple axes, but np.argmin does not.
Can we limit argmin's arguments only str not sequence or strs?

I am thinking again how argmin should work with our new vectorizing indexing #1639 .
It would be great if arr.isel(**arr.argmin(dim)) == arr.min(dim) could be satisfied even with a multi-dimensional array, although the behavior is different from numpy.argmin.
(Maybe our current min should be replaced by arr.isel(**arr.argmin(dim)) so that it preserves the coordinates.)
(We discussed the name for this new method in #1469 but here I just use argmin for the simplicity.)
For example with a three dimensional array with dims=['x', 'y', 'z'], such as
arr = xr.DataArray(np.random.randn(4, 3, 2), dims=['x', 'y', 'z'])
I am thinking that...

arr.argmin() would return a xr.Dataset which contains 'x', 'y', 'z' as its data_vars.

ds = arr.argmin(dims=None) case:

ds['x'], ds['y'], ds['z'] would be 0d-integers.

ds = arr.argmin(dims=['x', 'y']) case:

ds['x'], ds['y'], ds['z'] would be 1d-integer-arrays.
The dimension of these three arrays would be 'z_argmin', where ds['z_argmin'] == arr['z'].

ds = arr.argmin(dims='x') case:

ds['x'], ds['y'], ds['z'] would be 2d-integer-arrays.
The dimensions of these three arrays are 'y_argmin' and 'z_argmin', where ds['y_argmin'] == arr['y'] and ds['z_argmin'] == arr['z'].

The above proposal for ii (and iii) is not quite clean, as if it is used as an argument of isel, it appends a new coordinate 'z_argmin', which is just a duplicate of 'arr['z']', i.e.
arr.isel(**arr.argmin(dims=['x', 'y']))['z_argmin'] == arr['z'].
Any thoughts are welcome.

I just came across the various argmax/idxmax (and related min) related issues recently in a project I have been working on. In addition to agreeing that docs should be updated when appropriate here are my two or three cents:

As someone new to xarray I like the idea of having both argmax/argmin and argmax_indices/argmin_indices, with the former returning the coordinate indices and the latter the underlying numpy indices analogous to numpy.argmax/numpy.argmin methods. This makes migrating from numpy ndarrays data and collection of associated index arrays obvious (a common path into the xarray world I think).
I can also get that idxmax/idxmin might make a better name given that one can have multi-indexed coordinates. If both argmax and idxmax methods are retained probably good to have docs cross reference.
In any case, to respond to @fujiisoup's above proposal, I like the idea of retaining the dimension names in the output, and adding a dimension to hold argmax dims, but think it might make more sense to output a DataArray. By way of example, if I had something like:

size = (2,2,2,2)
dims = list("wxyz")
data = np.random.rand(*size)
coords = {dim:["{0}_{1}".format(dim,s) for s in range(s)] for dim,s in zip(dims,size)}
da = xr.DataArray(data, dims=dims, coords=coords)

>>>da
<xarray.DataArray (w: 2, x: 2, y: 2, z: 2)>
array([[[[ 0.149945,  0.230338],
         [ 0.626969,  0.299918]],

        [[ 0.351764,  0.286436],
         [ 0.130604,  0.982152]]],

       [[[ 0.262667,  0.950426],
         [ 0.76655 ,  0.681631]],

        [[ 0.635468,  0.735071],
         [ 0.901116,  0.601303]]]])
Coordinates:
  * w        (w) <U3 'w_0' 'w_1'
  * x        (x) <U3 'x_0' 'x_1'
  * y        (y) <U3 'y_0' 'y_1'
  * z        (z) <U3 'z_0' 'z_1'

I would like to get something like the following
>>>argmax(da)
<xarray.DataArray '_argmax' (argmaxdim: 4)>
array(['w_0', 'x_1', 'y_1', 'z_1'],
      dtype='<U3')
Coordinates:
  * argmaxdim  (argmaxdim) <U1 'w' 'x' 'y' 'z'

>>>argmax(da, dim=list("wy"))
<xarray.DataArray '_argmax' (x: 2, z: 2, argmaxdim: 2)>
array([[['w_1', 'y_1'],
        ['w_1', 'y_0']],

       [['w_1', 'y_1'],
        ['w_0', 'y_1']]], dtype=object)
Coordinates:
  * x          (x) object 'x_0' 'x_1'
  * z          (z) object 'z_0' 'z_1'
  * argmaxdim  (argmaxdim) <U1 'w' 'y'

where the order of the dims in the unreduced and argmax cases are in the right order as above. For reference, just in case that these examples aren't enough to generalize, a horribly inefficient implementation of above (assuming unique maximum indices):
def _argmaxstackeddim(dastacked, ind):
    keepdims = dastacked.indexes['keepdims'].names
    values = dastacked.keepdims.values[ind]
    coords = {keepdim:[val] for keepdim,val in zip(keepdims,values)}
    result = dastacked.sel(keepdims=values)\
                      .pipe(argmax)\
                      .expand_dims(keepdims)\
                      .assign_coords(**coords)
    return result

def argmax(da, dim=None):
    daname = "" if da.name is None else da.name
    name = daname+"_argmax"
    if dim is None:
        maxda = da.where(da == da.max(),drop=True)
        dims = list(maxda.dims)
        dimmaxvals = [maxda.coords[dim].values[0] for dim in dims]
        result = xr.DataArray(dimmaxvals,
                              dims='argmaxdim',
                              coords={'argmaxdim':dims},
                              name = name)
        return result
    else:
        if isinstance(dim,str):
            dim = [dim]
        keepdims = [d for d in da.dims if d not in dim]
        dastacked = da.stack(keepdims = keepdims)
        slices = [_argmaxstackeddim(dastacked,i) for i in range(len(dastacked.keepdims))]
        return  xr.merge(slices)[name]

@gajomi
Sorry for my late response and thank you for the proposal.
I was thinking whether such aggregation methods (including argmin) should propagate the coordinate.
For example, as you pointed out, in theory, we may be able to track x-coordinate at the argmin index after da.argmin(dim='x').
But it is not reasonable for da.mean(dim='x').
It may be reasonable for da.max(dim='x') but not for da.median(dim='x').
Such specific rules may be confusing and bring additional complexity.
I think the rule
we do not track coordinates after aggregations
would be much simpler and easier to understand.
If we adopt the above rule, I think the argmin would give just an array of indices,
In [1]: import xarray as xr
   ...: da = xr.DataArray([[0, 3, 2], [2, 1, 4]], dims=['x', 'y'],
   ...:                   coords={'x': [1, 2], 'y': ['a', 'b', 'c']})
   ...:

In [4]: da.argmin(dim='x')
Out[4]:
<xarray.DataArray (y: 3)>
array([0, 1, 0])
Coordinates:
  * y        (y) <U1 'a' 'b' 'c'

In [3]: da.isel(x=da.argmin(dim='x'))
Out[3]:
<xarray.DataArray (y: 3)>
array([0, 1, 2])
Coordinates:
    x        (y) int64 1 2 1
  * y        (y) <U1 'a' 'b' 'c'

I think your logic would be useful even we do not track the coordinate.
I would appreciate any feedback.

I think it would be fine to add a special case to preserve coordinates corresponding to min/max values with xarray's min() and max() methods, but I don't feel strongly about this. The exact coordinates could be surprising if there are multiple min/max values.
I agree that it does not make sense to preserve coordinates along aggregated dimensions for argmin/argmax, but we can preserve other coordinates. So I like @fujiisoup's example behavior above.
I suppose we now have two candidate APIs for returning multiple indices from a method like argmin/argmax:

Add an additional dimension, e.g., argmaxdim for keeping track of multiple indices.
Return a dict or Dataset with multiple indices.

I think my favorite option is (2) with da.argmin_indices() returning a Dataset, which will allow da[da.argmin_indices()] to work after we finish switching __iter__ to only iterate over data variables (https://github.com/pydata/xarray/issues/884#issuecomment-338445322). One downside of this approach is that it is not obvious how we woudl define argmin_indices() to work on a Dataset, but that's probably OK given that you cannot use a Dataset (yet) for indexing.
My concern with adding an additional dimension is that it is always a little surprising and error-prone when we invent new dimension names not supplied by the user (for example, this can lead to conflicting names). Also, consolidating indices will not work as well with idxmin(), which might put indices of different dtypes in the same array.
Either way, I would like a separate dedicated method for returning multiple indexing arrays. It's convenient (and what users expect) for argmax to return a single array if taking the max only over one dimension. However, if we switch to add an argmaxdim or return a dict/Dataset for multiple dimensions, then we will end up with an annoying inconsistency between the 1D and N-D versions. It would be better to say argmax(dim) is only for one dimension (and raise an error if this is not true) and have the separate argmax_indices(dims) that is consistently defined for any number of dimensions.

@fujiisoup and @shoyer
Really enlightening comments above. I think I am starting to get the dao of xarray a bit better :)

I was thinking whether such aggregation methods (including argmin) should propagate the coordinate.

Agreed it would be nice to have a consistent and well reasoned rule for coordinate propagation in aggregation methods. I think a key point here, which gets brought up in your example is that it might make sense to have different subrules depending on the semantics of the operation. Functions like argmax are explicitly concerned with underlying "indices" (dimensions or otherwise) and so may call for different behavior from the mean, which explicitly is explicitly invariant under permutations of the underlying indices. The max/min/median functions are interesting case to think about, in that they are also invariant with under change of underlying indices, but can have potentially more than one index that they are associated with and do not "destroy" information about the value at those indices.

My concern with adding an additional dimension is that it is always a little surprising and error-prone when we invent new dimension names not supplied by the user (for example, this can lead to conflicting names)

Yeah, I felt a little dirty appending '_argmax'.

I think my favorite option is (2) with da.argmin_indices() returning a Dataset, which will allow da[da.argmin_indices()]

OK. I think I understand now why @fujiisoup proposed output a Dataset rather than an array. That's a natural syntax for getting the values from the indices.

Either way, I would like a separate dedicated method for returning multiple indexing arrays.

+1 to dedicated adding more methods if needed, since I think even if it isn;t needed the associated docs will need to make sure users are aware of the analogous idx* methods if they get added.

I think this is fixed now thanks to @johnomotani


Add Github Actions config for deployment

You must add an Access Token for Github Pages as a variable: https://help.github.com/en/github/automating-your-workflow-with-github-actions/virtual-environments-for-github-actions#creating-and-using-secrets-encrypted-variables
ref: #7

Unfortunately, it's not working. It will be great if you test in your repo first.

Did you add the environment variable?

Yes

error from build
npm ERR! missing script: gatsby

See #12

Still, error, did it worked on your repo?


strava: Don't hammer the API when we get HTTP 429

When we get an HTTP 429 (rate limit exceeded), back off for a few
seconds before trying again.

Current behavior is not great, when we get errors we just retry continually.


Supporting Marginalia (Queries Commenting Their Source)

hi, really enjoying SQLx so far. One thing in particular I'm missing from a past ruby-life is something that I always knew as "marginalia" which came from the name of the gem that was used. Effectively what marginalia does is turn a query that say looks like this:
SELECT * FROM table WHERE table.id = 1111 LIMIT 1;
Into one that looks like:
SELECT * FROM table WHERE table.id = 1111 LIMIT 1; /*file:app/a/b.rb,controller:my_controller,line:21*/
--- There was an option to 'prepend' it for those that normally truncated query logs.
/*file:app/a/b.rb,controller:my_controller,line:21*/ SELECT * FROM table WHERE table.id = 1111 LIMIT 1;

This made it useful for two reasons:

From a DBA's perspective you could just look at the database, and immediately know which area of the code was problematic to your DB (and in a set of large-teams all contributing to the same app file a ticket appropriately). (In fact, tools like pganalyze automatically extract this information: https://pganalyze.com/docs/enterprise/releases/2018-02-0 )
If you were using some abomination to combine a query string making it hard to grep for, if you had a query that had been run ever -- you could track it down pretty easily.

I'd really like to have the option to do something like it in SQLx, my initial attempt (which looked effectively something like this when you take away other app wrappers/etc.:
macro_rules! marginalize {
  ($query:expr) => {
    concat!(
      $query,
      " /* file:",
      file!(),
      ",line:",
      line!(),
      ",column:",
      column!(),
      ",module:",
      module_path!(),
      "*/"
    )
  };
}

let user_opt = sqlx::query_as!(
  UserModel,
  margianlize!(
    r#"SELECT * FROM users WHERE id = $1;"#,
    [id],
  ),
).fetch_optional(&pool).await?;

This fails because we aren't passing a literal in (and even switching to + like: $query + "/*file:" + file!() fails as soon as it hits file!() because it's not a literal.) Very eager to build this in, but I wanted to get the opinions from everyone on it, as well as any ideas for what the best path forward would be if others like it.

I like this idea. I think we could work it into the regular query path with #[track_caller] so it works even if you're not using the macros. It could be really useful for the built-in query logging as well.
One thing that mildly concerns me is that this wouldn't play all that well with prepared statement caching. It'd work fine, but if the same query appears in multiple places that would mean redundant entries in the cache. Because of that, I would probably make this behavior opt-in.
I'm thinking of a flag on ***ConnectOptions, e.g.:
impl PgConnectOptions {
    pub fn caller_info_in_query(&mut self, enable: bool) -> &mut Self;

    pub fn caller_info_format(&mut self, fmt: impl Fn(&mut std::fmt::Formatter, &std::panic::Location) -> fmt::Result) -> &mut Self;
}

Thanks @abonander,
I like the idea of using #[track_caller] I wasn't sure if this was possible, but that's mainly due to my own lack of understanding at looking into SQLx and what's run at compile time vs not. I agree it's probably something that should be optional, I think we'll also want a prepend vs append option so the interface will probably look like:
impl PgConnectOptions {
    pub fn caller_info_in_query(&mut self, enable: bool) -> &mut Self;

    pub fn caller_info_prepend(&mut self, should_prepend: bool) -> &mut Self;

    pub fn caller_info_format(&mut self, fmt: impl Fn(&mut std::fmt::Formatter, &std::panic::Location) -> fmt::Result) -> &mut Self;
}

ditto for MySQL,etc. Does that sound good to you?

Lastly I'd be happy to sort of do this myself, but am not that familiar with where everything would land -- if you have some tips on where to start looking that'd be appreciated (if not that'd be okay!)

I'm wondering if we can roll this together with #1695 somehow in an ergonomic but maximally flexible way.
I'm thinking a builder struct where you can set these options as well as a custom formatter and targets. Thoughts?

Hmmm. I do think there will be the same set of options in the options, but I don't think tieing these together realistically makes sense. Other than having them be configured through the same place (but I imagine these aren't also the first options on a db connection either). My big reason for this is probably although they both include formatting:

The things users send to application logs probably don't want to all be in the DB (the db is a very narrow "location finder" and that's about it, where as with app we probably want a lot more info like user, etc). As you mentioned especially with the threat of blowing up the shared prepared statement cache if you add too much cardinality there. Where as in app logs users probably want a lot more cardinality driven fields.
Users probably won't always want those two things in the same format. E.g. for marginalia we want a simple key/value so it can be picked up by tools I'm buying/using that support the key:value, iteration, versus application logging where I may want some super fancy text with colors, or json formatting, or any of the other variety.

It feels like the logger interface covers much more, and also needs a lot more flexibility. While the marginalia interface is fairly simplistic and should ideally remain that way to not run over your DB.

Hmm, yeah I forgot that you actually want this to modify the query string that's sent to the server. In that case I agree, it doesn't make sense to try to stick them together. The std::panic::Location could be useful to provide to the custom logger in #1695 though.
How about this for the API:

pub struct QueryMarginalia {
    // ...
}

impl QueryMarginalia {
    pub fn builder() -> QueryMarginaliaBuilder;
}

impl QueryMarginaliaBuilder {

    // Or a single setter with enum `QueryMarginaliaLocation`?
    pub fn append(&mut self) -> &mut Self;

    pub fn prepend(&mut self) -> &mut Self;

    /// Add a key/value pair to all marginalia entries.
    pub fn add(&mut self, key: impl Display, value: impl Display) -> &mut Self;

    pub fn add_caller_info(&mut self) -> &mut Self;

    // Where `Query` has the SQL string, the marginalia entries, and the caller location
    pub fn format(&mut self, format: impl Fn(Query, &mut Formatter) -> fmt::Result) -> &mut Self;
}

impl Into<QueryMarginalia> for &mut QueryMarginaliaBuilder { ... }
impl Into<QueryMarginalia> for QueryMarginaliaBuilder { ... }

impl PgConnectOptions {
    pub fn query_marginalia(&mut self, query_marginalia: impl Into<QueryMarginalia>) -> &mut Self;
}

One thing is that the impl of Display for std::panic::Location uses the format <file>:<line>:<column> and so might break the key:value format unless properly escaped. What do you think would be a more appropriate format? Passing file, line, and column as separate keys?

Yeah agreed on the on the custom logger having a use for std::panic::Location.
I like that API for the most part, but I'm thinking we should combine append to prepend to a single method otherwise there might be some confusion in edgecases (e.g.) what happens if I call:
builder.append().prepend().append()

This is a very ridiculous example (and would probably never happen, even spread across libraries as builders), but still no reason to introduce it I think!
So realistically I think having:
pub struct QueryMarginalia {
    // ...
}

impl QueryMarginalia {
    pub fn builder() -> QueryMarginaliaBuilder;
}

impl QueryMarginaliaBuilder {
    /// defaults to false
    pub fn should_prepend(&mut self, prepend: bool) -> &mut Self;

    /// Add a key/value pair to all marginalia entries.
    pub fn add(&mut self, key: impl Display, value: impl Display) -> &mut Self;

    pub fn add_caller_info(&mut self) -> &mut Self;

    // Where `Query` has the SQL string, the marginalia entries, and the caller location
    pub fn format(&mut self, format: impl Fn(Query, &mut Formatter) -> fmt::Result) -> &mut Self;
}

impl Into<QueryMarginalia> for &mut QueryMarginaliaBuilder { ... }
impl Into<QueryMarginalia> for QueryMarginaliaBuilder { ... }

impl PgConnectOptions {
    pub fn query_marginalia(&mut self, query_marginalia: impl Into<QueryMarginalia>) -> &mut Self;
}

What do you think would be a more appropriate format? Passing file, line, and column as separate keys?

Yeah ideally those are all separate keys (As that's what existing tools do -- I'm not super tied to this, but probably a good idea to match)

what happens if I call:
builder.append().prepend().append()

It would just be whatever the last one you called.
The reason I'm pushing for something in this vein is that it's not great API design to associate something that isn't a clear positive/negative switch with a boolean. .should_prepend(false) doesn't tell you a whole lot about what it's supposed to do instead of prepending. Appending seems the obvious alternative to you, but not necessarily to everyone. Someone else might interpret it to mean that it shouldn't do anything at all.
Technically, what you're supposed to do here is introduce a new enum, e.g.:
pub MarginaliaPosition {
    Prepend,
    Append
}

impl QueryMarginaliaBuilder {
    pub fn position(&mut self, position: MarginaliaPosition) -> &mut Self;
}

but from an API usage perspective I'm personally not a big fan of one-off enums for little things like this because it's a separate item I have to think about. Looking at the docs for position wouldn't tell me about the possible options at a glance, I'd have to click through to MarginaliaPosition. Examples can help with this, I guess.
I was thinking this would be an internal enum set by .append() and .prepend() to make things easy.

The reason I'm pushing for something in this vein is that it's not great API design to associate something that isn't a clear positive/negative switch with a boolean. .should_prepend(false) doesn't tell you a whole lot about what it's supposed to do instead of prepending. Appending seems the obvious alternative to you, but not necessarily to everyone. Someone else might interpret it to mean that it shouldn't do anything at all.

This is a great point, and not something I thought about. I do think there is still confusion on the multiple-callee case that isn't quite obvious to me just as should_prepend isn't obvious.

Yeah technically you could have the same issue no matter the design:
builder.should_prepend(true).should_prepend(false).should_prepend(true)

builder.position(MarginaliaPosition::Prepend).position(MarginaliaPosition::Append).position(MarginaliaPosition::Prepend)

Yeah the issue does technically exist but to me those two seem a bit more clear that they're a replacement, as opposed to append/prepend which doesn't let me know it's an exclusive choice (it's one or the other). But again I think that's probably a much less likely case.

I've been recently using google cloud SQL's Query Insights that also natively supports this kind of commented metadata:
https://cloud.google.com/sql/docs/postgres/using-query-insights#adding-tags-to-sql-queries
Google's recommended client library for this is their own sqlcommenter. From the page it looks like key/values are URL encoded, but I haven't searched up any documentation to actually verify this.
In any case, this seems like an excellent feature for sqlx 👍

If this feature is added it would be nice if the use case of encoding OpenTelemetry traceparent data was considered or ideally even built-in as a feature.


Update bug-report.md

Pull request type
Please check the type of change your PR introduces:

[ ] Bugfix
[ ] Feature
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[x] Documentation content changes
[ ] Other (please describe):

Info
Removed the discord link and replaced with a link to the github discussions page
Does this introduce a breaking change?

[ ] Yes
[x] No

@all-contributors please add @ktw717 for code, docs


[Feature] Support compact rocksdb meta action

What type of PR is this：

[ ] bug
[x] feature
[ ] enhancement
[ ] refactor
[ ] others

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Support compact rocksdb meta use http api
Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] I have added user document for my new feature or new function

run starrocks_be_build

run starrocks_be_unittest

12:58:27 /root/starrocks/be/src/http/action/compact_rocksdb_meta_action.cpp: In member function 'void starrocks::CompactRocksDbMetaAction::_compact(starrocks::HttpRequest*)':
12:58:27 /root/starrocks/be/src/http/action/compact_rocksdb_meta_action.cpp:24:16: error: 'class starrocks::ExecEnv' has no member named 'storage_engine'; did you mean 'starrocks::StorageEngine* starrocks::ExecEnv::_storage_engine'? (not accessible from this context)
12:58:27    24 |     _exec_env->storage_engine()->do_manual_compact(true);
12:58:27       |                ^~~~~~~~~~~~~~
12:58:27 In file included from /root/starrocks/be/src/storage/page_cache.h:30,
12:58:27                  from /root/starrocks/be/src/storage/rowset/page_handle.h:25,
12:58:27                  from /root/starrocks/be/src/storage/rowset/segment.h:34,
12:58:27                  from /root/starrocks/be/src/storage/rowset/rowset.h:37,
12:58:27                  from /root/starrocks/be/src/storage/tablet_meta.h:36,
12:58:27                  from /root/starrocks/be/src/storage/base_tablet.h:27,
12:58:27                  from /root/starrocks/be/src/storage/tablet.h:37,
12:58:27                  from /root/starrocks/be/src/storage/storage_engine.h:50,
12:58:27                  from /root/starrocks/be/src/http/action/compact_rocksdb_meta_action.cpp:10:
12:58:27 /root/starrocks/be/src/runtime/exec_env.h:267:20: note: declared private here
12:58:27   267 |     StorageEngine* _storage_engine = nullptr;
12:58:27       |                    ^~~~~~~~~~~~~~~
12:58:27 make[2]: *** [src/http/CMakeFiles/Webserver.dir/action/compact_rocksdb_meta_action.cpp.o] Error 1
12:58:27 make[1]: *** [src/http/CMakeFiles/Webserver.dir/all] Error 2

The compilation fail.

run starrocks_be_build

run starrocks_admit_test

cc @chaoyli PTAL thanks

run starrocks_admit_test


[FEAT] split pyroboxCore and doc use as import

split done in develop branch

Split is complete, but needs proper documentation.


Use 2 digit precision

I believe it would be great to show the Packet Loss with two digits precision so that we can interpret it as an SLA 99.xx%
For good and healthy connections the percentage quickly goes to 0% and even if there is some packets lost, it is not enough to reach near the 0.5% needed to change the rounding.
Could you add this feature or make it user defined?
Thanks in advance, I have this pin in my browser at all times!

Good idea. Done. You should see the change now after a cache clearing refresh.

Also always curious to hear how people found the site if you don't mind sharing.

I got to know the page by reading the newletter: "Your Linux and Technology Insights 2024-06-24" from LinuxBlog.io (formerly haydenjames.io)


feat: JSON5 support for module parameters

Added JSON5 parser support to be used for module parameters.
Resolves #790 as per the discussion within the issue.
Added integration test for JSON5 parameter parser.

JSON5 parser is used for both JSON and JSON5 files, as JSON5 is compatible with that as well. If there are any performance concerns on this, I can edit the parsing logic to adhere to file extension and use the respective parser, but I doubt performance is a concern for module parameters at this level.

[!NOTE]
Although I didnt touch the code in any other part, test from other packages randomly failed for me, so at some point I ran the JSON5 tests with:
pnpm --filter ./packages/hardhat-plugin test

Can you also pull the latest development branch from the hardhat-ignition repo and rebase your branch onto it. That should fix the CI

updated! hoping that CLI passes 🙏🏻

@erhant Can you rebase your branch so that your two commits are the only commits in the PR please? It looks like something went wrong when you tried to merge our dev branch into yours and that's why the CI is failing.

to be clear, these are the only two commits that should be in the PR:

added json5 parsing with test
casing + resolveParametersString

hmm okay so by syncing the fork using merge alone I may have caused some trouble for the rebase on my end, I should have done git pull --rebase most likely.
I will simply close this PR and re-open it with a cleaner branch, with a single commit on top of f3dc8ad that is the latest development branch.
Here is the new PR: https://github.com/NomicFoundation/hardhat-ignition/pull/800


[pt] Convolutional neural networks

@gabriel19913 could you check this out for me, please?

@gabriel19913 could you check this out for me, please?

I just did it. :)

@gabriel19913 fixed the revision. @shervinea I think it is good to go, but can wait for Gabriel's feedback.
Also added Gabriel in the document as the revisor.

@gabriel19913 now its done I think :)

Good job @leportella I think we are good to go @shervinea.

Thank you both @leportella @gabriel19913 for your awesome work!


Update discord user styles on front end.

Make smaller and more web responsive.

Hey, @dm0896665  I would like to work on this issue since I'm new to opensource contribution
don't know from where to start. Can you please assign this to me as I have to get started :)

Hey, @dm0896665 I would like to work on this issue since I'm new to opensource contribution don't know from where to start. Can you please assign this to me as I have to get started :)

Hey, @Krish-bhardwaj we are currently not having any outside contributions on this project. If you would like to find a spot to start you could try looking into this repo/ issue: https://github.com/Sub6Resources/flutter_html/issues/62 **Note that it's tagged with a good first issue tag. Lots of repositories have tags like this, so if you are not a fan of that one you can look more into other ones and really search for that tag. And if you are looking into other open-source HTML/CSS projects to help build your portfolio try this site out https://awesomeopensource.com/projects/html-css Sorry again, and good luck out there! :D


Support running on browser.

What is this?
This make the Spear to support running on browser. In this patch, several mechanism for it.

InMemory File System: We should manipulate a file in memory.
Separate the node realted code:

Separate the sitemap generation.
Separate the SCSS compile.

In this patch, the compiling SCSS is skelton implementation. Next part PR will fix it 🙏🏼

@qst-exe
Thank you for your comment 👍🏼
I addressed this according to your suggestion.


Add mauth for real authorization

Copied from Gaia branch.
I had to update from v3.0.0-alpha2. I think I made all needed API changes, but something fails now.

Probably better just to import a recent version once https://github.com/cosmos/interchain-accounts-demo/issues/91 gets resolved


Docker Hub repository errantly lacks the tag "0.16.0"

Hello,
Thanks for a wonderful tool.
Today I tried
$ docker pull uphold/litecoin-core:0.16.0
Error response from daemon: manifest for uphold/litecoin-core:0.16.0 not found

I then noticed that at

https://hub.docker.com/r/uphold/litecoin-core/tags/

There is no such tag, despite it being listed in the documentation (https://github.com/uphold/docker-litecoin-core#tags)
What do you think?
James

Hello all,
I tried again just now:
$ sudo docker pull uphold/litecoin-core:0.16.0
Error response from daemon: manifest for uphold/litecoin-core:0.16.0 not found

(The tag is still listed at https://github.com/uphold/docker-litecoin-core#tags).
How could we remedy this?
James

0.16.0 has a major security bug. See: https://www.reddit.com/r/Bitcoin/comments/9hkoo6/new_info_escalates_importance_upgrading_to_0163/
Your best bet is probably to just fork this repo and set up your own Dockerfile that pulls in 0.16.3.

All versions are being updated on Docker Hub. Thanks!


failing test in pyGraphMolWrap testCrambin

Configuration:

RDKit Version: 2019.09.3
Operating system: CentOS 7.7
Python version (if relevant): 3.7.4
Are you using conda? no
If you are not using conda: how did you install the RDKit? installed from source (with custom easybuild script)

Description:
On certain CPU architectures, there is one test that fails with the error message given below. I suspect that this failure can be ignored, since (320, 326, 321) is equivalent to (320, 321, 326)? If so, maybe the test should be adapted to allow for this result to pass?
...
FAIL: testCrambin (__main__.TestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "rough_test.py", line 3994, in testCrambin
    self.assertEqual(matches, ((166, 167, 168), (298, 299, 300), (320, 321, 326)))
AssertionError: Tuples differ: ((166, 167, 168), (298, 299, 300), (320, 326, 321)) != ((166, 167, 168), (298, 299, 300), (320, 321, 326))

First differing element 2:
(320, 326, 321)
(320, 321, 326)

- ((166, 167, 168), (298, 299, 300), (320, 326, 321))
?                                             -----

+ ((166, 167, 168), (298, 299, 300), (320, 321, 326))
?                                          +++++

----------------------------------------------------------------------
Ran 183 tests in 4.841s

FAILED (failures=1)

code:
python rough_test.py

Interesting.  @smoors , can you share which architecture you had the problem on?

@greglandrum this failure happened on a Broadwell CPU. I did not see this on both Ivybridge and Skylake. it is also the only test that failed.

these are the compiler flags I used: -O2 -ftree-vectorize -mavx2 -fno-math-errno

Can you please try just doing -O2 and seeing if they works?

-O2 gives the same result. but is it really a problem?

Don’t think it’s a problem, I’m mainly curious


Add markers to Animation

Bugsquad edited:

Closes https://github.com/godotengine/godot-proposals/issues/2159
Closes https://github.com/godotengine/godot-proposals/issues/8414
Closes https://github.com/godotengine/godot-proposals/issues/8526

This PR introduces a marker system for Animations. Markers are keys that are inserted alongside the timeline, and can be used to play specific parts of animations. A pair of markers is called a section.
For the Animation resource class, there are now new methods to query marker information with.
For AnimationPlayer, there is now a new play_section method that can be used to specify a pair of markers that denote a playback section.

When the start marker is set to an empty string, the system interprets it as the start of the original animation, and when the end marker is set to an empty string, the system interprets it as the end of the original animation.

The vanilla play method is equivalent to passing empty strings as start and end markers to play_section.

Markers can be placed beyond the original animation's length, in which case the AnimationMixer effectively does nothing while playing the out-of-range part of the section. (FEEDBACK WELCOME: Is this behavior desirable?)  The AnimationMixer will clamp the end of the section so it does not exceed the Animation's length.
In the Animation editor, new markers can be inserted by right-clicking the timeline and then selecting a name through a dialog.

Names have to be unique. The validation panel in the dialog will alert the user and prevent them from creating a second marker with the same name.

Select two markers and the section between them will be highlighted in red. Clicking play buttons will then make AnimationPlayer play the section.

play_section uses the original Animation's loop mode.

https://github.com/godotengine/godot/assets/56677134/a57ed7ee-8287-4b77-9fce-a50410e92218
For AnimationTree, specifically AnimationNodeAnimation, Custom Timelines can now be configured using the Set Custom Timeline from Marker button.

Clicking the button opens up a dialog that lets you select a start marker and an end marker. The start marker's time is copied to the timeline's start offset, and the end marker's time is copied to the timeline's length.

https://github.com/godotengine/godot/assets/56677134/46368b3d-40ee-4ba2-834e-1cc1bda9343a

Exists the possibility to can loop a specific section only for a finite number of cycles?

Exists the possibility to can loop a specific section only for a finite number of cycles?

It would be easily implementable by GDScript when/if https://github.com/godotengine/godot/pull/89525 gets merged.

I'm interested in markers for animation, will try to review for Godot Engine 4.4.

I had been discussing and supervising on discord with @chocola-mint before this was sent, so this PR should be quite clean in terms of architectural design.
I will test the behavior in more detail later, but I send feedback at this stage:

AnimationPlayer needs an api to set/unset section during playback.
In AnimationTree, this corresponds to the enabling of the use custom timeline option in the AnimationNode.
The API allows for A-B repeats in a Start-A-B animation, including the intro animation like Start-A-B-A-B-A-B... .
BTW sorry, the use custom timeline option in AnimationNode is newly implemented and I found a problem with the offset being inverted. I have sent an urgent PR about this as https://github.com/godotengine/godot/pull/91822 and would appreciate it if you could take a look at it and proceed with the implementation.

The warning about duplicate names when adding markers is not needed. It should be consistent with the GUI when adding other animation resources.

↓

New icons for markers need to be added. How about the following?

Markers.zip

AnimationPlayer needs an api to set/unset section during playback. It corresponds to the enabling of the use custom timeline option in the AnimationNode in AnimationTree.

AnimationPlayer::set_current_section lets the user change the current section during playback. To avoid issues with pingpong playback, the current animation position is clamped to the new section.

The warning about duplicate names when adding markers is not needed. It should be consistent with the GUI when adding other animation resources.

https://github.com/godotengine/godot/assets/56677134/6246032c-ab65-4742-b5f0-dc728bb62251

For usability, can the marker name be displayed in tool tip when focused? Also, it would be helpful to have a shortcut such as ctrl+m (or other shortcut is fine as well as it doesn't conflict) to display the name under the all markers.

For usability, can the marker name be displayed in tool tip when focused? Also, it would be helpful to have a shortcut such as ctrl+m (or other shortcut is fine as well as it doesn't conflict) to display the name under the all markers.

Markers could also be given a color (either random based on their name, or a custom color) so you can distinguish them from each other.

https://github.com/godotengine/godot/assets/56677134/66ed4c41-81c0-4ff6-b410-fda0575b7a00
(Shortcut: Key M when AnimationMarkerEdit is focused)
As it's not possible to force the tooltip to show up on demand, I've opted to just draw the markers' names beneath their marker keys. Would this work?
As AnimationMarkerEdit is currently a descendant of AnimationTimelineEdit in the scene tree, it will be drawn before other AnimationTracks, and so the marker names will get darkened by AnimationTrack groups. I haven't figured out a workaround for this yet, unfortunately.

This is looking pretty neat and it's really exciting having markers in Godot. Also, these are more cosmetic suggestions, but I think they would be nice additions:

being able so select which color the marker is when creating them (or after, in the dropdown menu with the mouse on it) —  allows color-coding markers for  better organization.
Using a more blue-ish color for highlighting sections — it would fit more with Godot's color scheme.
Have markers' names displayed only by using shortcut and the dropdown option — This makes it so it shows up only when necessary.

Using a more blue-ish color for highlighting sections — it would fit more with Godot's color scheme.

I don't think this needs to be changed since we are already using the same color code as the animation key, but I agree with the rest.

https://github.com/godotengine/godot/assets/56677134/b7cfd71d-ba84-482b-a5b9-4a75a50225cb

You can now pick the color when inserting a new marker.
You can now use the dropdown menu option "Edit Marker" to change an existing marker's name or color. The shortcut key E also works.
Marker color won't be used when the marker is selected.
Marker names are not shown by default and can be toggled with the shortcut key M or the dropdown menu option "Show Marker Names".

Just cleaned up the commit history. No additional changes have been made.

@Calinou

The last created marker's color seems to occasionally reset to white while editing animations for an unknown reason.

I had apparently forgotten to set the marker's color after moving. This has now been fixed.

Marker names can be unreadable on light theme depending on their color.

Fixed by adding 1px outlines to the text. The outline color is the same as the theme's font color, therefore it should have good visibility regardless of the theme.

The Edit Marker dialog should allow precisely setting the time the marker is located at. This also allows you to visually confirm the marker is positioned at the right time.

When a section of the timeline is highlighted in red, I suggest drawing the highlight on the background of the animation tracks as well. This makes it easier to see where the markers begin/end when your animation editor is made tall (which is common when editing complex animations).

For reasons similar to the above, I suggest making markers draw a thin vertical line (with low opacity) as a background of the animation tracks, with their respective color.

Added. See clip below.

https://github.com/godotengine/godot/assets/56677134/322f7944-7134-4582-9f13-d0e28b273c86
@AThousandShips
Styling-related changes have also been applied as requested. Please let me know if there are other parts I should change.

As 4.3 has reached beta, will this feature be included in 4.4? Am I correct?
Thank you for the work; it's so useful 🙏
I can't wait to use it since I need it for my game!

@chocola-mint For consistency and fewer clicks, can you provide an inspector for markers instead of opening the edit window from the right-click menu, you can refer to the EditorInspectorPluginAnimationTrackKeyEdit implementation.

As 4.3 has reached beta, will this feature be included in 4.4? Am I correct?

Like most feature PRs, the goal is to merge it in 4.4, but we can't guarantee this will happen.

Like most feature PRs where the functionality is desired and the implementation is sound, the goal is to merge it in 4.4, but we can't guarantee this will happen (e.g. due to external factors).

Sounds fair. As usual no pressure about it, I am always amazed by the work done and excited to try it 😁
Thank you for the answer and great PR! No pressure, take time to deliver quality and obviously everyone needs to take care of themselves first 🙏

@TokageItLab

BTW, it seems marker icon has been rolled back, needs to fix.

Fixed, see below.

For consistency and fewer clicks, can you provide an inspector for markers instead of opening the edit window from the right-click menu? You can refer to the EditorInspectorPluginAnimationTrackKeyEdit implementation.

https://github.com/godotengine/godot/assets/56677134/31cd6b51-38c9-45b6-9350-f950eb27f038
Also, when the input name is invalid (marker already exists / name is empty), a warning message is shown and the faulty input is ignored.
https://github.com/godotengine/godot/assets/56677134/44c95c1f-1823-4349-a8aa-761dca51a300

(Sorry about all the unrelated commits a few minutes ago, which probably caused a lot of unnecessary tagging. Messed up some git commands when squash-merging)
@TokageItLab
I've handled the suggested changes. See the clip below:
https://github.com/godotengine/godot/assets/56677134/fa62fdeb-fe88-4122-9cda-fd3d0972250c
However, I wasn't able to replicate this bug:

Deleting a marker after changing the marker's color in the inspector causes an error

It'd be very helpful if you could give me the exact steps needed to replicate the bug (or a video showing it happening). Thanks in advance.

Would it be possible to incorporate the description field mentioned in godotengine/godot-proposals#10223 into this PR as well, and have that show when you hover over a marker, same as Time and Name currently?

@mihe It may be possible to add a description field, but it must be editor-specific.
However, I personally don't agree with that, as I don't see the need to have some information on the marker besides the marker name. If you really want it, I think you should create an add-on that stores them in the meta data of the Animation with a map that corresponds markers to descriptions.

It may be possible to add a description field, but it must be editor-specific

@TokageItLab Yes, sorry, I should've clarified that. This would purely be a design-time thing, and could probably be excluded from exports entirely, if that's possible.

However, I personally disagree with that, as I don't see the need to have some information on the marker besides the marker name

When working on larger teams of people and complex animations it can become necessary to put longer notes/comments in the timeline, not much different from code comments I guess, and seeing as how the marker names in this PR are largely meant to be code identifiers rather than lengthy descriptions I don't see them obviating the need for a proper description field.

We should not have the property of the user description specifically only for the marker as ignoring consistency with any other resource.

Sure, Resource-derived objects don't typically have this kind of description field, but seeing as how Node does have editor_description there's at least some kind of (relatively widespread) precedent for this kind of thing in Godot already.

If you really want it, I think you should create an add-on that stores them in the meta data of the Animation with a map that corresponds markers to descriptions.

That's certainly a possibility, if nobody else sees the motivation for this.

Brought the PR up to date with master (4.3). Mostly just replacing float comparisons with approx comparison functions.
To add to the discussion of having addons that associate data with markers, though...
Currently each marker's data is serialized as a Dictionary with the following fields:

name: The marker's name.
time: The marker's position in the timeline.
color: The marker's color.

I'm considering replacing the color field with:

data: A Dictionary that contains the marker's color field.

When markers are moved, the data Dictionary is moved as well. This would make it easier for other PRs in the future to associate additional data with each marker. (By just adding a new field to the Dictionary) I think this is a more future-proof design and would make adding additional data less error-prone.
In the same vein, I want to add a meta field to the data Dictionary, which is just a Dictionary that the user can freely extend with get_marker_meta(name : StringName) and set_marker_meta(name: StringName, value: Variant). (Similar API to Object.get_meta and Object.set_meta)
Any feedback on this idea would be appreciated. Thanks in advance!

@chocola-mint Need to rebase.

@TokageItLab

I would like to add a feedback, it should avoid the side-effect seek that occurs with a single click to select a marker, but seek to the marker position on a double click to a marker.

Done.
https://github.com/user-attachments/assets/b6c234ca-5405-4f79-ade2-13293d8de14c

I disagree both ways. In order to enable merging, I suggest not adding any meta, data or description for now. It should probably be discussed carefully, and in my opinion, should be added to a base class such as the Resource class. If you want to add data later, you can write compatibility methods in the _set(), _get() method later to store past color into data, as some migrated resources already do so. Also, in any case, we must avoid to use Dictionary internally in most cases from a performance standpoint.

That makes sense. I'll drop the idea for now, then. We can revisit this part if/when there's a new proposal for it in the future.

Regarding the suggested changes: I've updated the code accordingly. However, implementing custom parsing in parse_begin means that the Animation Node Animation header will appear after the custom editor.

void EditorInspectorPluginAnimationNodeAnimation::parse_begin(Object *p_object) {
	Ref<AnimationNodeAnimation> animation_node_animation(cast_to<AnimationNodeAnimation>(p_object));

	List<PropertyInfo> props;
	ClassDB::get_property_list("AnimationNodeAnimation", &props, true);
	for (const PropertyInfo &prop : props) {
		EditorProperty *editor = EditorInspectorDefaultPlugin::get_editor_for_property(p_object, prop.type, prop.name, prop.hint, prop.hint_string, prop.usage, false);
		add_property_editor(prop.name, editor, false, prop.name.capitalize());
	}

	add_custom_control(memnew(AnimationNodeAnimationEditor(animation_node_animation)));
}

If this isn't desirable, I can also use parse_property to draw loop_mode's editor manually, then insert custom editor after that. The code would then look like this:

bool EditorInspectorPluginAnimationNodeAnimation::parse_property(Object *p_object, const Variant::Type p_type, const String &p_path, const PropertyHint p_hint, const String &p_hint_text, const BitField<PropertyUsageFlags> p_usage, const bool p_wide) {
	Ref<AnimationNodeAnimation> animation_node_animation(cast_to<AnimationNodeAnimation>(p_object));

	if (p_path == "loop_mode") {
		EditorProperty* editor = EditorInspectorDefaultPlugin::get_editor_for_property(p_object, p_type, p_path, p_hint, p_hint_text, p_usage, p_wide);
		add_property_editor(p_path, editor, false, p_path.capitalize());

		add_custom_control(memnew(AnimationNodeAnimationEditor(animation_node_animation)));

		return true;
	}

	return false;
}

@AThousandShips Suggested changes have been added to the PR.

@chocola-mint Oh sorry, you are right. But the button does not absolutely have to be placed at the bottom, it just needs to be under custom_timeline, so it can be written as follows:
bool EditorInspectorPluginAnimationNodeAnimation::parse_property(Object *p_object, const Variant::Type p_type, const String &p_path, const PropertyHint p_hint, const String &p_hint_text, const BitField<PropertyUsageFlags> p_usage, const bool p_wide) {
	Ref<AnimationNodeAnimation> ana = Ref<AnimationNodeAnimation>(Object::cast_to<AnimationNodeAnimation>(p_object));
	ERR_FAIL_NULL_V(ana.ptr(), false);

	if (p_path == "timeline_length") {
		add_custom_control(memnew(AnimationNodeAnimationEditor(ana)));
	}

	return false;
}

@TokageItLab Got it. I've also taken care of the suggested changes.
Here's how the inspector looks now.

@TokageItLab
I've merged the patch into the PR (and reading the patch it did make a lot of sense), though regarding this line in particular:
undo_redo->add_do_method(*animation_node_animation, "set_timeline_length", end_time);

This is intentional. Custom timelines, as far as I can tell from the code, uses "start offset" in the same sense as "start time" (how much to trim off the start of the animation), and "timeline length" in the same sense as "end time" (how much to trim off the end of the animation). Therefore using the actual length of the section here would yield incorrect results.
As for the rest of the suggested changes, I've included them as well.

Also, some behavior on some editors is a bit erratic and needs to be fixed:

Behavior when a section is set while playing without a section
When a section is playing with 3 or more markers selected, and the number of markers selected is reduced
Behavior when a section outside the animation length is specified

Behavior when a section is set while playing without a section

New behavior: Animation preview is paused if a section is set here.

When a section is playing with 3 or more markers selected, and the number of markers selected is reduced

New behavior: If the section formed by the leftmost and rightmost marker selected has changed, animation preview is paused. Otherwise nothing happens.

Behavior when a section outside the animation length is specified

The current behavior is to clamp the end of the section within the animation's original length. This is consistent with the current markers API and so I don't think it needs to be changed.

@TokageItLab
I've updated the playback behavior of sections accordingly. The AnimationPlayer will still be paused and reset if the new section is invalid (when the leftmost marker is beyond the animation length), but otherwise it will use set_current_section to dynamically clamp the playback position to the new section. If the user tries to play an invalid section, the attempt will also be ignored.
https://github.com/user-attachments/assets/69bebab0-c4e8-4603-b13a-d6cb58dcfa22
I've also merged most of the suggested changes. Input validation for sections is also added to play_section, and the documentation has been updated accordingly.

@TokageItLab Here's the new version. The system no longer pauses when sections go out-of-range. To generalize this more nicely, start/end times greater than the animation length will also be considered illegal values and use default values instead. This
https://github.com/user-attachments/assets/996a11c3-8826-43b6-8ba6-e924166dd919
Currently there's a bug with how AnimationPlayer::PlaybackData's current isn't actually set until after the first playback, even though assigned has been set. (This is because stop is immediately called, causing current.from to be set to nullptr) This will cause AnimationPlayer::set_current_section to fail initially before the first playback, but does not actually result in incorrect results. I can't think of a good workaround for this outside of exposing a function that returns playback.current.from != nullptr. Might need more feedback here.

Did you change anything in gui input? I can't insert marker by right click now.

Nope. No changes in gui input. Works perfectly fine on my machine too. Perhaps it's something else?
(Suggested changes have been merged)

Nope. No changes in gui input. Works perfectly fine on my machine too. Perhaps it's something else?

Clicks in the timeline area seem to be unresponsive. Maybe there was something in the fix for drawing the section.

It seems that there is a bug in the current master where the Anmation resource is always null, apart from this PR. That may be the cause.

This is a major change and I have reviewed it quite carefully, but in case it is possible, it might be better to have someone else see it. cc @fire @SaracenOne @lyuma
Also, I think there is still room to modify the warning text or documentation. cc @AThousandShips @Mickeon

I'll give this a look, I have some project setups which should hopefully allow me to test this.

I want to look into this a bit deeper myself before I feel fully comfortable giving the go ahead to merge. I agree that even if that even if the root motion problem has issues elsewhere, something here has exacerbated the problem. The thing I'm discovering now that may help narrow this down is that the root motion breaking doesn't just happen in any context, but its specifically breaking when used in the context of a blendspace.

This PR does not change much about the AnimationTree; there are some known issues with RootMotion blending, so https://github.com/godotengine/godot/issues/95688 may give you a hint.

Hmm...I've been doing testing myself, but @TokageItLab can you confirm if this is the same issue you're describing: it seems that what is happening on my end is that code that calculates the prev_time value when the root motion track loops is basically being set to NaN, and the reason its doing that is that when played in the AnimationTree, the playback info's end time is 0.0. I'm not 100% if this is the same issue you're describing, or if this is something seperate, but it at least explains why the specific problem I've encountered is only happening in the AnimationTree.

Since I know we want to get this in and I feel like its a good implementation of this feature which will unlock a lot of advanced features we can do with animation playback in the future, I won't block this any further if we would prefer to fully debug root motion issues seperately. I just wanted to be sure we're talking about the same bug.

I could be completely wrong, but is it possible that inserting something like:
		pi.start = start_offset;
		pi.end = cur_len;

On line 255 of animation_blend_tree.cpp be what missing here due to these values seemingly not being set, but used for the root motion calculation since this PR?

This on line 246 of animation_blend_tree.cpp seems to work pretty reliably.
	if (!p_test_only) {
		AnimationMixer::PlaybackInfo pi = p_playback_info;
		if (play_mode == PLAY_MODE_FORWARD) {
			pi.time = cur_playback_time;
			pi.delta = cur_delta;
		} else {
			pi.time = anim_size - cur_playback_time;
			pi.delta = -cur_delta;
		}
		pi.start = 0.0;
		pi.end = cur_len;
		pi.weight = 1.0;
		pi.looped_flag = looped_flag;
		blend_animation(animation, pi);
	}

@SaracenOne Ah indeed, those values are newly implemented in the PlaybackInfo, but the value set on the AnimationTree side seems to be missing.
So it would make sense to set the values, but in my opinion they need to be set earlier, as they are valid outside of the if !(p_test_only) block. Also, I think it should consider respecting the custom_timeline's offset value, do you have any idea?

@TokageItLab Hmm...do we perhaps want to assign the playback_info's end value in the AnimationNode's base process method from the length value as a default, but then use the varying cur_len variable in the AnimationNodeAnimation's _process function to accomodate for the fact that we can override an animation's length? I'm concerned about nodes where we don't have an overall length we can determine, but it seems the end value is really only currently being used in the context of explicit animation blending with an actual animation, so it's probably fine.

Thanks!

Would it be possible to make it so when an animation reaches a marker, a signal is made? This would greatly simplify timer-based features in a sequence.
For example;
func _ready():
   animation.play()

func _on_animation_marker_passed(animation_name, marker_name):
   if animation_name = my_animation && marker_name = my_first_marker:
      spawn(my_object_1)
   if marker_name = my_second_marker:
      spawn(my_object_2)

Thank you for your work btw :D

@ComfyZenny Wouldn't it be enough to just call the emit_signal function in MethodTrack? We need to be careful about having duplicate functions.


App closes whole connection to the car

I had to drive for longer distances this weekend, and after about 45 minutes the app closes and the music turned off, without doing anything. I have installed the newest nightlies.

Does the Apps connection remain open ? Also, what BMW app are you using ? (Connected or the new MyBMW)
There has been some talk on #149 about MyBMW having poor stability with keeping the Apps connection up.

Yes, check the car's Bluetooth settings to confirm whether the Apps checkbox stays checked. BMWConnected/MyBMW manage this tunnel, and if they close the tunnel for any reason, AAI will be disconnected and the music will stop.
Without pulling out the phone, you can disconnect the Bluetooth Music in the car and reconnect it, and the apps tunnel should start back up and the music will resume.


Mongo 4.0.x: unable to create user

Affected Puppet, Ruby, OS and module versions/distributions

Puppet: 5.5.6
Ruby: 2.5.1
Distribution: Ubuntu 18.04
Module version: 2.4.1
mongodb-org-server: 4.0.5

How to reproduce (e.g Puppet code you use)
class { 'mongodb::server':
    create_admin => true,
    admin_username => 'admin',
    admin_password => 'test123',
}

or
create_resources('mongodb::db', $mongo_dbs)

What are you seeing
Every puppet run completes successfully and states that the user(s) have been created. This causes the puppet runs to never get to a stable state.
The response json from the generated mongo command points out, that SCRAM-SHA-256 (default mechanism in mongodb 4.0.x) requires that the digest is done on the server (= digestPassword: true)
see https://docs.mongodb.com/manual/reference/command/createUser/ for reference.
What behaviour did you expect instead
Either:
The user is created.
Provide a parameter to customize the values of digestPasswort/mechanism.
The puppet run fails with an error (but that would require parsing the output).
Any additional information you'd like to impart
As a workaround I use a custom systemd dropin file for mongod which adds --setParameter authenticationMechanisms=SCRAM-SHA-1,PLAIN to the ExecStart to disable SCRAM-SHA-256

Following fork fixed this for me: https://github.com/datty/puppet-mongodb
Note that in this fork your admin user has to be named admin in order to use the create_adminuser function. I created a subfork to only do this for the database named admin. But I guess maybe a boolean would be better.
original: https://github.com/datty/puppet-mongodb
mySubFork: https://github.com/negast/puppet-mongodb

@negast @datty Tried with the original and sub-fork to create admin user, but it failed with following message during puppet pull:
Error: Could not prefetch mongodb_database provider 'mongodb': undefined local variable or method n' for Puppet::Type::Mongodb_database::ProviderMongodb:Class Did you mean?  n_                N_ Error: Failed to apply catalog: undefined local variable or method n' for Puppet::Type::Mongodb_database::ProviderMongodb:Class
Did you mean?  n_
N_

The fork is based on an old version. Maybe @negast can update it ? Or get it merged ? It is fixed with commit e27e9f027d3b052ff418fe431c21c237abacd574

Any chance to get this merged? Already had to create users manually in order to get things set up.

Any chance to get this merged? Already had to create users manually in order to get things set up.

Yes it will work. For example:

I manually created a user "test" in the "test" database.

[
	{
		"_id" : "test.test",
		"userId" : UUID("c189ea17-4294-4972-a27f-89a663ec429b"),
		"user" : "test",
		"db" : "test",
		"roles" : [
			{
				"role" : "readWrite",
				"db" : "test"
			}
		],
		"mechanisms" : [
			"SCRAM-SHA-1",
			"SCRAM-SHA-256"
		]
	}
]

Example list collections:
mongo -utest -ptest --authenticationDatabase test --norc test --eval 'db.getCollectionNames()'
MongoDB shell version v4.2.1
connecting to: mongodb://<IP_ADDRESS>:27017/test?authSource=test&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("09d34fdc-d80b-473c-a0de-10349b92414f") }
MongoDB server version: 4.2.1
[ "test" ]

I added a puppet's resource to create this user:

    mongodb_user { 'test':
        name          => 'test',
        ensure        => 'present',
        database      => 'test',
        password_hash => mongodb_password('test', 'test'),
        roles         => ['readWrite'],
        require       => [
            Mongodb_database['test']
        ]
    }

And apply agent:
$ puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for test-mongo
Info: Applying configuration version '1574706120'
Notice: /Stage[main]/Mongodb/Mongodb_user[test]/ensure: created
Notice: Applied catalog in 10.75 seconds

And check it
root@mongo16-2:~# mongo -utest -ptest --authenticationDatabase test --norc test --eval 'db.getCollectionNames()'
MongoDB shell version v4.2.1
connecting to: mongodb://<IP_ADDRESS>:27017/test?authSource=test&compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("2f199334-fd71-47ed-a68a-5fd9109f660f") }
MongoDB server version: 4.2.1
[ "test" ]

Check second puppet apply:
# puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Retrieving locales
Info: Loading facts
Info: Caching catalog for mongo-test
Info: Applying configuration version '1574706851'
Notice: Applied catalog in 9.85 seconds


ShowResultsInReadme

Harmonization with content on CAMARA Website

Updated the version information in "Results" to v0.8.0.
@shilpa-padgaonkar Should address your comments, please review.
@MarkusKuemmerle Would the content fit for the webpage?

Changed links to point to API definition and documentation in the release branch.


Add environment variables to set inactivity timeout values

Fixes-###
What
When I use mint (slim) to optimize my docker image (original size is 13 GB), I always get this error
level=error msg="dockerutil.CopyFromContainer: dclient.DownloadFromContainer() error = inactivity time exceeded timeout"

And slim optimization failed finally with error
 cmd=slim info=build.error status='optimized.image.build.error' error='no layers'

Why
The reason is the inactivity timeout is hardcoded to 20secs for export image and download from container
 	options := dockerapi.ExportImageOptions{
 		Name:              imageRef,
 		OutputStream:      dfile,
		InactivityTimeout: 20 * time.Second,
 	}

 	downloadOptions := dockerapi.DownloadFromContainerOptions{
 		Path:              remote,
 		OutputStream:      dfile,
		InactivityTimeout: 20 * time.Second,
		InactivityTimeout: downloadTimeoutValue * time.Second,
 	}

For large docker image, we might need longer time to finish these operation.
In order to fix that, we add two environment variables SLIM_EXPORT_IMAGE_INACTIVITY_TIMEOUT and SLIM_DOWNLOAD_INACTIVITY_TIMEOUT to set the inactivity timeout values respectively.
How Tested
Now we can run mint slim with the customized timeout value like
SLIM_DOWNLOAD_INACTIVITY_TIMEOUT=180 mint slim ...

Thanks for the enhancement @tsujie ! Definitely makes sense to have an option like that. Normally it's done in a slightly different way using flags, which also have environment variables, so there's no need to manually extract environment variables. I can accept this PR as-is though I'll need to refactor it to use flags.

@kcq , yes, using flags is a better way. But I'm not quite familiar with the flags implementation and passing mechanism in slim. Maybe need your refactoring.


Multi Issue and Commit Message support?

Is it possible to

Support linking multiple jira issues.
Search for the jira issue key in the commit messages also.

Please address this issue

hi, it's a nice feature, however ATM I don't have time to add it
I'd appreciate if you open a PR :)

Supporting commit messages would be really nice


logUserEventWithNameAndParams not working

We are sending events events using:
Instabug.logUserEventWithName("OnFeedbackButtonClicked") and Instabug.logUserEventWithNameAndParams("OnFeedbackButtonClicked",{"key": "value"});
but no events are showing in the Dashboard.
Version 2.8.1.
This is blocking us here https://github.com/status-im/status-react/pull/3807
Reported this issue to support and heard back:

We faced a problem with the UserEvents and UserAttributes and we are currently working on a fix for it.
but then haven't heard anything.

Any update?

Hey @chadyj,
I just replied to you on the support channel. The issue with the user attributes should be resolved now, but we’re still working on a fix for the user events. I will keep you updated regarding the progress of the fix.

Hope the fixes are going well? It has been about a month since we tried to get surveys running and we've wasted a lot of time.
Can you give us update on the timing? If you are working on a fix, then great! It would be useful to know. If this isn't on your radar we can start looking for a replacement. Either way please post an update :-)

Hey @chadyj, please accept my apologies for this delay. The issue on our end is quite complex but the engineering team is hard at work on he fix. It's definitely an important issue to us which is why we're trying to fix it as soon as possible!

Hey @chadyj
Apologies for the delay, the issue should now be resolved. Please let me know if everything is in place on your end :)


Updated PyPI URLs

The old URLs would redirect to the updated ones anyway.

Hey, thanks! I'm actually going to go delete the 2.6 code upstream, but merged the README fix. Appreciated.


Page takes precedence over redirect if trailing slash in request path

Issue Summary
When a page and redirect exist for the same path Wagtail does not redirect if the request is made with a trailing slash.
Steps to Reproduce

Create and publish a page at e.g. /mypage
Create a redirect for the same path to a fixed URL
Request mywagtailproject.com/mypage
Request mywagtailproject.com/mypage/

Wagtail redirects GET /mypage as configured, but GET /mypage/ returns the page at /mypage.
I expected both requests to honour the redirect. Having both return the page would be less intuitive but also acceptable, as long as they're both the same.

I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: no

Workaround
Unpublish the page. Wagtail will then respect the redirect for both request paths.
Technical details

Python version: 3.8.19
Django version: 4.2.15
Wagtail version: 5.2.6
Browser version: Chrome 128

Working on this
Possibly related to #5814 ?

Hi @jamesatmarble - thanks for the report.
Having redirects take precedence over page paths has been considered and rejected as part of https://github.com/wagtail/rfcs/pull/93.
I agree that having consistency between the trailing slash and no-slash cases would be preferable, but given that the current behaviour is caused by some rather tricky interactions between Django's CommonMiddleware and Wagtail's RedirectMiddleware, I suspect it's not going to be an easy thing to fix.

Thank you for the quick response!


Added note RE: @RenderSection scripts

Found the solution from this StackOverflow post: http://stackoverflow.com/questions/10971149/the-following-sections-have-been-defined-but-have-not-been-rendered-for-the-layo
It means that you have defined a section in your master Layout.cshtml, but you have not included anything for that section in your View.
The final div within _Layout.cshtml should look like this:

    @RenderBody()
    @RenderSection("scripts", required: false)

© 2016 - MvcMovie

Another user reported the same issue within the comments on this post. I replicated the issue myself, and this resolved it.

Hi @DaveVoyles, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. Real humans will now evaluate your PR.

TTYL, DNFBOT;

@Rick-Anderson Please review

The template generated code works fine. The SO post was for MVC 4 Beta, more than two generations old.

I understand that it was for an older version of for the MVC 4 beta, but it
still applied for this project.
I couldn't get it to work without it. Added that one line of code, and it
all works.
Dave Voyles | DaveVoyles.com | @DaveVoyles
http://www.twitter.com/DaveVoyles
On Tue, Jun 28, 2016 at 12:20 PM, Rick Anderson<EMAIL_ADDRESS>wrote:

The template generated code works fine. The SO post was for MVC 4 Beta,
more than two generations old.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/aspnet/Docs/pull/1554#issuecomment-229101953, or mute
the thread
https://github.com/notifications/unsubscribe/ABtAxa-vcoxCYOH1ZniGoMphw1tegHuuks5qQUnrgaJpZM4JANKx
.

@DaveVoyles  have you tried with the RTM bits? I can't repro the problem and we have several thousand customers reporting success without it. Try scaffolding a new model and then test create.

I've got 5.2.4 installed (I think that's the latest version)? but difficult
to tell.
It may have to do with the fact that I have VS Community 2015 installed,
but only Update 2. Was hoping it would push update 3 to me, but for some
reason I am never prompted, and it doesn't appear in updates.
I may have to just uninstall and re-install fresh from this link, as I may
have hit a bug:
https://blogs.msdn.microsoft.com/visualstudio/2016/06/27/visual-studio-2015-update-3-and-net-core-1-0-available-now/
Dave Voyles | DaveVoyles.com | @DaveVoyles
http://www.twitter.com/DaveVoyles
On Tue, Jun 28, 2016 at 1:00 PM, Rick Anderson<EMAIL_ADDRESS>wrote:

@DaveVoyles https://github.com/DaveVoyles have you tried with the RTM
bits? I can't repro the problem and we have several thousand customers
reporting success without it. Try scaffolding a new model and then test
create.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/aspnet/Docs/pull/1554#issuecomment-229113250, or mute
the thread
https://github.com/notifications/unsubscribe/ABtAxb8m-dwe5wCmAm4-vsDbPXAwq8Xmks5qQVNFgaJpZM4JANKx
.

RTM won't install without VS13.3, so I don't think you have the latest.

OK, thank you for clarifying! I'll dive into that
Dave Voyles | DaveVoyles.com | @DaveVoyles
http://www.twitter.com/DaveVoyles
On Tue, Jun 28, 2016 at 1:18 PM, Rick Anderson<EMAIL_ADDRESS>wrote:

RTM won't install without VS13.3, so I don't think you have the latest.
[image: capture]
https://cloud.githubusercontent.com/assets/3605364/16425445/97bb96a0-3d19-11e6-888c-59bee2b7ff09.PNG
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/aspnet/Docs/pull/1554#issuecomment-229117979, or mute
the thread
https://github.com/notifications/unsubscribe/ABtAxQ_ThycH2jJ7S8IlnrRF_rhkfu7uks5qQVdZgaJpZM4JANKx
.


Issue 270 Support cassandra delete

See #270
The use case of my company was to consume from a compacted topic and in cases where the message value is null, use the message key to delete the record from the cassandra table.
Please feel free to point me towards style and standards docs that I might have overlooked.

Also, I would love to know if there is a way for me to run the integration tests you use in the builds.

@andmarios Can you guide @sandonjacobs here?

Awesome. thank you!


Migrate to buf build and get rid of manual downloaded proto files

Codecov Report

Merging #19 (d67b6f1) into master (9b5c89a) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head d67b6f1 differs from pull request most recent head ed9876c. Consider uploading reports for the commit ed9876c to get more accurate results

@@          Coverage Diff           @@
##           master     #19   +/-   ##
======================================
  Coverage    7.26%   7.26%
======================================
  Files           4       4
  Lines         234     234
======================================
  Hits           17      17
  Misses        216     216
  Partials        1       1

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


Cannot use gym.make with external code without error

I am trying to get this package integrated with my own. I figured I could just add "from metaworld.envs.mujoco import *" at the top of a file and do gym.make to create a metaworld env with a particular name, since the init of that package registers all these envs, but that results in this error:

...
self.env = gym.make(self.config.robot.task.name)
File "/cvgl2/u/andreyk/projects/manipxonomy/env/lib/python3.5/site-packages/gym/envs/registration.py", line 183, in make
return registry.make(id, **kwargs)
File "/cvgl2/u/andreyk/projects/manipxonomy/env/lib/python3.5/site-packages/gym/envs/registration.py", line 125, in make
env = spec.make(kwargs)
File "/cvgl2/u/andreyk/projects/manipxonomy/env/lib/python3.5/site-packages/gym/envs/registration.py", line 89, in make
env = cls(_kwargs)
File "/cvgl2/u/andreyk/projects/manipxonomy/metaworld/metaworld/envs/mujoco/sawyer_xyz/sawyer_pick_and_place.py", line 43, in init
**kwargs
TypeError: init() got multiple values for keyword argument 'hand_high'

That actually makes total sense, since in registrations the kwargs are specified as such:
    register(
        id='SawyerPickupEnv-v0',
        entry_point='metaworld.envs.mujoco.sawyer_xyz'
                    '.sawyer_pick_and_place:SawyerPickAndPlaceEnv',
        tags={
            'git-commit-hash': '30f23f7',
            'author': 'steven',
        },
        kwargs=dict(
            hand_low=(-0.1, 0.55, 0.05),
            hand_high=(0.0, 0.65, 0.2),
            action_scale=0.02,
            hide_goal_markers=True,
            num_goals_presampled=1000,
        )
)

And then these parameters are also set in the constructor:
class SawyerPickAndPlaceEnv(SawyerXYZEnv):
    def __init__(
            self,
            obj_low=None,
            obj_high=None,
            random_init=False,
            tasks = [{'goal': np.array([0.1, 0.8, 0.2]),  'obj_init_pos':np.array([0, 0.6, 0.02]), 'obj_init_angle': 0.3}],
            goal_low=None,
            goal_high=None,
            hand_init_pos = (0, 0.6, 0.2),
            liftThresh = 0.04,
            rewMode = 'orig',
            rotMode='rotz',#'fixed',
            **kwargs
    ):
        self.quick_init(locals())
        hand_low=(-0.5, 0.40, 0.05)
        hand_high=(0.5, 1, 0.5)
        obj_low=(-0.5, 0.40, 0.05)
        obj_high=(0.5, 1, 0.5)
        SawyerXYZEnv.__init__(
            self,
            frame_skip=5,
            action_scale=1./100,
            hand_low=hand_low,
            hand_high=hand_high,
            model_name=self.model_name,
            **kwargs
)

It appears the kwargs are just outdated, should they just be removed? Happy to submit a quick PR with that change, it seems to fix the gym.make.

@andreykurenkov the only supported way for constructing metaworld envs is through the benchmarks interface in the README. You're right -- these registrations should be removed.


[zh-cn]Update endpoint-slices.md

@kinzhi There are conflicts to resolved, please help check.

/lgtm
/approve


en: update contents about relay

What is changed, added or deleted? (Required)

mark relay log is not supported yet (two many people have known it, so they may become confused if we remove contents directly)
update some contents relative to it

NOTE: we'll add it back later.

Which DM version(s) do your changes apply to? (Required)

[x] master (the latest development version, including v2.0 changes for now)
[ ] v1.0 (TiDB DM 1.0 versions)

What is the related PR or file link(s)?

This PR is translated from: https://github.com/pingcap/docs-dm/pull/231
Other reference link(s):

Do your changes match any of the following descriptions?

[ ] Delete files
[ ] Change aliases
[ ] Have version specific changes
[ ] Might cause conflicts

LGTM

/merge


ProcessList(Collection)>>errorEmptyCollection

I'm seeing the following error periodically be raised.  I'm not aware of any pattern and can't reliably reproduce it.
While I have a patch that avoids raising the issue, last time this error occurred it was due to problems with event delivery in Gtoolkit.
ProcessList(Collection)>>errorEmptyCollection
ProcessList(Collection)>>emptyCheck
ProcessList>>firstLink
ProcessList>>first
[] in ProcessorScheduler>>nextReadyProcess
Array(SequenceableCollection)>>reverseDo:
ProcessorScheduler>>nextReadyProcess
BlHostPulseLoop>>wait
BlHostPulseLoop>>firePulse

OS: Ubuntu 18.04
Gtoolkit: 16a49f8

I believe this is no longer an issue.


extend it to IL2CPP

First I would like to thank you for this source and the videos.
I am wondering how this tempalte could be used with an IL2CPP Unity game,
o you have any tip / material ?
Once again, thanks for sharing this ressource and the videos.

This method is not viable for il2cpp. There are no similarities between this type of managed code injection and the native mono injection that could be used for il2cpp. Here's a good place to start with il2cpp reversing: https://github.com/djkaty/Il2CppInspector
djkaty has some other good resources on her website also.

I'm going to close this out, because like I mentioned this is unrelated to those methods.


Editor crashes when trying to save the scene

Godot version:
3.3 rc6
OS/device including version:
GLES2
Issue description:
Saving the scene crashes the editor
ERROR: resize: All memory pool allocations are in use.
   At: ./core/pool_vector.h:530.
handle_crash: Program crashed with signal 11
Dumping the backtrace. Please include this when reporting the bug on https://github.com/godotengine/godot/issues
[1] /lib/x86_64-linux-gnu/libc.so.6(+0x46210) [0x7f128fbb8210] (??:0)
[2] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x16e679b] (??:0)
[3] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xe539c8] (??:0)
[4] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xcab6f3] (??:0)
[5] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xc52633] (??:0)
[6] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x257f973] (??:0)
[7] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x2580d12] (??:0)
[8] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x2585118] (??:0)
[9] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x30542c4] (??:?)
[10] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xe4ce66] (??:0)
[11] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xe52636] (??:0)
[12] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xe534fc] (??:0)
[13] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x1b6b81b] (??:0)
[14] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x1ba0bd2] (??:0)
[15] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x1ba0cfb] (??:0)
[16] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x2403d6f] (??:0)
[17] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xe4d21e] (??:0)
[18] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x1cda05c] (??:0)
[19] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x1c88103] (??:0)
[20] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x1c89236] (??:0)
[21] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x2e592ef] (??:?)
[22] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xe4ce66] (??:0)
[23] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0xe152d5] (??:0)
[24] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x1cdbd97] (??:0)
[25] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x1cdee0c] (??:0)
[26] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x311b9b3] (??:?)
[27] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x30ba5dc] (??:?)
[28] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x311ee07] (??:?)
[29] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x9a453c] (??:0)
[30] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7f128fb990b3] (??:0)
[31] /home/vv/game_engine/Godot_v3.3-rc6_x11.64() [0x9b2d9e] (??:0)
-- END OF BACKTRACE --

Steps to reproduce:
It's connected to AnimationPlayer and number of animations you have in there.
It works fine till certain point, then you add one more animation and it crashes every time when trying to save.

Can you compile the 3.x branch from source to have a stacktrace with debug symbols? Alternatively, we'd really need a clear way to reproduce the issue so that it can be investigated.

@akien-mga is this ok?
ERROR: resize: All memory pool allocations are in use.
At: ./core/pool_vector.h:530.
ERROR: resize: All memory pool allocations are in use.
At: ./core/pool_vector.h:530.
handle_crash: Program crashed with signal 11
Dumping the backtrace.
-- END OF BACKTRACE --

Thanks, the backtrace looks good. It confirms that a crash happens when saving an animation here:
https://github.com/godotengine/godot/blob/3096423ddc61c8422722d629da3671c628bf2864/scene/resources/animation.cpp#L387-L414
The errors:
ERROR: resize: All memory pool allocations are in use.
   At: ./core/pool_vector.h:530.

likely come from:
				key_times.resize(kk);
				key_transitions.resize(kk);
				key_values.resize(kk);

It seems like you're running out of memory, is it a very big animation and are you on a system with a fairly low amount of RAM?
Do you have the same issue with older versions of Godot?

Yes, there are a lot of animations in the player. There's a plenty of ram left though. It's like a limit somewhere.
It did happened in older versions also.

editor crashed taking 850mb of ram with 7gb left free

Would you be able to make a reproduction project that you can share?

i cannot replicate it when creating new project
would probably just have to duplicate some fake animations enough times, but it's tedious doing it manually.

in my project eventhough i have every animation saved as a separate resource, all the track/keyframe data was also being saved in the root .tscn file. so it was like 300k line file...
since i have  200 animations with multiple skeletons it might got too far of what godot can handle.
i have no idea why it was happening.
anyways, i straight up removed AnimationPlayer node, add a fresh one and reimport all the animations again. seems fine for now.
i'll keep an eye if it still save animation data in the root scene and open a separate issue if so.
you can close this one i guess.

I'll close this for now, but if anyone figures out a convenient way to reproduce the issue, it might still be worth investigating. It does sound like it's an edge case that would only happen with extreme situations like a 300k lines scene, but it's something we should aim to at least prevent (e.g. by not letting users save 300k lines worth of animation data in text format).


Invalid sources JAR in central repository

The sources JAR in the central Maven repository has a missing package structure.

Maven sources mojo simply jar packages the sourceDirectory. Neither async nor asynchbase uses the convention of reflecting package hierarchy to file system hierarchy.
So there's no easy way I could find to do this with Maven.
I will work on changing the directory hierarchy in my fork and send a pull request to address this issue.


spring.cloud.stream.bindings.process-in-0.consumer.concurrency not working in case of UpperCase letter in process name

@wouterTj commented on Thu Mar 24 2022
When a function name of a consumer has an uppercase letter (eg processItems) then the consumer.concurrency property is ignored for this consumer.
@Bean public Function<KStream<String, String>, KStream<String, String>> processItems(...) {....}
spring:   cloud:     stream:       bindings:         processItems-in-0:           consumer.concurrency: 4
Cause is an error in the AbstractKafkaStreamsBinderProcessor (spring-cloud-stream-binder-kafka-streams) on line 377:
ConfigurationPropertyName.of("spring.cloud.stream.bindings." + inboundName + ".consumer").isAncestorOf(name);
In the example inboundName will be "processItems" and this results in an error because ConfigurationPropertyName.of() can only process lowercase strings. And the result of this will be that the num-stream-theard property of the stream configuration on line 399 (streamConfiguration.put(StreamsConfig.NUM_STREAM_THREADS_CONFIG, concurrency); is nog set.

You just saved my day. very weird issue!


Frontpage Alterations

Hey @chrisdburr, I have made the changes you required.

Scroll down arrow added
No animations when scrolling back through (note: animation only happens on page load and when items come into view)
Removed the main.html override as this causes issues for other pages. I managed to remove the class only for the frontpage, so you can still have the full width sections.

Any issues, please let me know.

@RichGriff would you mind redoing this PR into the homepage branch please? We have GitHub Actions set up on the main branch to automatically compile and host the site from the main branch so it is only used for production-ready code. I would need to make some changes to this PR before it was ready to go live (e.g. adding proper images and copy).
https://github.com/alan-turing-institute/turing-commons/tree/homepage


Add support for secrets

A secret is an externally provided key-value pair that can be mounted on demand by the job. This PR implements:

Spec: adding a secrets field in the run command, which mounts a list of secrets files in the chosen target, or in /run/secrets/[id] if the target is not provided.
Spec: when translated to docker, the secret list translate's to buildkit's --mount=type=secret,id=[id],dst=[target] option.
Obuilder: a temporary file and a mount point are created for each specified secret. Obuilder's build context has an additional secrets parameter in order to provide the values.

Thanks for your review ! I've addressed all the points you mentioned, and updated the readme, changelog and obuilder cli.

Great, that looks good. I'm happy with that ! I'll update the ocluster PR.


RPC Middleware is unused

rpc.middleware.ts has function to handleRpcMethod which is to build UserOp from params
this can be removed as it is handled in controller

Fixed #33


API?

I am looking for the api.  For example, in the initialize method it takes an object, and you give the example of Grasshopper but say others are supported.  How do i find the "others"?

Hi there!
I am sorry, right now there are no other routing options available. But the interfaces are ready for a custom implementation!
Please have a look at this ticket, where I describe the process of implementing your own routing service: https://github.com/ffwdme/ffwdme.js/issues/33

I appreciate the response.  I will take a look at it.  I think i understand
the concept, just have to figure out where to put the custom code
Jeff
On Mon, Apr 2, 2018 at 3:29 PM, Christian Bäuerlein <
<EMAIL_ADDRESS>wrote:

Hi there!
I am sorry, right now there are no other routing options available. But
the interfaces are ready for a custom implementation!
Please have a look at this ticket, where I describe the process of
implementing your own routing service: #33
https://github.com/ffwdme/ffwdme.js/issues/33
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ffwdme/ffwdme.js/issues/39#issuecomment-378019133,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AKEroDbSvw2YEFWaDU1zngjTw6vY_jTrks5tknwhgaJpZM4TDmOf
.

Having trouble installing .  Erroring on bessdsv module.  ideas?
25725 verbose stack Error: Command failed: git -c core.longpaths=true clone
--template=C:\Users\jpace\AppData\Roaming\npm-cache_git-remotes_templates
--mirror git://github.com/bessdsv/bower-installer.git
C:\Users\jpace\AppData\Roaming\npm-cache_git-remotes\git-github-com-bessdsv-bower-installer-git-temp-5f628818
25725 verbose stack Cloning into bare repository
'C:\Users\jpace\AppData\Roaming\npm-cache_git-remotes\git-github-com-bessdsv-bower-installer-git-temp-5f628818'...
25725 verbose stack fatal: read error: Invalid argument
25725 verbose stack
25725 verbose stack     at ChildProcess.exithandler
(child_process.js:199:12)
25725 verbose stack     at emitTwo (events.js:106:13)
25725 verbose stack     at ChildProcess.emit (events.js:191:7)
25725 verbose stack     at maybeClose (internal/child_process.js:920:16)
25725 verbose stack     at Process.ChildProcess._handle.onexit
(internal/child_process.js:230:5)
25726 verbose cwd C:\ffwdme.js\ffwdme.js
25727 error Windows_NT 10.0.14393
25728 error argv "C:\Program Files\nodejs\node.exe" "C:\Program
Files\nodejs\node_modules\npm\bin\npm-cli.js" "install"
25729 error node v6.12.3
25730 error npm  v3.10.10
25731 error code 128
25732 error Command failed: git -c core.longpaths=true clone
--template=C:\Users\jpace\AppData\Roaming\npm-cache_git-remotes_templates
--mirror git://github.com/bessdsv/bower-installer.git
C:\Users\jpace\AppData\Roaming\npm-cache_git-remotes\git-github-com-bessdsv-bower-installer-git-temp-5f628818
25732 error Cloning into bare repository
'C:\Users\jpace\AppData\Roaming\npm-cache_git-remotes\git-github-com-bessdsv-bower-installer-git-temp-5f628818'...
25732 error fatal: read error: Invalid argument
25733 error If you need help, you may report this error at:
25733 error     https://github.com/npm/npm/issues
25734 verbose exit [ 1, true ]
On Mon, Apr 2, 2018 at 3:45 PM, Jeff Pace<EMAIL_ADDRESS>wrote:

I appreciate the response.  I will take a look at it.  I think i
understand the concept, just have to figure out where to put the custom code
Jeff
On Mon, Apr 2, 2018 at 3:29 PM, Christian Bäuerlein <
<EMAIL_ADDRESS>wrote:

Hi there!
I am sorry, right now there are no other routing options available. But
the interfaces are ready for a custom implementation!
Please have a look at this ticket, where I describe the process of
implementing your own routing service: #33
https://github.com/ffwdme/ffwdme.js/issues/33
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ffwdme/ffwdme.js/issues/39#issuecomment-378019133,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AKEroDbSvw2YEFWaDU1zngjTw6vY_jTrks5tknwhgaJpZM4TDmOf
.

Sorry, I can not reproduce your error. Which command exactly failed? What is your node/npm version?
➜  node --version
v9.8.0
➜  npm --version
5.6.0

Closed due to inactivity.


DOCS: Scanning FAQs - Add WAS UserAgent

💡 Summary
Add the UserAgent WAS uses to this page: https://docs.crossfeed.cyber.dhs.gov/scans/
Motivation and context
Crossfeed will also offer reports of CyHy scans, so this page should include the WAS UserAgent as well as the current Crossfeed UserAgent.
Implementation notes
Include this UserAgent for WAS:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.1 Safari/605.1.15

Changes based on the rebranding of Crossfeed to the CyHy Dashboard:
Change this subtitle "What is Crossfeed?" to "The CyHy Dashboard is Powered by Crossfeed"

This is OBE. Scope has changed and no requirements were derived for the initial portion of this task.


[DM-29112] Add desired endpoint and show entire list

I didn't put the ones that will be in the first list in the all other list.  What name would you recommend?  Undesired doesn't seem like a great name.

I didn't put the ones that will be in the first list in the all other list. What name would you recommend? Undesired doesn't seem like a great name.

I mean it's better than "repellent."  all_other_images would be better than all_images.  "not_to_be_pulled_images" seems a little wordy.

Just made it contain all the images.


mod backport?

Hey I want to know if this cool mod your making will be backported to older versions like 1.20.1. I really want this for a modpack I'm making and the based on the images the mod is awesome.

Hi! Will do! Planning on supporting versions down to 1.20.1 but wont got lower due to TCDCommons API im using not being supported on lower versions.
Thank you for liking my mod!

Thank you!

Sadly it doesn't work with sinytra connector but I will use it for the trailer recreation though!

Sadly it doesn't work with sinytra connector but I will use it for the trailer recreation though!

huh.. i guess i could try making it compatible in the future? a little focused on adding settings and more backgrounds to the main menu.

wait you want to make the mod accesible on forge too?

yeah I guess so hope it isn't too hard to do.

sadly i am using a api that is fabric only and will keep the mod fabric only

I want to know if you can make it compatible with the forgified fabric api and sinytra connector

next update will add support but is a little broken as i cant really interact with forge api's on fabric platform
It isent recommended to use my mod with sinytra connector but the support will be there

ok!

Hey so I came across this mod and I was wondering if you would be down to release a version for forge 1.8.9, I am working on a modpack and would love to have this in there

Hey so I came across this mod and I was wondering if you would be down to release a version for forge 1.8.9, I am working on a modpack and would love to have this in there. It would also maybe boost the download count

first thing is that that's a MASSIVE port to the point it's easier to just rewrite and second he still hasn't propertly ported forge

first thing is that that's a MASSIVE port to the point it's easier to just rewrite and second he still hasn't propertly ported forge

Well yeah I guess


File scan on sdk v2

Test will fail until FileScan is on prod. Do not merge until then.

@govind-salinas-pangea all solved now I guess.