Add support for saving multiple metadata styles in the GUI

It may make more sense to put the CheckableComboBox in its own file in the ui dir?
I gave up with the style/theming and it seems a lot of hassle https://forum.qt.io/topic/113522/styling-qcombobox-s-lineedit
I presumed there is no point in allowing no write styles, so one is always required and the tooltip saying as much is displayed if it's tried. I thought this is probably the best place rather than say, checking on save etc.
A couple of places I changed reading of the current archive metadata from the write style to the read style. I can only think the idea was to keep what was already there? But if a read style is picked, then to my mind that should be used.
I'll do the read styles in another PR. With that, it may make sense to add another tab (or section) for the read and write styles in the GUI options.

I'll test this out tomorrow.... probably

Also, with the possible (seems like mostly dark style), when the read style is the same CheckableComboBox the look will be more unified as it kind of works if the read/write style widget look the same and the source one is a little different.

Also, also is the question of converting over settings. As it's alpha should users be expected to remove/change the save style in the settings.json? Otherwise, it's leaving in code? Maybe change it over programatically and mark the code for removal at a later date?

The checkable combobox is a decent idea. But currently clicking on the text does not consistently bring up the list on macos

For me on Linux with KDE, I can spam click the text and it works as expected. Does it just highlight the text?

They did some questionable things, which I've now fixed.
This should work better across multiple platforms, and at least on macOS it would previously change the style which it now does not
    # Multiselect combobox from: https://gis.stackexchange.com/a/351152 (with custom changes)
    class CheckableComboBox(QtWidgets.QComboBox):
        itemChecked = pyqtSignal(str, bool)

        def __init__(self, *args: Any, **kwargs: Any):
            super().__init__(*args, **kwargs)
            # Prevent popup from closing when clicking on an item
            self.view().viewport().installEventFilter(self)

            # Keeps track of when the combobox list is shown
            self.justShown = False

        def resizeEvent(self, event: Any) -> None:
            # Recompute text to elide as needed
            super().resizeEvent(event)
            self._updateText()

        def eventFilter(self, obj: Any, event: Any) -> bool:
            # Allow events befor the combobox list is shown
            if obj == self.view().viewport():
                # We record that the combobox list has been shown
                if event.type() == QEvent.Show:
                    self.justShown = True
                # We record that the combobox list has hidden,
                # this will happen if the user does not make a selection
                # but clicks outside of the combobox list or presses escape
                if event.type() == QEvent.Hide:
                    self._updateText()
                    self.justShown = False
                # QEvent.MouseButtonPress is inconsistent on activation because double clicks are a thing
                if event.type() == QEvent.MouseButtonRelease:
                    # If self.justShown is true it means that they clicked on the combobox to change the checked items
                    # This is standard behavior (at least on macos) but I think it is surprising when it has a multiple select
                    if self.justShown:
                        self.justShown = False
                        return True

                    # Find the current index and item
                    index = self.view().indexAt(event.pos())
                    self.toggleItem(index.row())
                    return True
            return False

        def currentData(self) -> list[Any]:
            # Return the list of all checked items data
            res = []
            for i in range(self.count()):
                item = self.model().item(i)
                if item.checkState() == Qt.Checked:
                    res.append(self.itemData(i))
            return res

        def addItem(self, text, data=None):
            super().addItem(text, data)
            if self.count() == 1:
                self.model().item(0).setCheckState(Qt.Checked)

        def onDataChanged(self, index: Any) -> None:
            item = self.model().item(index.row())
            # If we have at least one item checked emit itemChecked with the current check state and update text
            # Require at least one item to be checked and provide a tooltip

        def _updateText(self) -> None:
            texts = []
            for i in range(self.count()):
                item = self.model().item(i)
                if item.checkState() == Qt.Checked:
                    texts.append(item.text())
            text = ", ".join(texts)

            # Compute elided text (with "...")

            # The QStyleOptionComboBox is needed for the call to subControlRect
            so = QtWidgets.QStyleOptionComboBox()
            # init with the current widget
            so.initFrom(self)

            # Ask the style for the size of the text field
            rect = self.style().subControlRect(QtWidgets.QStyle.CC_ComboBox, so, QtWidgets.QStyle.SC_ComboBoxEditField)

            # Compute the elided text
            elidedText = self.fontMetrics().elidedText(text, Qt.ElideRight, rect.width())

            # This CheckableComboBox does not use the index, so we clear it and set the placeholder text
            self.setCurrentIndex(-1)
            self.setPlaceholderText(elidedText)

        def setItemChecked(self, index: Any, state: bool) -> None:
            qt_state = Qt.Checked if state else Qt.Unchecked
            item = self.model().item(index)
            current = self.currentData()
            # Require at least one selection
            if len(current) == 1 and not state and item.checkState() == Qt.Checked:
                QtWidgets.QToolTip.showText(QtGui.QCursor.pos(), self.toolTip(), self, QRect(), 3000)
                return

            if len(current) > 0:
                item.setCheckState(qt_state)
                self.itemChecked.emit(self.itemData(index), state)
                self._updateText()

        def toggleItem(self, index: int) -> None:
            if self.model().item(index).checkState() == Qt.Checked:
                self.setItemChecked(index, Qt.Unchecked)
            else:
                self.setItemChecked(index, Qt.Checked)

https://github.com/comictagger/comictagger/assets/7547075/616d7b95-fefb-493d-907a-1d8fc49a17ec
https://github.com/comictagger/comictagger/assets/7547075/e272121b-3e4e-450e-8e4f-b63086758d54

I believe that should be everything covered now?
I don't know why the hash has changed for the Cory cover image with the test.

The last thing I want to see is an option to use the ID instead of the full name for the checkable combo box so that I can actually see more than one at a time. It should be a file only option

Under the General tab? With the multi-read style I think a "Metadata Style" tab might be needed so I could add that now with that option?

The last thing I want to see is an option to use the ID instead of the full name for the checkable combo box so that I can actually see more than one at a time. It should be a file only option

Under the General tab? With the multi-read style I think a "Metadata Style" tab might be needed so I could add that now with that option?

Metadata Types tab could be split up with a separator and the styles placed in there? I think a listwidget with the styles and checkboxes, so same as the combobox but in a list instead of a dropdown.


Fix travis

Fix travis configuration file to test model branch.

Note that this patch doesn't pass travis CI as model branch includes bugs.

Added a comment.

LGTM!

Thanks!


convert vpcconfig methods to functions

@olasaadi99 , please see @zivnevo fix in another branch.
to avoid conflicts, I will not fix it here


Upgrade authentication implementation

Currently we simply always redirect to the login page on any serverside render, and only redirect to any other page if you give the password, but this is definitely far from the safest thing you could do. We should be doing this in a better way, and probably some tutorials should be looked up, as security is always tricky, and I'm afraid of for example people being able to just change a bit of Javascript in the console and then access the site.

What we want to do here is authenticating the API endpoint which is described #422


Do not need to reset in the constructor of Hmac

In yacl/crypto/base/hmac.cc, the constructor is
Hmac::Hmac(HashAlgorithm hash_algo, ByteContainerView key)
: hash_algo_(hash_algo),
key_(key.begin(), key.end()),
context_(CheckNotNull(HMAC_CTX_new())) {
Reset();
}
where Reset() is
Hmac& Hmac::Reset() {
YACL_ENFORCE_EQ(HMAC_CTX_reset(context_), 1);
Init_HMAC(hash_algo_, key_, context_);
return *this;
}
I don't think that we need to invoke Reset() in the constructor. My suggestion is that the following code is better:
Hmac::Hmac(HashAlgorithm hash_algo, ByteContainerView key)
: hash_algo_(hash_algo),
key_(key.begin(), key.end()),
context_(CheckNotNull(HMAC_CTX_new())) {
Init_HMAC(hash_algo_, key_, context_);
}
The reason is that HMAC_CTX_new() already invokes HMAC_CTX_reset().

Hi, thanks for the suggestion, the openssl official doc (here) says that:

HMAC_CTX_reset() clears an existing HMAC_CTX and associated resources, making it suitable for new computations as if it was newly created with HMAC_CTX_new().

I suppose that is exactly what we need in Hmac::Reset(). Also your suggested code would additionally calls the copy construction or HMAC_CTX, which may or may not have an impact on efficiency (since I haven't checkout openssl's implementation details :p).


Add(IBox) in world

I would like to have an Add(IBox) to add a box into the world as opposed to Create, this is mostly to remove a box from all collisions without having to recreate the IBox class when I want to add it again.
Cheers,
Richard
P.S. I would fix this use case by extending your World class but sadly the grid inside it is private not protected.

This should be sufficient to meet any of your needs.


Updates node-fetch to version 2.

A review of the code indicates that no other parts are affected by the breaking changes in the library update.

Thanks for this!


Port iOS Pull Replication Performance Optimization

~~https://github.com/couchbase/couchbase-lite-ios/commit/16b64c4c15133081d06101cdf040d350a1e487a5~~
https://github.com/couchbase/couchbase-lite-ios/commit/988ee30a3d15a96b4ebc84b95975434db8cd0df4 (#855)
https://github.com/couchbase/couchbase-lite-ios/commit/7877dae19c2fd154711e284c2d1d94817517d6bb (#855)
https://github.com/couchbase/couchbase-lite-ios/commit/b913a51698938f4ce36f31a8f059e855fc01e0d1 (Not compacting the body may impact memory usage https://github.com/couchbase/couchbase-lite-java-core/pull/467)
https://github.com/couchbase/couchbase-lite-ios/commit/470dbc95d37d51895c541600f7b1c8fc0e9244b3
This could help https://github.com/couchbase/couchbase-lite-android/issues/686 and https://github.com/couchbase/couchbase-lite-java-core/issues/814.

Is there any way to do fast replication of document?

@hitesh-dhamshaniya,
I have seen the majority of slow replication is caused because many documents have many conflicts. It makes pull replication slow. Please check your data fast?

I have an adapter to set list of data in recycle view. I am passing LiveQuery as an argument of adapter constructor. and call below method in the constructor. it's working fine.
public void refeshData() {
        mQuery.addChangeListener(new LiveQuery.ChangeListener() {
            @Override
            public void changed(final LiveQuery.ChangeEvent event) {
                ((Activity) mActivity).runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        enumerator = event.getRows();
                        notifyDataSetChanged();
                    }
                });
            }
        });
        mQuery.start();
        notifyDataSetChanged();
}

Now I have to implment search functionality, but I can't find the way to do same, as if we have ArrayList I can fillter data base on search text. any thought please.

Hi @hitesh-dhamshaniya
We intend to use github issues for bug tracking mainly.
Please post a CBL related questions on Couchbase Forum? So other users can get benefit from its Q/A thread.
Thanks!


Review components JS script files

Description
Check and review components scripts to verify if they can be used outside Vue. If not, they may need to be converted to Vanilla JS in order to use them on any website (eg. Wordpress).
An automated process to minify and concatenate them should be needed as well

This is also related to #71.


Clear settings function in the new services app not working

When "Clear settings" is clicked, it shows a black screen and returns to the home screen.

Looking into this, Great finding!

Issue fixed: https://github.com/odk-x/services/pull/271


on submit change event is triggered

Since 3.3.2 an change event is triggered when a form with a masked input is submitted.
$(".datepicker-input").inputmask('dd.mm.yyyy');

As an example for a used mask and following code to test it.
$(":input").bind "change", () ->
      console.trace()

Its a bit annoying since i am using the change event to show an unsaved warning but that event is making it difficult

@Skulli ,
This behavior was also present in previous versions.  This is expected behavior.

Hmm odd when i downgrade to 3.3.1 i dont get those unsaved form warnings anymore. I gonna test it again.

Hi,
i upgrade from 3.1.63 to current version (3.3.5-33).
I also use the change event to show an unsaved warning and getting trouble because jquery.inputmask trigger the change event on submit.
Is there a way to omit these?

@kiesslir , @Skulli ,
Fixed with #1583


refactor(virtual-indent): do not set virtual indents on empty lines

This PR has two elements:

Removes setting indents on blank lines
Updated the tests to check for blank lines virtual columns, as well as moving content_virtcols above both virtual indent tests so both use the same content.

This improves compatibility with plugins like Headlines.nvim and others that leverage extmarks where virtual indents may apply.
Performance impact for pulling each individual line's content is basically none from my testing -- even spamming thousands of lines I saw no real slowdown related to this change.
Before with Headlines.nvim on latest nightly:

Notice the indent before the bottom of the headlines causing a visual error.
After with Headlines.nvim on latest nightly:

And now those indents are gone.
This is really the behavior that should be expected anyhow -- we really shouldn't be setting virtual indentation on blank lines as there isn't anything to indent in the first place.

Nevermind, this is not so great. Seemed good in the moment. I'll rework this a bit specifically for compat with Headlines.nvim or figure out an alternative solution.
This is annoying though, doesn't seem to be tied in with the extmarks priority as far as I can tell.


how to set Password when writeFile ?

I want to set password when writeFile.
Do you support that feature?
var wb , ws = {};
ws['!protect'] = false;
wb.Sheets['test'] = ws;
XLSX.writeFile(wb, 'xlsxFile', {password : 'test1234'});

A quick note on the feature: XLSX / XLSB ("ECMA-376") encryption involves generating a normal file and packaging the whole thing in an encrypted blob within a CFB container (the same type of container used in XLS).
We offer this in the Pro compendium.  Since companies have paid for the features already, it would be unfair to them if we turned around and made it available as open source.  We have a longer comment in a gist.


[@vue/compiler-sfc] Unresolvable type: TSConditionalType

change brach: component-vue
pnpm install
pnpm build
cd /packages/components/aspect-ratio
pnpm build

AspectRatio.vue

iam setup unbuild same problem.
brach: unbuild
https://github.com/oku-ui/primitives/tree/unbuild

pnpm install
pnpm build
pnpm p:build
pnpm dev

open: http://localhost:6006/?path=/docs/components-okuaspectratio--docs

packages/components/aspect-ratio
packages/core/primitive

two check packages

min repo
https://github.com/productdevbook/vue-ts-bug
pnpm i
pnpm dev
brach: master vue 3.2 dont problem
brach: vue-beta vue 3.3 problem
[plugin:vite:vue] [@vue/compiler-sfc] Unresolvable type: TSConditionalType

https://github.com/vuejs/core/pull/7444 In the future, we need to send the element types with this pr.


Add .editorconfig to make a default indentation style

@vassilevsky, @u338steven, @bf4
I'm thinking about refactoring the indentation style, based on:

https://github.com/styleguide/ruby
https://github.com/bbatsov/ruby-style-guide

So this first pull-request is adds an .editorconfig file to formalize the coding-style based on the guides above.

Thanks Marcelo! This is an excellent addition! 👌

However, this repository is unmaintained :( The actively maintained fork of RMagick is here:
https://github.com/rmagick/rmagick
Could you reopen this PR there?


I added my name

Hello Setemi . I have added my name to your code. Please approve.

Please I am sorry for all the trouble we have caused you but count it all joy. Your PR is about to be merged and you will be able to see your name on this url.
To enable me to do this, READ the README again carefully, update your code with the latest and push the update. I am here for you for the next 6 hours before I close the PR so you can initiate a fresh PR which will be easier to merge.


Link - Env annotation appears twice within yaml generated

Class annotated
@SpringBootApplication
@CompositeApplication(
        name = "fruit-client-sb",
        links = @Link(
                  name = "Env var to be injected within the target component -> fruit-backend",
                  targetcomponentname = "fruit-client-sb",
                  kind = "Env",
                  ref = "",
                  envVars = @Env(
                          name  = "OPENSHIFT_ENDPOINT_BACKEND",
                          value = " http://fruit-backend-sb:8080/api/fruits"
                  )
))

Yaml generated
---
apiVersion: "v1"
kind: "List"
items:
- apiVersion: "component.k8s.io/v1alpha1"
  kind: "Component"
  metadata:
    name: "fruit-client-sb"
  spec:
    deploymentMode: "innerloop"
    runtime: "spring-boot"
    exposeService: false
    link:
    - kind: "Env"
      name: "Env var to be injected within the target component -> fruit-backend"
      targetComponentName: "fruit-client-sb"
      envs:
      - name: "OPENSHIFT_ENDPOINT_BACKEND"
        value: " http://fruit-backend-sb:8080/api/fruits"
      ref: ""
    - kind: "Env"
      name: "Env var to be injected within the target component -> fruit-backend"
      targetComponentName: "fruit-client-sb"
      envs:
      - name: "OPENSHIFT_ENDPOINT_BACKEND"
        value: " http://fruit-backend-sb:8080/api/fruits"
      ref: ""

Same issue too using this config (see double Envs and double Vars)
@CompositeApplication(
        name = "fruit-backend-sb",
        exposeService = true,
        envVars = @Env(
                name = "SPRING_PROFILES_ACTIVE",
                value = "openshift-catalog"),
        links = @Link(
                name = "Secret to be injected as EnvVar using Service's secret",
                targetcomponentname = "fruit-backend-sb",
                kind = "Secret",
                ref = "postgresql-db"))
@ServiceCatalog(
   instances = @ServiceCatalogInstance(
        name = "postgresql-db",
        serviceClass = "dh-postgresql-apb",
        servicePlan = "dev",
        bindingSecret = "postgresql-db",
        parameters = {
                @Parameter(key = "postgresql_user", value = "luke"),
                @Parameter(key = "postgresql_password", value = "secret"),
                @Parameter(key = "postgresql_database", value = "my_data"),
                @Parameter(key = "postgresql_version", value = "9.6")
        }
   )
)

Result
---
apiVersion: "v1"
kind: "List"
items:
- apiVersion: "component.k8s.io/v1alpha1"
  kind: "Component"
  metadata:
    name: "fruit-backend-sb"
  spec:
    deploymentMode: "innerloop"
    runtime: "spring-boot"
    exposeService: true
    env:
    - name: "SPRING_PROFILES_ACTIVE"
      value: "openshift-catalog"
    - name: "SPRING_PROFILES_ACTIVE"
      value: "openshift-catalog"
    link:
    - kind: "Secret"
      name: "Secret to be injected as EnvVar using Service's secret"
      targetComponentName: "fruit-backend-sb"
      ref: "postgresql-db"
    - kind: "Secret"
      name: "Secret to be injected as EnvVar using Service's secret"
      targetComponentName: "fruit-backend-sb"
      ref: "postgresql-db"

This is what happens when you forget to recompile the core's project. No double env vars appears after recompiling it


Implement the Client class

as discussed in some comments floating somewhere around here. The client would handle passing of the base_url and auth_token to the endpoints + bundle all the endpoints to one place so we are left with this simple and clean usage:
>>> from kbcstorage import Client
>>> client = Client('myapitoken')
>>> client = Client('myapitoken', root_url='https://connection.keboola.com') # alternatively
>>> client.buckets.list()
# a list of all buckets
>>> client.workspaces.detail(1234)
# etc...

This still allows one to instantiate endpoints one by one if he wishes to.
from kbcstorage.tables import Tables
from kbcstorage.buckets import Buckets

tables = Tables('https://connection.keboola.com', 'your-token')
# get table data into local file
tables.export_to_file(table_id='in.c-demo.some-table', path_name='/data/')
# save data
tables.create(name='some-table-2', bucket_id='in.c-demo', file_path='/data/some-table')
# list buckets
buckets = Buckets('https://connection.keboola.com', 'your-token')
buckets.list()
# list bucket tables
buckets.list_tables('in.c-demo')
# get table info
tables.detail('in.c-demo')

I am happy to implement this after we deal with #28

yep, that looks like something i imagined :)

ed2400d removed the Client class which did exactly this?

Uh, sorry about that, I sort of came to conclusion that it's only a stub.

I'll put it back in a moment

No worries, most of the functionality is in the endpoints anyway. I like the client structure to tie them all together but currently it's also possible to have endpoints instantiated independently anyway.
I would say only two changes need to be made:

[ ] Choose the argument order: I prefer url first then token, but I'd happily concede if there is a preference for the converse.
[ ] Use the python properties pattern to make it possible to change the password post instantiation.

Unless there are any other changes, I could quickly make those changes and we could close this issue?

actually @pivnicek already merged that https://github.com/keboola/sapi-python-client/pull/31/files (slightly before i expected) - the arguments are consistent i think
I don't understand the second point though

2nd point solved in https://github.com/keboola/docker-custom-python/commit/fbda9b4ccfdf96feb8cec83d54cc75bd2e1c9c24 -> Client class finished


Prepare generators for 3D Tiles 1.1

The whole PR is autogenerated code except for files in the tools folder. There I made a few changes:

glTF.json and 3dTiles.json now use updated schemas for 3D Tiles 1.1. I also rearranged the items by extension, by alphabetical order.
Support inner references in JSON schema, like definitions.schema.json#/definitions/numericValue. Currently this doesn't affect any of our schemas because the ones that do use the # end up having many possible types so it defaults to JsonValue regardless.
This is a draft PR because the 3D Tiles 1.1 spec is not 100% final. I'm posting this early to show how the generated files look in case there are mistakes. I didn't look super closely at all the generated code and haven't tried calling these generated classes from other code, but that will happen soon. cesium-native builds and the generated file names look correct to me.

Closing for now because the schema directory structure changed and we need a way to do search paths to find schemas that are not in the same tree

Re-opened and ready for review.
Updates just the 3D Tiles and glTF extensions. 3D Tiles 1.1 support will be a follow up PR.

After merging #465, there are a lot of conflicts in this PR. That isn't surprising, and I intended to just fix it. But the problem is that this branch and that branch generate the glTF classes from different branches of the glTF repo, and apparently their common ancestor is over 5 months old and each have over 150 diverging commits! Scanning the commits, I'm pretty sure this isn't actually true, but instead is a symptom of rebasing. Please don't rebase! Have I mentioned that before? Rebasing publicly-visible branches is pure evil. This is one big reason why.
Anyway, I'm probably going to need some help merging these two glTF branches before I can merge this PR.

The glTF branches should be sorted out now. I merged https://github.com/CesiumGS/glTF/pull/47 and https://github.com/KhronosGroup/glTF/pull/2088 into the 3d-tiles-next branch.
I'm definitely guilty of rebasing KhronosGroup/main into CesiumGS/3d-tiles-next a while back, but lately I've avoided it.

Thanks @IanLilleyT and @lilleyse!


Proposal: Merge into Danger Swift

This is likely to be one of the main reasons people use Danger Swift, I think it makes sense to probably just include in in core to save on some of the expense of Danger plugins ( e.g. #14 ). While I think this can be fixed, I'm not sure if it can be done in an elegant way (danger swift has to be compiled twice if you're not using a package.swift for example )
This related to the discussion in https://github.com/danger/swift/issues/139

Yup, I followed up in that conversation but the rationale makes total sense to me 👍 Let me know what I can do to help.


Add updated Geo example app

Closes #1185.
\c @jpsim

Can one of the admins verify this patch?

I need to rebase this on top of al-swift, eventually


Problem refreshing AWS credentials after a while (out_opensearch_expire_credentials timer detached)

There seems to be an issue refreshing AWS credentials where after a while (could be hours/days or more) an error happens ([error]: #0 Unexpected error raised. Stopping the timer. title=:out_opensearch_expire_credentials error_class=Aws::Errors::MissingCredentialsError error="unable to sign request without credentials set" + [error]: #0 Timer detached. title=:out_opensearch_expire_credentials) and after around 1 hour (probably the token duration time) it starts failing to push the logs to OpenSearch with messages like [warn]: #0 failed to flush the buffer. retry_times=0 next_retry_time=2022-08-26 05:32:20 +0000 chunk="5e71e374ec40ad1da90069a1909c0e63" error_class=Fluent::Plugin::OpenSearchOutput::RecoverableRequestFailure error="could not push logs to OpenSearch cluster ({:host=>\"<AWS_OPENSEARCH_1_3>.<region>.es.amazonaws.com\", :port=>443, :scheme=>\"https\"}): [403] {\"message\":\"The security token included in the request is expired\"}"
Full log in attached opensearch-issue.log file.
Steps to replicate
Unable to replicate, it just happens after some time (hours/days/...).
Expected Behavior or What you need to ask
Ability to recover from the error, or have logic where the doesn't happen in the first place.
Using Fluentd and OpenSearch plugin versions

OS version: Ubuntu 20.04
Bare Metal or within Docker or Kubernetes or others? Kubernetes
Fluentd v1.0 or later

td-agent 4.4.1 fluentd 1.15.2 (c32842297ed2c306f1b841a8f6e55bdd0f1cb27f)

OpenSearch plugin version

fluent-plugin-opensearch version 1.0.7

OpenSearch version (optional): AWS OpenSearch 1.3
OpenSearch template(s) (optional)

We had a somewhat similar error running fluent/fluentd-kubernetes-daemonset:v1.14.6-debian-opensearch-1.1 image.
2022-09-28 17:23:16 +0000 [error]: #0 [opensearch] Unexpected error raised. Stopping the timer. title=:out_opensearch_expire_credentials error_class=Aws::STS::Errors::InvalidIdentityToken error="Couldn't retrieve verification key from your identity provider,  please reference AssumeRoleWithWebIdentity documentation for requirements"  ```

Not sure if we can somehow configure it to retry. Maybe we can use `unrecoverable_error_types`?

Maybe this can help further investigation - servers are also experiencing other type of error (error_class=Seahorse::Client::NetworkingError) which causes Timer detached. title=:out_opensearch_expire_credentials and auth failure around an hour after due to The security token included in the request is expired:
2022-11-02 12:36:08 +0000 [error]: #0 Unexpected error raised.
The client is unable to verify distribution due to security privileges on the server side. Some functionality may not be compatible if the server is running an unsupported product.
2022-11-02 13:42:38 +0000 [warn]: #0 failed to flush the buffer. retry_times=0 next_retry_time=2022-11-02 13:43:09 +0000 chunk="5ec7cffe03353c38c2f086a96ce4ed44" error_class=Fluent::Plugin::OpenSearchOutput::RecoverableRequestFailure error="could not push logs to OpenSearch cluster ({:host=>\"search-atom-logs-szwnz6wiusktpyvhlbuuxenfxq.eu-west-1.es.amazonaws.com\", :port=>443, :scheme=>\"https\"}): [403] {\"message\":\"The security token included in the request is expired\"}"
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluent-plugin-opensearch-1.0.7/lib/fluent/plugin/out_opensearch.rb:1133:in `rescue in send_bulk'
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluent-plugin-opensearch-1.0.7/lib/fluent/plugin/out_opensearch.rb:1095:in `send_bulk'
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluent-plugin-opensearch-1.0.7/lib/fluent/plugin/out_opensearch.rb:906:in `block in write'
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluent-plugin-opensearch-1.0.7/lib/fluent/plugin/out_opensearch.rb:905:in `each'
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluent-plugin-opensearch-1.0.7/lib/fluent/plugin/out_opensearch.rb:905:in `write'
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluentd-1.15.2/lib/fluent/plugin/output.rb:1180:in `try_flush'
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluentd-1.15.2/lib/fluent/plugin/output.rb:1501:in `flush_thread_run'
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluentd-1.15.2/lib/fluent/plugin/output.rb:501:in `block (2 levels) in start'
  2022-11-02 13:42:38 +0000 [warn]: #0 /opt/td-agent/lib/ruby/gems/2.7.0/gems/fluentd-1.15.2/lib/fluent/plugin_helper/thread.rb:78:in `block in thread_create'

Is this patch https://github.com/fluent/fluent-plugin-opensearch/pull/78/files effective to reduce you all’s issue?

Hi @cosmo0920,
I wouldn't say #78 will be effctive as, from my understanding of the actual problem based in the logs, the isue is not arount the refresh time, it's around the timer responsible to refresh the credentials being detached/terminated ([error]: #0 Timer detached. title=:out_opensearch_expire_credentials) and consequently credentials not getting "refreshed" ever again, so the current ones will expire at some point independently of the refresh_credentials_interval value introduced in #78 (as there's no timer to refresh them).
So I think the only thing that would actually be required to fix this is a retry mechanism to get a new set of temporary credentials when those fail to refresh (instead of detaching the timer and never refreshing again) as the underlying errors observed so far (Aws::Errors::MissingCredentialsError error="unable to sign request without credentials set" and Seahorse::Client::NetworkingError) seem to be related to temporary AWS failures (API and network).

Hmm, I see. We have to investigate further to handle "accurate" understanding for this issue. 🤔

Hey @cosmo0920 ,
Any news regarding this issue? it still continues to happen and the pod remains in running state (I am using this image:  v1.15.1-debian-opensearch-1.1) so it takes time to know logs aren't being sent, any way to do health check for this plugin so it will restart the pod if this issue happens?

I think setting refresh_credentials_interval definitely helps.
But the underlying issue might be: Aws::AssumeRoleCredentials.new(...)
I think we should set duration_seconds parameter (see AssumeRoleCredentials docs).

@Jonniedev I think it does help since this issue only happens every few months after I set refresh_credentials_interval to 1h, but it still happens, would be great if it happened and it caused the pod to restart and not continue running with the problem.

Could this patch https://github.com/fluent/fluent-plugin-opensearch/pull/78 work for you all?

Thanks very much!
This looks fine, but needs extensive testing.
Also, I think it shows conflicts at the moment.

Oh, you're right. I updated the PR to resolve conflicts.
Would you mind if you tried the patch?


Another leaked document.

In https://www.oneeyedman.net/ there is a post linking an (unverified, AFAIK) email sent by Roger Dingledine.

Thanks, added: https://github.com/Enegnei/JacobAppelbaumLeavesTor/commit/b3902a8445b513402b0510f8f7bad57c4bd3cca0


Add an allow list of commands that can be un-signed

The tool should take control of what commands can be used without signing rather than relying on the global environment hook.
Relying on the global environment hook to let certain commands through means plugin checking isn't performed.

Closed with #21


test(ModalBody): migrate to React testing library

[ ] Bug fix
[ ] New feature
[x] Chore
[ ] Breaking change
[x] There is an open issue which this change addresses
[x] I have read the CONTRIBUTING document.
[x] My commits follow the Git Commit Guidelines
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.

[ ] I have updated the documentation accordingly.

[ ] My change requires a change to Typescript typings.

[ ] I have updated the typings accordingly.

[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

#2625

I made this PR as part of hacktoberfest, if you are happy with the work I have done please could you add the hacktoberfest-accepted label. Thanks for the opportunity to contribute!

I made this PR as part of hacktoberfest, if you are happy with the work I have done please could you add the hacktoberfest-accepted label. Thanks for the opportunity to contribute!


adding test cases

SonarQube analysis reported 32 issues

 3 blocker
 2 critical
 11 major
 16 minor

Watch the comments in this conversation to review them.


binja: move the stack string detection to the function level

This fixes https://github.com/mandiant/capa/issues/2516

Checklist

[ ] No CHANGELOG update needed

[ ] No new tests needed

[ ] No documentation update needed

nice!


How can I add a new sample with vs2019?

There are some dx11 samples not in this repo, but installed with Microsoft DirectX SDK (June 2010.
ContactHardeningShadows11
DDSWithoutD3DX11
DecalTessellation11
DetailTessellation11
PNTriangles11
WindowsTouch
These samples are vs2010 or vs 2013, how can I convert them to vs2019 and add to this repo?

This repository has "cleaned up" versions of the samples. I did not convert those samples to remove all use of legacy D3DX11.
You can, however, find them all on this repo which uses the Microsoft.DXSDK.D3DX NuGet package instead of the legacy DirectX SDK.


VS Code not respecting editor.foldingImportsByDefault for Java

Does this issue occur when all extensions are disabled?: Yes (tested on the vscode.dev instance)

VS Code Version: vscode.dev
OS Version: Mac OS

Steps to Reproduce:

Try folding the imports of a Java file (either with the > button or by setting editor.foldingImportsByDefault to true
The imports won't be folded (there is no > button)

According to this information, this should work out of the box for Java (i.e. with the default indent-based folding strategy)

Is the Java extension installed? It's the Java extension that will create the folding range for the imports.

No, I thought this was supposed to work without the Java extension (from the documentation linked above it sounds like it should...)
If it's not, then I guess the bug can be closed.

No, with the Java extension you only get indentation based folding ranges


MLHR-1754 #resolves vertica - asynchronous jdbc batch writer from files

Will need new pull request against ASF repo.


[RESOLVED] High ICMP ping response time

Problem started at 02:08:14 on 2023.07.24
Problem name: High ICMP ping response time
Host: ZO-FG
Severity: Warning
Operational data: Value: 193ms
Original problem ID: 32939
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23125&eventid=32939

Problem has been resolved in 2m 0s at 02:10:14 on 2023.07.24
Problem name: High ICMP ping response time
Host: ZO-FG
Severity: Warning
Original problem ID: 32939


a logo for Istanbul

Everyone's favorite test-coverage tool is now an organization \o/ would love help figuring out a logo.

Let me be the first to suggest this terrible idea:

a cartoon version of that would probably be p cool actually...

Some other revs on this embarrassing pop culture reference:

perhaps something inspired by the They Might Be Giants Logo, keep makes sense once we move nyc into this org:
http://laughingsquid.com/wp-content/uploads/tmbg-logo-20101115-094946.jpg

@bcoe Tricky thing about that is TMBG have had a lot of "logos" over the years in varying degrees of officialness and a wide variety of styles.

Are you looking for more of an 'istanbul the country' theme, or something more offbeat?

@markstory I was personally thinking maybe a bit more offbeat, focus on the test coverage not city ... maybe like someone covering toast with peanutbutter :p

How about this:

@markstory, @chrisdickinson, @isaacs, @ashleygwilliams perhaps as an alternative we go with the JavaScript black and yellow scheme, cut out the red:

@bcoe That looks good to me. You'll lose some of the detail at small sizes, but the silhouette is distinct enough. I think that might work better than toast & jam :smile:

@markstory if you got bored and wanted to simplify the silhouette, sure wouldn't turn down your artistic expertise 🎉
I'm using to use this for the time being. Don't know if you've been playing with ES2015 much? but check this out:
https://github.com/istanbuljs/babel-plugin-istanbul/pull/2

@bcoe - nice!

@bcoe @gyehuda - I'm reopening this issue since, apparently, we shouldn't be using this logo. The original art is not creative commons? Gil has more details.

@gyehuda @gotwarlost this is a stock photo drawing of the Hagia Sophia landmark, which I purchased off something like IStock Photo and modified quite a bit in photoshop myself to make it into a logo. Is there a specific complaint?

@gyehuda @gotwarlost I'll happily photoshop an alternative drawing, stock photo, linocut, etc., of the landmark into a similar logo if you can find one that passes your legal review.

Are you leaning toward the landmark still or want to go back to considering concepts that refer to test coverage or the results of test coverage?

@bcoe aha, I was not aware that you purchased this with the right to make a derivative work. I was informed by someone that the image looks like one subject to copyright and thus it appeared that it was simply copied. So I asked if we were confident that it was OK that we use this image. If indeed we have rights to it, great. However, it may be best that the resultant logo look sufficiently distinct so that if someone else points this out again, it would be even more apparent that this is a distinct logo that is rightfully being used by this project. Thanks for giving attention to this -- and thanks also for purchasing the rights in the first place.

@jameswomack @gyehuda @gotwarlost definitely open to artistic interpretation! I liked the idea of pulling in a landmark from Istanbul because it fits well with the name -- but we don't have to keep in that direction.
Keeping an interchangeable color scheme would be nice because we have this site we'll need to update:
https://istanbul.js.org/

I didn't see any wordmarks yet so here are some ideas. I was thinking about what the culture itself feels like. Medici script seemed to have an east-meets-west feeling to it, and is by Hermann Zapf. The fleurons and jewels are more neoclassical, but the overlapping of them starts to give the logo a complex look..feedback or thoughts?

Some more logos, using an actual byzantine typeface this time:

I was looking for the original purchase so I could confirm the license.
Part of me would like to redraw a similar image just to eliminate any
potential concerns.
I'll try to find the license I bought in the mean time.
On Thursday, October 20, 2016, Gil Yehuda<EMAIL_ADDRESS>wrote:

@bcoe https://github.com/bcoe aha, I was not aware that you purchased
this with the right to make a derivative work. I was informed by someone
that the image looks like one subject to copyright and thus it appeared
that it was simply copied. So I asked if we were confident that it was OK
that we use this image. If indeed we have rights to it, great. However, it
may be best that the resultant logo look sufficiently distinct so that if
someone else points this out again, it would be even more apparent that
this is a distinct logo that is rightfully being used by this project.
Thanks for giving attention to this -- and thanks also for purchasing the
rights in the first place.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istanbuljs/istanbul-lib-instrument/issues/6#issuecomment-255160164,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAL4MR2yD7Nz5v8cgHvyuPjcj-RTpw1Bks5q15lUgaJpZM4I-JjH
.


Optimize writeout queue in cache

These look pretty rad. I love the "noop" write strategy, it was a huge perf gain not waiting for sorts in the original python carbon-cache.
I'm a little confused why these are all in one big PR though.
42dc917 and 2aa0967 Seems like they should be a single PR and should have a benchmark to go along with it
126f00b Can stand on it's own and doesn't come with the inherent risk with changing the underlying data model/handling
121cca0 Similarly low risk and can stand on it's own
At any rate, it isn't my project to manage. But these look really cool.

Agree, I'll split into  multiple PRs.
"noop" is the only way to go, all other "strategies" are redherring and do more harm than good
Any properly configured carbon server will be tuned so that go-carbon writes to pagecache only and would never be blocked on IO  (only to read headers which were evicted from pagecache, but that is not affected by order anyway), so there is no difference in which order to writeout datapoints.

:+1: for implementing 'noop' strategy!
But agreed with @drawks with splitting this.

I am preparing commit with a benchmark

OK here are test results:
# checkout first commit in PR with benchmark added only
$ git checkout 9eb8ffd37c084106a83b5cc870e220ff4ae86b66
$ go test -v -run zzzzz -bench .  -benchtime=20s -benchmem
PASS
BenchmarkUpdateQueueMax-4 	      20<PHONE_NUMBER> ns/op	77187959 B/op	 1000052 allocs/op
BenchmarkUpdateQueueSort-4	      20<PHONE_NUMBER> ns/op	77187940 B/op	 1000050 allocs/op
BenchmarkUpdateQueueNoop-4	      30<PHONE_NUMBER> ns/op	77187950 B/op	 1000054 allocs/op
ok  	_/home/rossmohax/repos/external/go-carbon/cache	115.608s

So baseline is 1508 ms, 1724 ms and 1118 ms for  all three strategies
With queue optimizations:
$ git checkout reuse-cache-queue
$ go test -v -run zzzzz -bench .  -benchtime=20s -benchmem
PASS
BenchmarkUpdateQueueMax-4 	      50	 636295082 ns/op	      32 B/op	       1 allocs/op
BenchmarkUpdateQueueSort-4	      10<PHONE_NUMBER> ns/op	      32 B/op	       1 allocs/op
BenchmarkUpdateQueueNoop-4	     500	  49195900 ns/op	       0 B/op	       0 allocs/op

That is 636ms (2.33x speedup),  2793ms (1.6x slowdown)  and 49 ms (22x !! speedup)
Slowdown for timestamp sort is due to multiple dereferencing to reach timestamp.
I have an attempt in my repo (https://github.com/redbaron/go-carbon/tree/queue-optimize-bad-sort) where I try to improve sorted strategy case and although it improves numbers comparing to master, it comes with a 10x  penalty comparing to fastest case presented here.

Another note: before PR benchmark memory floats ~1.1 GB on Go 1.6.3 , with changes in this PR it comes down to ~650MB


docs-linting Image throwing false positive

# Image Extension displays linting error for image linting. But it should not throw an error.

No longer able to repro this bug, I think there was an issue with the API call to the schema which was causing this problem.


lnrpc: add block height params to GetTransactions and add ListSweeps

GetTransactions:

Expose start and end height parameters over rpc, with special case for including unconfirmed transactions
Current special case for unconfirmed matches btcwallet (end_height=-1), considered adding an included_unconfirmed flag, but I think it's confusing to have this bool which will overwrite end_height if it's set; rather just have one special case.

Sweeps:

At present, we do not provide users with an account of their sweeps, providing this list is a first step towards exposing this information
Not paginated at present, because sweeps are keyed by tx hash (order will change when we insert a new hash), we shouldn't struggle with response size for just a txid list

Needs a rebase!


[ERROR] No ceremonies are opened to contributions emitted every minutes

The CloudFunctions checkAndRemoveBlockingContributor constantly emit this error logs every minutes when there are no opened ceremonies.

Partially addressed here #191

Partially addressed here #191

Not sure but should this be considered an error? I wanted to address that it seems like not consistent with another functions where it emit log as a INFO level for same case:
https://github.com/quadratic-funding/mpc-phase2-suite/blob/dev/packages/backend/src/functions/ceremony.ts#L20

Sorry, I didn't realize you meant that! Okay, yes we should match the pattern used for other cloud functions.


Graphana Charts: Delivery Velocity -> "Average Requirement Lead Time by Status in Last 2 Months"

Describe the bug
The above mentioned chart shows no data due to unknown reasons.
To Reproduce
Steps to reproduce the behavior:

Start Dev Lake
Collect Data
Open Grafana.
Select "Delivery Velocity" chart
Go to "Average Requirement Lead Time by Status in Last 2 Months"  chart.

Expected behavior
I would expect some data to be populated.
Screenshots

Additional context
This metric depends on Jira Issue Lead Time. There may be a problem in the SQL query.

@Startrekzky Please take a look at this issue,  assign to me if it was out of your reach.


code coverage and tests

Current code coverage is low, this is related to the absence of tests function.
We will need to populate the tests folder, with one test per functionality. Possibility to reuse the tests from the prototype repository.

see

#85
#83
#82

Although coverage is only run on the tests code not on the package code ... ?

Solved with

#108

test and coverage is only done on ubuntu so far.


'cmake --build . --target check' hangs instead of running tests

In version 2024.07.14 'cmake --build . --target check' hangs:
Run Build Command(s): /usr/local/bin/ninja -v check
[1/58] cd /usr/ports/math/rumur/work/.build/librumur && /usr/bin/env true

clang-18
FreeBSD 14.1

There are quite a few CI jobs that run on FreeBSD, https://github.com/Smattr/rumur/blob/main/.cirrus.yml, but nothing specifically for 14.1. Is this problem specific to 14.1?

Now that I've waited for a very long time the tests succeeded.
The problem is that the tests terminal output is held up and not displayed in real time, like the python command does when it is run separately.

Ah so I guess this is a side effect of the buffering Ninja does. Not sure what I can do about this. This convoluted workaround to force console access, https://stackoverflow.com/questions/64506988/can-i-tell-cmake-a-specific-target-and-its-dependencies-shouldnt-be-built-in-pa? Suggestions?


Merge me please!

This was an update to get the registration and login forms back working again. The work on the testing system will be dependent on it.
Alan

eehhh.. something went wrong here................, only wanted to merge the first commit quickly and continue working on the files for the ui-testing seperately. Just thought it was better to seperate it to get a running login and registration system back in the develop branch, should be able to get this part of the testing finished soon. It just tests that you get the correct error messages back from the website for each error condition. The tests are the difficult part.


Stop player on completion

Was poking around, heres a way that the player can automatically stop when done playing. Right now the user has to setup a playback listener and do that manually.
The approach I took was to unconditionally add an event listener when play is pressed, and if addPlayBackListener has been called, then we'll call that as apart of our event listener. This way, we can do some additional logic in our event listener (e.g check if duration === currentPosition), while still having only one event listener overall.
Another approach would of been to add a completely separate event listener for internal use only.

@meeoh thank you for looking into this!
I tested your changes and they indeed work, but only on the first play. After the first play is completed, the issue persists for the consecutive ones. The duration !== currentPosition, so it's not possible to figure out that playback has stopped.
Do you have an idea how to accomplish this?

@rafalzawadzki Were you testing on iOS or android? I tried on iOS and I was able to press play, it would play till completion then get stopped. And when I would press play again it would work fine 😕

Would be great to have a onPlaybackStopped event to trigger logic when playback finishes, how could I do that?

Would be great to have a onPlaybackStopped event to trigger logic when playback finishes, how could I do that?

This PR is already merged so wont be apart of it @milesscherrer. However if you add a playback listener, you can just wait for currentPosition === duration and run your logic on that

Would be great to have a onPlaybackStopped event to trigger logic when playback finishes, how could I do that?

This PR is already merged so wont be apart of it @milesscherrer. However if you add a playback listener, you can just wait for currentPosition === duration and run your logic on that

Would be great to have a onPlaybackStopped event to trigger logic when playback finishes, how could I do that?

I second that! Considering this issue, it's not possible to reliably trigger "on stop" logic

Anybody found an effective solution/workaround for this?


"Write Virtual Files" command writes typescript files with .js extension

The "Write Virtual Files" writes virtual component files using .js extension which is annoying when trying to look at those files in the editor as TypeScript will then complain that the type annotations can only be used in TS files. Can this command rewrite the extension when writing files? Or alternatively can the internal extension be changed to .ts?

This is about Vue 2.7 BTW. It seems like with Vue 3.x it might be using .ts extension already.

Actually just realized that the extension depends on whether the script tag in the vue file uses TS or JS. But still, the generated file is written in typescript so it would make sense to force TS in all cases.


[entropy_src] V2S sign-off

This resolves https://github.com/lowRISC/opentitan/issues/16330.

Update: all V2S tasks are done, entropy_src is ready for sign-off :-)

The FSM coverage is still below 90% in Wed's nightly. Are we waiting for another nightly result which may show a better number?

The FSM coverage is still below 90% in Wed's nightly. Are we waiting for another nightly result which may show a better number?

We ran a full regression locally and @andreaskurth got the results here: https://github.com/lowRISC/opentitan/issues/16063#issuecomment-1318457489
It would be nice if you would approve the PR and we merge it once the dashboard shows the next nightly results tomorrow morning. Alternatively, it's also fine to wait for the next nightly before you approve it. I would just like to get this done before tomorrow evening your time :-)

The FSM coverage is still below 90% in Wed's nightly. Are we waiting for another nightly result which may show a better number?

We ran a full regression locally and @andreaskurth got the results here: #16063 (comment)
It would be nice if you would approve the PR and we merge it once the dashboard shows the next nightly results tomorrow morning. Alternatively, it's also fine to wait for the next nightly before you approve it. I would just like to get this done before tomorrow evening your time :-)

Good to know we already saw a better FSM coverage locally, just approved.

Thanks @weicaiyang !

Btwy, nightlies should be out shortly. So we can merge this for you @vogelpi once we double checked the results.

Hm it looks like something went wrong here - nightlies show quite a drop in coverage:

SCORE
BLOCK
BRANCH
STATEMENT
EXPRESSION
TOGGLE
FSM
ASSERTION
COVERGROUP

89.24
96.62
90.78
97.78
92.15
38.16
79.31
91.29
93.20

Thanks for sharing the results, I can't see them at the moment. This doesn't look right. We'll investigate tomorrow.

It looks like your CG and UNR fixes did not make it into this nightly batch today, so we may just have to wait another day to get the updated results. That is ok - we can merge this tomorrow.

Thanks @vogelpi and @andreaskurth for all your efforts on V2S!

Hm it looks like something went wrong here - nightlies show quite a drop in coverage:
SCORE 	BLOCK 	BRANCH 	STATEMENT 	EXPRESSION 	TOGGLE 	FSM 	ASSERTION 	COVERGROUP
89.24 	96.62 	90.78 	97.78 	92.15 	38.16 	79.31 	91.29 	93.20

I remember seeing those numbers before #16421, and the revision reported in the nightlies is f76c18cba, which as @msfschaffner points out is before #16421 got merged in b6b962ac5ab60d69ba26a692403eee54d0100644. So I'm confident that the next nightlies will show the current and sufficient coverage numbers.

Thanks @vogelpi and @andreaskurth for all your efforts on V2S!

Thank you and your team for all your efforts before us, as well as your support of our efforts! :+1:

I am happy to have reached this goal but even more excited about the excellent collaboration. This was a great team effort across partner companies, thanks @martin-lueker , @weicaiyang , @msfschaffner , @andreaskurth and everybody else involved in this !

From the nightlies today:

SCORE
BLOCK
BRANCH
STATEMENT
EXPRESSION
TOGGLE
FSM
ASSERTION
COVERGROUP

97.96
99.07
97.42
99.65
95.11
100.00
97.87
91.29
93.67

Merging!


Adapt rendering non-recursive CTEs when a recursive CTE is present

When we consider a query with multiple CTEs, one of the being a recursive one, PostgreSQL will bail out when encountering the non-recursive CTEs saying that it requries all CTEs to have a UNION ALL part when the RECURSIVE keyword is used.
We can workaround this limitation of PostgreSQL by generating a dummy UNION ALL query which we already do for emulating normal CTEs for H2.
The workaround is to do this manually.

Which version of Postgresql is this? I use recursive and non recursive CTE's along side all the time?

@Mobe91 which version are you using? You have been affected by this

Postgresql 9.6

I was using entity inheritance with my CTE entities and this messed up the query generation. When I removed the use of entity iheritance, this issue went away. I created a separate issue #762 for checking the use of entity inheritance in CTE entities.


Add higher level package for easier consumption

I think it makes sense to have this interface for e.g. kubernetes to directly use.
It also makes sense to tie runtime + image together closely since, well, they are inter-dependent (shared data directory).

LGTM


Installation fails on arch linux

When installing on my arch linux system with both python2 and python3 installed, I get the following error:
bf@xxx> npm i --save mediasoup

><EMAIL_ADDRESS>postinstall /foo/bar/node_modules/mediasoup
> make Release

cd worker &&  ./scripts/configure.py -R mediasoup-worker
  File "./scripts/configure.py", line 48
    print 'Error running GYP'
                            ^
SyntaxError: Missing parentheses in call to 'print'
make: *** [Makefile:19: Release] Error 1

It looks like PYTHON?=$(type -p python2 || echo python) in Makefile returns an empty string. When I do type -p python2 || echo python in bash it returns /usr/bin/python2. The shell from which I am using npm is fish.
Can anybody help me?

Interesting. No idea about fish, but I've installed it to check and indeed the problem is there:
ibc@ibc-macbook ~> echo $(type -p python2 || echo python)
Unsupported use of '||'. In fish, please use 'COMMAND; or COMMAND'.
fish: echo $(type -p python2 || echo python)
                              ^

@saghul help please :)

To be clear: using or instead of || would not work in bash/sh, so that's not a solution.

@ibc how about we add a #!/bin/bash on top of the Makefile? Would it then run in bash?

No, Makefiles are not scripts but just text files read and interpreted by the make command.

@bf I don't know how to solve it right now. In the meanwhile, may you try moving to bash or sh before npm install mediasoup?

Just asked in StackOverflow, let's see.

@ibc you're right. I shouldn't worry about this because the servers aren't running this weird shell :-) They run plain bash. I'll try installing within bash on my dev machine.
Thanks also for your immediate response, much appreciated. Keep up the good work. Will post again to let you know if it worked.

@ibc Dang. I tried in bash and sh, both return the same error. I also did su root and npm install there, also same error. I tried sudo -u foo npm i --save ... but it didn't work because of missing nvm initialization.
Not sure what I can do?

I'm pretty sure it cannot be the same error.  Please try a fresh install with your user (don't use root), using bash, and ensure you have all the requirements.
Also, before it, run npm cache clean.

[2]> bash
[foo@archibald bar]$ npm install --save mediasoup

><EMAIL_ADDRESS>postinstall /home/foo/src/bar/node_modules/mediasoup
> make Release

cd worker &&  ./scripts/configure.py -R mediasoup-worker
  File "./scripts/configure.py", line 48
    print 'Error running GYP'
                            ^
SyntaxError: Missing parentheses in call to 'print'
make: *** [Makefile:19: Release] Error 1
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none was installed.
npm ERR! Linux 4.10.4-1-ARCH
npm ERR! argv "/home/foo/.nvm/versions/node/v6.9.1/bin/node" "/home/foo/.nvm/versions/node/v6.9.1/bin/npm" "install" "--save" "mediasoup"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! code ELIFECYCLE

npm ERR<EMAIL_ADDRESS>postinstall: `make Release`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script 'make Release'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the mediasoup package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     make Release
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs mediasoup
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls mediasoup
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/foo/src/bar/npm-debug.log
[foo@archibald bar]$ exit
exit
foo@archibald ~/s/bar (master) [1]> sh
sh-4.4$ npm install --save mediasoup

><EMAIL_ADDRESS>postinstall /home/foo/src/bar/node_modules/mediasoup
> make Release

cd worker &&  ./scripts/configure.py -R mediasoup-worker
  File "./scripts/configure.py", line 48
    print 'Error running GYP'
                            ^
SyntaxError: Missing parentheses in call to 'print'
make: *** [Makefile:19: Release] Error 1
[                ..] \ postinstall: info lifecycle<EMAIL_ADDRESS>Failed

^C               ..] \ postinstall: info lifecycle<EMAIL_ADDRESS>Failed

sh-4.4$ exit
foo@archibald ~/s/bar (master) [130]> su root
Password:
[root@archibald bar]# sudo -u foo -s /bin/bash npm i --save mediasoup
/home/foo/.nvm/versions/node/v6.9.1/bin/npm: npm: line 2: syntax error near unexpected token `;'
/home/foo/.nvm/versions/node/v6.9.1/bin/npm: npm: line 2: `;(function () { // wrapper in case we're in module_context mode'
[root@archibald bar]# ^C
[root@archibald bar]# npm i --save mediasoup

><EMAIL_ADDRESS>postinstall /home/foo/src/bar/node_modules/mediasoup
> make Release

cd worker &&  ./scripts/configure.py -R mediasoup-worker
  File "./scripts/configure.py", line 48
    print 'Error running GYP'
                            ^
SyntaxError: Missing parentheses in call to 'print'
make: *** [Makefile:19: Release] Error 1

[root@archibald bar]#
[root@archibald bar]# ^C
[root@archibald bar]# gre^C
[root@archibald bar]# exit

Instead, in my computer (in which fish is not my default bash) it works even if I run npm install mediasoup within a fish shell. Which clearly tells me that make runs a shell internally (the default shell?).

https://www.gnu.org/software/make/manual/html_node/Choosing-the-Shell.html

The program used as the shell is taken from the variable SHELL. If this variable is not set in your makefile, the program /bin/sh is used as the shell.

So try this:
SHELL=/bin/bash  npm install mediasoup

If it fails, please clone the source code, open the Makefile in the root directory and add this at the top:
SHELL := /bin/bash

Then run make and let's see.

env SHELL=/bin/bash  npm install mediasoup --save

><EMAIL_ADDRESS>postinstall /home/beni/src/strivewire/node_modules/mediasoup
> make Release

cd worker &&  ./scripts/configure.py -R mediasoup-worker

I'll clone the repo :)

more info: http://stackoverflow.com/questions/589276/how-can-i-use-bash-syntax-in-makefile-targets

python2: /usr/bin/python2 /usr/bin/python2.7-config /usr/bin/python2.7 /usr/lib/python2.7 /usr/local/lib/python2.7 /usr/include/python2.7 /usr/share/man/man1/python2.1.gz```

Sorry to bother you with this weird bug.

Please, upgrade your master branch repo and try again (I'll reopen the issue until confirmed).

Tested the new master, receive a gyp error.
> make
make Release
make[1]: Entering directory '/tmp/mediasoup'
cd worker &&  ./scripts/configure.py -R mediasoup-worker
Traceback (most recent call last):
  File "./scripts/configure.py", line 13, in <module>
    raise RuntimeError('gyp requires Python 2, but this is Python ' + str(version) + ', ensure your python2 or python command points to the Python 2 executable')
RuntimeError: gyp requires Python 2, but this is Python 3, ensure your python2 or python command points to the Python 2 executable
make[1]: *** [Makefile:19: Release] Error 1
make[1]: Leaving directory '/tmp/mediasoup'
make: *** [Makefile:15: default] Error 2

I'm a bit lost... don't you have python2 executable? Please, enter into a bash session and run:
$ python2 -V

$ python -V

$ echo $(type -p python2 || echo python)

Python 2.7.13
[beni@archibald strivewire]$ python -V
Python 3.6.0
[beni@archibald strivewire]$ echo $(type -p python2 || echo python)
/usr/bin/python2
[beni@archibald strivewire]$ whereis python2
python2: /usr/bin/python2 /usr/bin/python2.7-config /usr/bin/python2.7 /usr/lib/python2.7 /usr/local/lib/python2.7 /usr/include/python2.7 /usr/share/man/man1/python2.1.gz
[beni@archibald strivewire]$

maybe we can learn from another python detection approach?
https://github.com/rabbitmq/rabbitmq-server/pull/213/commits/383b70bb4e643f0dfb7d79c3ee841819dc0a0ff3

I mean it is most likely the ?= in the Makefile line PYTHON?=. My default python is 3, but I also have python 2 installed, available via python2 and python2.7. What should we do?

We are missing something, it does not make sense. Please do this:
$ bash

$ python2 -V

$ python -V

$ which python2

$ which python

$ echo $(type -p python2 || echo python)

$ echo $PATH

$ sh

$ python2 -V

$ python -V

$ which python2

$ which python

$ echo $(type -p python2 || echo python)

$ echo $PATH

Here you are:
$ python2 -V
Python 2.7.13
[beni@archibald mediasoup]$ python -V
Python 3.6.0
[beni@archibald mediasoup]$ which python2
/usr/bin/python2
[beni@archibald mediasoup]$ which python
/usr/bin/python
[beni@archibald mediasoup]$ echo $(type -p python2 || echo python)
/usr/bin/python2
[beni@archibald mediasoup]$ echo $PATH
/home/beni/.nvm/versions/node/v6.9.1/bin:/home/beni/.gem/ruby/2.3.0/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
[beni@archibald mediasoup]$ echo $PYTHON

[beni@archibald mediasoup]$ sh
sh-4.4$ python2 -V
Python 2.7.13
sh-4.4$ python -V
Python 3.6.0
sh-4.4$ which python2
/usr/bin/python2
sh-4.4$ which python
/usr/bin/python
sh-4.4$ echo $(type -p python2 || echo python)
/usr/bin/python2
sh-4.4$ echo $PATH
/home/beni/.nvm/versions/node/v6.9.1/bin:/home/beni/.gem/ruby/2.3.0/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
sh-4.4$ echo $PYTHON

sh-4.4$

This is crazy. Please edit Makefile as follows:
default:
	@echo $(shell python -V 2>&1)
ifeq ($(MEDIASOUP_BUILDTYPE),Debug)
	make Debug
else
	make Release
endif

and run make again.

Also add this:
  @echo PYTHON: ${PYTHON}

I changed @echo PYTHON: ${PYTHON} to @echo PYTHON: AAA${PYTHON}BBB:
> make
Python 3.6.0
PYTHON: AAABBB
make Release
make[1]: Entering directory '/tmp/mediasoup'

Please see the following from http://stackoverflow.com/a/448973/282259
Using ?= assigns the variable a value iff the variable was not previously assigned. If the variable was previously assigned a blank value (VAR=), it is still considered set I think. Otherwise, functions exactly like =.
It is most likely the ?= operator!

Also see section about ?= in https://www.gnu.org/software/make/manual/make.html#Reading-Makefiles it says the same. Empty variable != Undefined variable in makefile it seems.

Yes that is what it is! See:
default:
        @echo $(shell python -V 2>&1)
        @echo PYTHON: AAA${PYTHON}BBB
        @echo $(origin FOO)
        @echo $(origin PYTHON)

> make
Python 3.6.0
PYTHON: AAABBB
undefined
file
make Release

Still I don't understand why PYTHON was already set (to an empty string).

According to https://stackoverflow.com/questions/38801796/makefile-set-if-variable-is-empty we should use
ifeq ($(PYTHON),)
PYTHON := $(type -p python2 || echo python)
endif

and be happy

It seems to be a rather common bug with Makefiles?

Yep, but still I don't know why PYTHON already has a value in your case.

Thanks, let's move the conversation to your PR #83.

I'm completely lost right now. I even think that the line PYTHON?=$(type -p python2 || echo python) did never work before.
In fact, if I remove it and run make, it works! how is possible?

If I remove the line it still doesnt work because my python is 3  ;)
I really, really appreciate your help this evening. Thank you.

mmm, I think I got it!
Please, try just this:
PYTHON := $(shell type -p python2 || echo python)

This works! Nice!

wow! finally!  XD

Thanks a lot for your report and contribution. We fixed a real bug!

Now I can also tell a real story why I hate Makefiles :D

OMG... https://travis-ci.org/ibc/mediasoup/jobs/216524554
Well, I'll check it tomorrow...

This is the prime example of management asking "what did you do yesterday?" - "oh there was this edge case...".....
Thanks again and good night.

<EMAIL_ADDRESS>Sorry, no support for that super old version.

I'm afraid it's<EMAIL_ADDRESS>as clearly shown  in the log above. Please check that.

root@winger:~/mediasoup/mediasoup-demo/server# npm i --save mediasoup

<EMAIL_ADDRESS>postinstall /root/mediasoup/mediasoup-demo/server/node_modules/clang-tools-prebuilt
node install.js

sh: 1: node: Permission denied

<EMAIL_ADDRESS>postinstall /root/mediasoup/mediasoup-demo/server/node_modules/mediasoup
make -C worker

make: Entering directory '/root/mediasoup/mediasoup-demo/server/node_modules/mediasoup/worker'
/usr/bin/python2 ./scripts/configure.py -R mediasoup-worker
['-R', 'mediasoup-worker', '/root/mediasoup/mediasoup-demo/server/node_modules/mediasoup/worker/mediasoup-worker.gyp', '--depth=.', '-f', 'make', '-Goutput_dir=/root/mediasoup/mediasoup-demo/server/node_modules/mediasoup/worker/out', '--generator-output', '/root/mediasoup/mediasoup-demo/server/node_modules/mediasoup/worker/out', '-Dgcc_version=54', '-Dclang=0', '-Dhost_arch=x64', '-Dtarget_arch=x64', '-Dopenssl_fips=', '-Dmediasoup_asan=false', '-Dnode_byteorder=little']
gyp: /root/mediasoup/mediasoup-demo/server/node_modules/mediasoup/worker/mediasoup-worker.gyp not found (cwd: /root/mediasoup/mediasoup-demo/server/node_modules/mediasoup/worker)
Makefile:22: recipe for target 'default' failed
make: *** [default] Error 1
make: Leaving directory '/root/mediasoup/mediasoup-demo/server/node_modules/mediasoup/worker'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for<EMAIL_ADDRESS>wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>(node_modules/clang-tools-prebuilt):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY<EMAIL_ADDRESS>postinstall: node install.js
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: spawn ENOENT
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR<EMAIL_ADDRESS>postinstall: make -C worker
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2019-10-11T08_21_57_789Z-debug.log

We wrote documentation for something: https://mediasoup.org/documentation/v3/mediasoup/installation/#linux-osx-and-any-nix-system


⚠ Bofrost.de has degraded performance

In cda630d, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 1805 ms

Resolved: Bofrost.de performance has improved in 53655a7.


Custom toolbar button hide when click on next page button

Here is my issue is when first-time Gmail load button is rendered properly but when I click on next button my custom toolbar button is hidden.

After click on next or previous button

I want to display that button consistent (means all pages).
How to do that ? for next and previous button any observe event ?

I'm pretty sure you can use the window-object's hash_change event for that:
https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onhashchange


Add ServerSide BlazorLazyLoading

Production ready Blazor Lazy Loading.

Hi. Thanks for the submission. Please remove the bold text in the description.

@AdrienTorris this is ready for merge now 😄

Thanks!


Raft client report incomplete error cause

The old implementation doesn't wait for receiver to finish, so the errordetail will be lost. One of the example is we can see a lot of  RemoteStopped send error in log with receiving error being None.
For example:
Setting server.max-grpc-send-msg-len to 10,240 and run tpcc prepare can see a lot of following logs:
    [2021/09/13 21:38:51.804 +08:00] [ERROR] [raft_client.rs:407] ["connection aborted"] [addr=<IP_ADDRESS>:20161] [receiver_err=None] [sink_error=Some(RemoteStopped)] [store_id=5]

Closed by https://github.com/tikv/tikv/pull/10944


Add Interactive Apps Section

Fixes #32

You will definitely want to "squash and merge" this bad boy.

For the lazy people, here is a build of the current commit:
interactive.zip


File Manager - Drag and drop functionality does not replace a file if replace is selected

If you select a file from the file manager and select Replace

Then drag a replacement file onto the window the file manager uploads the file as if it were a new file.

Expected behaviour: the dropped file replaces the existing file, or dropping a file is not allowed during the file replacement

@Seanom
I don't believe this is a bug. The Replace modal is providing a specific input field and form button for this task.

I agree with both of you: we should disable dropping files in the dialog


error in SourceVersionStringType

states 'use="optional"' instead of maxoccurs/minoccurs
(also true for requiredSourceVersionStringType)

Looks correct to me.

I mean use=optional is the default handling for attributes, but perhaps it makes it more readable to have it expressed.

Suggest that it should be consistent with the rest of the XSD


Possible typo

I've seen that the presets for the Mail Drop Box says "Mounted in a wall" but I think it should be "Mounted on a wall"

https://github.com/Zverik/every_door#presets-and-translations

@deevroman thank you, I didn't see that part. I've opened an issue on Transifex.


How  to control order of error messages ?

Example:
expressValidator({
    customValidators: {
        uniqueEmail: function (val) {
            return new Promise(function (resolve, reject) {
                setTimeout(() => reject(), 5 *1000);
            });
        },
    }
});

req.checkBody({
    email: {
        notEmpty: true,
        isLength: {
            options: [8, 40],
            errorMessage: 'wrong length'
        },

        isEmail: {
            errorMessage:  'wrong email'
        },

        uniqueEmail: { //this is custom Async Validator
            errorMessage: 'duplicate email'
        },
    }
});
return req.asyncValidationErrors(true);;

I always have error "Duplicate error," but I want to get the first error message from wrong validator

If I send email = "abc" -> need error  'wrong length'
If I send email = "abc_gmail.com" -> need error  'wrong email'
If I send email =<EMAIL_ADDRESS>and already have this email in DB -> need error  ''duplicate email'

Do you have any idea?

If you're not yet using v3, please update it.
We introduced the result API which solves this problem, very common until then.
req.getValidationResult().then( result => {
  result.useFirstErrorOnly().mapped(); // same structure as before, but no surprises when inspecting the returned object
});

Has this helped you, @AleksandrChernyavenko?

Yes, thanks


Update python-cmr to use NASA fork

python-cmr is now hosted at NASA under https://github.com/nasa/python_cmr

Done in v0.3.1 !!


Add Broadcast to video API

Adds Broadcast API (Vonage spec, based on OpenTok.
Since Broadcasts have many similarities to Archives in terms of their API endpoints and  requests / response, some refactoring has been performed to reduce duplication where it makes sense to do so.

Codecov Report

Merging #437 (df0670e) into 8.x-beta (a0c018e) will increase coverage by 1.11%.
The diff coverage is 95.62%.

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

@@              Coverage Diff               @@
##             8.x-beta     #437      +/-   ##
==============================================
+ Coverage       91.10%   92.21%   +1.11%
- Complexity       1677     2138     +461
==============================================
  Files             285      352      +67
  Lines            4631     5590     +959
  Branches          210      244      +34
==============================================
+ Hits             4219     5155     +936
- Misses            325      345      +20
- Partials           87       90       +3

Impacted Files
Coverage Δ

src/main/java/com/vonage/client/HttpWrapper.java
100.00% <ø> (ø)

...va/com/vonage/client/auth/SignatureAuthMethod.java
93.33% <0.00%> (-6.67%)
:arrow_down:

...n/java/com/vonage/client/auth/TokenAuthMethod.java
82.35% <0.00%> (-5.89%)
:arrow_down:

...main/java/com/vonage/client/sms/MessageStatus.java
100.00% <ø> (ø)

...rc/main/java/com/vonage/client/AbstractMethod.java
66.66% <40.00%> (-10.00%)
:arrow_down:

...n/java/com/vonage/client/sms/messages/Message.java
54.54% <66.66%> (-2.60%)
:arrow_down:

.../java/com/vonage/client/video/BroadcastStatus.java
71.42% <71.42%> (ø)

.../java/com/vonage/client/video/SendDtmfRequest.java
72.72% <72.72%> (ø)

src/main/java/com/vonage/client/HttpConfig.java
80.00% <75.00%> (-1.09%)
:arrow_down:

...om/vonage/client/video/ListBroadcastsResponse.java
75.00% <75.00%> (ø)

... and 74 more


[C++][Parquet] Update sha{1, 256, 512} checksums per latest ASF release policy

See http://www.apache.org/dev/release-distribution#sigs-and-sums
Reporter: Uwe Korn / @xhochy
Assignee: Uwe Korn](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=uwe) / @xhochy
Note: This issue was originally created as PARQUET-1096. Please see the migration documentation for further details.

Uwe Korn / @xhochy:
PR: https://github.com/apache/parquet-cpp/pull/392

Wes McKinney / @wesm:
Issue resolved by pull request 392
https://github.com/apache/parquet-cpp/pull/392


Update to use MONAI v1.3

Part of https://github.com/Project-MONAI/model-zoo/pull/509.
Status
Ready
Please ensure all the checkboxes:

[x] Codeformat tests passed locally by running ./runtests.sh --codeformat.
[ ] In-line docstrings updated.
[x] Update version and changelog in metadata.json if changing an existing bundle.
[ ] Please ensure the naming rules in config files meet our requirements (please refer to: CONTRIBUTING.md).
[ ] Ensure versions of packages such as monai, pytorch and numpy are correct in metadata.json.
[ ] Descriptions should be consistent with the content, such as eval_metrics of the provided weights and TorchScript modules.
[ ] Files larger than 25MB are excluded and replaced by providing download links in large_file.yml.
[ ] Avoid using path that contains personal information within config files (such as use /home/your_name/ for "bundle_root").

/build

/build

/build


Resolvers generation

Issue summary
Currently, if our model contains an entity that has 2 or more attributes of the same type it will generate resolvers as many times as the type has been used.
To recreate

use graphback init with shop example model
navigate to model/Shop.graphql and add owner field of type Person! to the model
run graphback generate
navigate to src/resolvers/generated/person.ts

run graphback db and npm run develop, the following error should be produced:

I think this feature should not be there as it is strange to have this type of connection as person do not have capabilities to fetch shop.

Since this is created as part of nested relation, it's just repeated. Keeping one will work for both. So we can check if it's already been added and skip append.

Which leads to the point that we need object representation of the resolvers first and then map it to the template. This will mean that we can test things nicely without inspecting strings.
Another problem I see is that I'm not sure if the relation should be there in the first place.
There is no shop relation in any of the types so this cannot be queried.
https://github.com/aerogear/graphback/blob/master/packages/graphback-cli/src/templates/resources/models/Shop.graphql#L1-L17
We are missing product relations for example etc.


Update use case page ui

Ref: MUP-127
https://github.com/user-attachments/assets/5fe11eff-9ff4-4e72-97f1-ab31cf2fc8a7

@pkong-ds updated as design:
Iphone XR:

browser:

Ipad Air:

LGTM

mobile
desktop
tablet


Oauth2_proxy configure multiple client ids

One application has one client id and client secret.if i have some apps,can a oauth2_proxy configure multiple applications?

You could configure the OAuth2 Proxy using a whitelist domain to protect multiple apps (this is usually used in the nginx auth request mode), though the upstream identity provider would see only one client id and client secret
There is currently no support for multiple client ids and client secrets


[Bug]: While using hybrid retriever with Elastic Search not able to retrieve for top_k>10

Bug Description
I have my embeddings stored in ELastic search and i am using hybrid retriever to retrieve top_k docs based on hybrid similarity using below command:
retriever = VectorIndexRetriever(index=index,vector_store_query_mode="hybrid" ,similarity_top_k=15)
Now , its working fine if similarity_top_k<=10 but as soon as i try to retrieve more than 10 nodes it gives below error:
BadRequestError: BadRequestError(400, 'action_request_validation_exception', 'Validation Failed: 1: [rank] requires [window_size: 10] be greater than or equal to [size: 15];')
Can someone help me how to retrieve >10 chunks since i have to do reranking on top of this.
Thanks.
Version
0.8.48
Steps to Reproduce
retriever = VectorIndexRetriever(index=index,vector_store_query_mode="hybrid" ,similarity_top_k=15)
retriever.retrieve(query_bundle)
Relevant Logs/Tracbacks
BadRequestError: BadRequestError(400, 'action_request_validation_exception', 'Validation Failed: 1: [rank] requires [window_size: 10] be greater than or equal to [size: 15];')

Hmm, took a quick look. I don't think the dosu bot is right here. The elasticsearch limit could be much higher at 10,000: https://www.alibabacloud.com/help/en/es/use-cases/use-the-knn-search-feature-of-elasticsearch

Hmm, took a quick look. I don't think the dosu bot is right here. The elasticsearch limit could be much higher at 10,000: https://www.alibabacloud.com/help/en/es/use-cases/use-the-knn-search-feature-of-elasticsearch.

@Disiok Thanks for reply but how to fix my actual issue which is, if i put similarity_top_k >10 it throws error. I need to fetch atleast 20 docs for hybrid retrieval. Any help would be appreciated. Thanks.


🚀 [Feature] Update ReadMe and add Contributing file

🚀 [Feature] Update ReadMe and add Contributing file

Can you please assign this task to me?


The option "default" does not exist. Defined options are: "host", "linger", "persistent", "port", "protocol".

My config.
config/packages/gos_web_socket.yaml on Symfony 4
gos_web_socket:
    shared_config: true
    server:
        host: <IP_ADDRESS>   #The host ip to bind to
        port: 8001        #The port the socket server will listen on
        router:
            resources:
                - '%kernel.project_dir%/config/pubsub/routing.yaml'

    client:
        firewall: main
        session_handler: session.handler.pdo
        storage:
            driver<EMAIL_ADDRESS>            ttl: 28800
            prefix:  'client'
            decorator: ~

    pushers:
        zmq:
            default: true
            host: <IP_ADDRESS>
            port: 5555
            persistent: true
            protocol: tcp

Fixed.  That "default" config node might go away in the future, I just did a scan and it's not actually used anywhere.

Hello,
I removed the default part but still have the same error.
pushers:
ZMQ:
host: <IP_ADDRESS>
port: 8001
persist: true
protocol: tcp
What should i put in services.yaml in this case.

What configuration should i do then to use $pusher = $this->container->get('gos_web_socket.zmq.pusher'); in my controller

Did you do a composer update?
Also, make sure you set the pusher as enabled (required with the 2.0 branch, which it seems you're using if you've gotten the error you listed).  This should be the minimum YAML you need to make the ZMQ pusher work (the rest will use defaults if you don't set anything else), but I can't say with any certainty it actually will work (I'm not using the ZMQ pusher myself and haven't yet finished setting up a test environment to add tests for that to the bundle).
gos_web_socket:
    pushers:
        zmq:
            enabled: true
            host: <IP_ADDRESS>
            port: 5555


querydsl-collections orderBy() fails on null elements

com.querydsl.collections.MultiComparator#compare
maybe use instenceof here
    @Override
    public int compare(T o1, T o2) {
        if (o1.getClass().isArray()) {

Closed as duplicate of #2106  (which has already been fixed)


added more trivia questions and a prompts screen

more trivia questions
added prompts screen with writing prompts

Looks great! Good work :D


How to Load Bash Profile in Mac

Describe the topic
I have installed KUI on MacM1 using Brew. When I launch KUI, I notice that nothing from .bashrc, .bash_profile, nor .profile is loaded in the context. Therefore all my helper scripts are unavailable, no variables either. If I try something like source ~/.bash_profile, still nothing???
What I did to kind of get it to work right; from a terminal simply run /Applications/Kui.app/Contents/MacOS/kui. This launches KUI using the terminal context instead. However, I still can't use any of my aliases nor variables from any profile.
Your suggestions for this topic
Run KUI using the normal terminal profile so my setup just works in KUI.

Hello there, thanks for the feedback!
macOS treats launches from the dock or finder (e.g. double clicks) a bit specially: it does not run them through a normal login shell. Kui has some hacks in place that attempt to work around this, however they are limited to environment variables at the moment.
Regardless, it sounds like even those aren't working! If you could open up the dev tools (View -> Toggle Developer Tools), and then in the Console, if you filter by prefetch, you may see messages like:

plugins/bash-like/pty/prefetch prefetchEnv +0ms
plugins/bash-like/pty/prefetch skipping prefetchHome +0ms
plugins/bash-like/pty/prefetch prefetchEnv got shell +15ms /bin/bash
plugins/bash-like/pty/prefetch got env +102ms Object
plugins/bash-like/preload done with state prefetch +135ms

or, if this logic fails, you will see mentions of errors. Do you see any of this?
Thanks!


Fix test tag and output coloring

Verifying hack/../hack/verify-golint.sh
FAILED
Can you please fix?

Done. @wojtek-t PTAL

LGTM


Fix #9 Update Release Notes for 1.2.3

Fix #9
update library version to <IP_ADDRESS>
update release notes to include packages changed in 1.2.3 release and
update search

merged pull request kudos redirected to @theSloopJohnB


Allow Prometheus metric labels

Background and Motivation
It is currently not possible to publish metrics with labels.
It would be useful to provide a mechanism for DiagnosticCounter  to expose labels.
Proposed Feature
Parse out the Name property of ICounterPayload to extract the labels according the Prometheus native notation.
See Prometheus doc.
Usage Examples
A DiagnosticCounter with the name my_counter_name{label1="value1", label2="value2"}.
I have done a quick prototype for my experimentation and the result is nice.

We will likely need to add support labels as part of #329 when we export to Prometheus format.

Any timeline when will the metrics label be implemented?

It is excited to found that the counterpayload PR was merged. It is possible to add the process name and id to the labels and allow to export a list of selected processes' metrics in the next stage. Thanks


Github authentication

I''ve been trying to understand how to do the github auth while using my giftless docker container...
But from what I''m understanding you cant specifically just limit it so giftless only allows people from a specific repository to upload/download the files...
Which theorically means that... if I just create a repo of my own.. being a complete random.. and I know the IP of the giftless server. I configure it to use the giftless server. and done. I''m literally bypassing all authentication, cause I'm the owner of my own repo... and now I can use this server and abuse of it as much as I'd like...
Is there a way to use github... but to limit the authentication, the ability to use the entirety of the giftless private server. only for certain people in a specific github organization????

Hi @SkyDev125 it seems like your observation is correct. I didn't develop the auth provider with this consideration, because our LFS server is behind a VPN, so no stranger can come and do this. I don't think anyone in their right mind would want to store their work there like that, but as a temporary free storage for pretty much anything, well that's a different song! So it's a perfectly valid concern, which should be fixed.
Hooking such a filter to the current implementation should be pretty easy. The provider is already properly configurable and the filter can go right after the place the github user is resolved. At that moment one also has the information about the organization, repo and the user. There's no information what org/group the user is a member of. This would require yet another call to the github API, which I'd like to avoid.
Giving it a second thought, a very cheap and effective filter would be to target an organization and/or its repos. This way you wouldn't need to do any extra api call and could reject outsiders even before initially resolving the token. Would that make sense to you?
One could configure it like this:
restrict_to:
  org1:
  - repo1  # accept org1/repo1
  - repo2  # accept org1/repo2
  org2: []  # accept all repos of that org

I think filtering for users would only bring more burden to the Giftless admin, while that info should be naturally already present in the access roles on the targeted github repo.

No, definitely I agree with you
If we could do that configuration, as you wrote
restricting the access to the gitfless so only people from a specific organization, or a repo in an organization seems to be the right way to do this.
Not only it makes everything more secure. But also viable for people to expose the server and use it as expected.

So long as this doesnt limit me from still making the server readonly for the general folk.
So in case someone from outside the organization tries to clone a repo, they'd still be able to get the contents as expected and work on the project to then submit a pull request... as the normal github colaboration process goes.

Fancy to up your mad python skillz :tm: on a PR? :wink: I'm kinda swamped with my daily job these days.

Well.. I guess I can try... just gotta read up the docs a bit more... and try to understand what really is going on. but sure.

So in case someone from outside the organization tries to clone a repo, they'd still be able to get the contents as expected and work on the project to then submit a pull request... as the normal github colaboration process goes.

Hmm, there are a couple other obstacles here:

currently, the github auth plugin doesn't check whether the repo is public (where naturally the world has read access), so it won't give read access to LFS of a normally readable repo. This seems like something that should be fixed, too. At least for the case the user is not found in the repo collabolators.
Submitting a PR to a world-readable repo containing LFS files can work, but here it gets tricky.

The submitter will likely need their own LFS (unless you share yours beforehand)
You, doing the merge, will need read access to it.
GitHub will surely let you do the merge via the web UI, but then you'll end up with LFS blob references on your repo that  are missing on your LFS server. So the only meaningful way is doing such a merge locally, first pulling all the blobs in play from your and the submitter's LFS server(s), merging it and finally pushing all that to your LFS.
Cleaning one's LFS after a PR branch has been merged/deleted is also a thing to consider, for which git lfs has so far no interface (AFAIK).

For the record, checking if a repo is readable would be done with the Get a repository API call and checking the visibility field for public or internal.
public is simply readable to the world, internal only to members of GitHub Enterprise organization. I assume the latter wouldn't be visible at all for a user outside of the enterprise organization, so a 40x response is a good marker the repo is not readable.

Last year, I was in your position, with the only difference - there was nothing. As the open-source world goes, when there's nothing, you go and create something. I'm not at all affiliated with Datopian, but I wanted that feature and it turned out I can craft it out, I was just lucky to meet another enthusiast dev here (also not Datopian) who helped me wrap up the thing as it stands now. (Sadly, Datopian has some internal problems doing further releases of Giftless I really don't understand. but at least the main branch is in a very decent state.)
Ranting about underdevelopment will get you nowhere, it's only the dedication of folks to drive things forward. All these projects need your help, you know. Most of this work isn't paid at all and when you enter the adult world it's no surprise one switches from their previous passions for some more mundane things... If there's a tool you can almost fit to your needs and can't fit your needs fully around the tool, you gotta back of or improve the tool :stuck_out_tongue: Both the changes you desire are something like 20 lines of extending the code that's already there, you don't need to be afraid :muscle:

It's just... that it is my first pull request...
I know how to usually do projects start to finish and manage to make something that works.. But I've never before tried to modify someone else's code.. at least not at the complexity that this is..
Hence why the somewhat insecurities I have over here... It's just my first time.. I barely even know how to do a pull request on my own >.<
But well, I'll research and try.

No worries one has to start somewhere ;) Here's a little help:

first of all do a private fork of this repo (this will be the place for y our changes - and the source of the PR)
clone it to your machine (not the original repo, as you won't be able to push any changes there)
Learn a bit about the local dev env (this doc is a little outdated, but still good to get oriented)
Learn how to run the whole thing locally
./flask-develop.sh implicitly passes a giftless.yaml to the runtime, so feel free to fill your desired config there.
Learn about git-lfs /batch API, so you can craft a testing curl message to test your changes.

Thank you for the directions, I've already set-up the project and am running the default tests just to make sure everything is alright.
Will start now doing some of the research, I really appreciate the help.

Hey @SkyDev125, I was in need of doing some beefy updates and thought this little change might hitch a ride, too.
As my big PR has not yet been noticed, I won't PR this change (as it would likely clash, as I made it on top of the PR'd changes). Anyways, the change is in my personal fork: https://github.com/vit-zikmund/giftless/commit/b191730b763faa6945444495ba89c879b4449c96, which I will PR once some good soul works through the first one.

@SkyDev125 welcome! And the dream of open source is going to come true for you it seems 😄 as @vit-zikmund amazing work will have you covered. We are working on getting #169 merged ...