Handle kfp types

This PR enables the user to pass different bool, lists and dict to a component. Kubeflow typically handles those arguments by serializing them as a string . For this reason, they need to be de-serialized again within the component in order for them to be properly handled.
This might go away once we move to V2.
References to the issue:
https://github.com/kubeflow/pipelines/issues/7457
https://github.com/kubeflow/pipelines/issues/7719

Do we only need this for the user arguments?
We could solve this cleanly as well by registering custom types in the kubeflow2python_type dict.

Do we only need this for the user arguments?
We could solve this cleanly as well by registering custom types in the kubeflow2python_type dict.

Didn't know about custom types :) I just implemented it and indeed it's neater than the previous approach :) thanks for suggesting


Network policy rules do not apply to ClusterIP

Expected Behavior

Applying a default deny rule for an application should block access to that application from the ClusterIP address.
Current Behavior

In a setup where ClusterIP is routeable on the network, Calico currently allows access to pods via any ClusterIP that selects them, even if there is no rule which allows that traffic.
Your Environment

Kubernetes 1.9

Could you add more details on your setup?  It would be good to know how you've deployed your K8s cluster, how you've deployed Calico, what version of Calico you're using, which backend datastore you're using, and what your policy and pod configuration are (or which demo/tutorial you're following).
A default deny rule will deny all incoming traffic to a Calico networked pod except traffic coming from the host it lives on.

tmjd,
We have Calico (quay.io/calico/cni:v1.11.2) deployed on bare-metal.
You should be able to replicate this easily in any setup of calico on kubernetes.  Add a route from a host to a ClusterIP address of a service which selects a pod that is default denying ingress.   You will be able to reach the pod via this ClusterIP (perhaps clusterIP masquerades the source traffic as coming from the host?).

So that CNI version is with Calico v2.6.4 to v2.6.7. Are you running calico-node in your setup also?  If using the etcd datastore you also need calico-kube-controllers. (Sorry if this is obvious but I want to make sure nothing obvious is missed.)
By ClusterIP, are your referring to the IP of a Kubernetes service?
Are you manually adding a route to a non-K8s host to reach a Cluster(Service)IP?  If you are manually adding a route to a host that is part of the K8s cluster that should not be needed and I think there is a setup issue.
I think you should verify you have the proper configuration as outlined here.
In addition to that you need kube-proxy configured with --cluster-cidr=<Calico IP Pool>?  That is needed for it to setup proper rules for forwarding Service IP traffic to the pods.
Does your service CIDR overlap with the cluster cidr because that will cause problems if they do?

We are using Kubernetes as the backend, and yes we use calico-node.
By ClusterIP, yes, I mean the IP of a kubernetes service.  This is not a setup issue - this is intentional. Tim Hockin (from google) does the same for GCE customers: https://github.com/kubernetes/kubernetes/issues/27161 . There is nothing more inherently internal about a ClusterIP than a PodIP (both capture external traffic by default if that traffic has been routed to the host)
Our Service CIDR setup does not conflict with the  Cluster-cidr, which is correctly configured.
To Summarize:  Calico is working as intended.  The issue is that the intended design does not account for the fact that ClusterIPs are in some on-premise uses cases routable from outside of the cluster, and Calico currently does nothing to secure that traffic.

Ah thank you for describing what you are doing a bit more.
That issue you linked to said that the traffic should be handled the same as a NodePort, have you tried the default deny when using a NodePort?  I'm asking because I have tested with a NodePort before and policy applies as expected when doing that.
Using a vagrant setup (with K8s v1.9.1) based off the one provided in the Calico docs, I just attempted what you suggested and saw traffic blocked as expected.  I added to my host machine a route (sudo ip r add <IP_ADDRESS>/24 via <IP_ADDRESS>) and then was able to access an exposed service (<IP_ADDRESS>), then I added the default deny in the Simple Policy Demo, was not able to access the service, then I added allow policy (using ipBlock) and was again able to access the service.
Maybe you could compare the configuration of the components in the Vagrant setup with your setup and locate some differences that are the cause of what you are seeing.  In particular you should check on your kube-proxy configuration since it is responsible for setting up the iptables rules for services.

perhaps clusterIP masquerades the source traffic as coming from the host?

I suspect this is probably what's happening here - Kubernetes NetworkPolicy mandates that a pod accept traffic from its host (in order to allow for kubelet liveness/readiness checks). The ClusterIP in this case will need to masquerade the traffic, and I don't think is smart enough to detect that the destination pod is local and thus no masq is required - the same behavior as NodePort without externalTrafficPolicy: Local.
However, if this is the scenario we're seeing, I'd expect the traffic that goes source-> clusterIP (nodeA) -> pod (nodeB) to properly get denied. Have you checked that?

I'll run some tests next week and share the results. Thanks!

@thrawn997 any luck with this guy?

Okay... for whatever reason, this is now working perfectly. I am not sure what the issue was, but since I can't reproduce I'll close.
Thanks for the help guys.

I'm also observing this behavior on GKE with Calico. I just deployed two services in different namespaces: foo and bar, along with a deny all policy:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-deny
spec:
  podSelector: {}
  policyTypes:
  - Ingress

from https://kubernetes.io/docs/concepts/services-networking/network-policies/#behavior-of-to-and-from-selectors. But if I kubectl exec -it foo-deployment-667cf67d6-kpm96 --namespace=foo -- /bin/sh and run wget on the ClusterIP of the other service I'm still getting a response:
/ # wget -qO- <IP_ADDRESS>
Hello, world!
Version: 2.0.0
Hostname: bar-deployment-67f7478c7-nqdb5

What's up with that? Am I misunderstanding the spec or is this a huge bug?

Update: wget -qO- bar-service.bar also works just as well.

Resolved: NetworkPolicys are namespaced. I was creating a NetworkPolicy in the default namespace and as a result it wasn't affecting pods in any other namespace. I guess it makes sense in hindsight, but identifying this took a significant amount of time.

perhaps clusterIP masquerades the source traffic as coming from the host?

I suspect this is probably what's happening here - Kubernetes NetworkPolicy mandates that a pod accept traffic from its host (in order to allow for kubelet liveness/readiness checks). The ClusterIP in this case will need to masquerade the traffic, and I don't think is smart enough to detect that the destination pod is local and thus no masq is required - the same behavior as NodePort without externalTrafficPolicy: Local.
However, if this is the scenario we're seeing, I'd expect the traffic that goes source-> clusterIP (nodeA) -> pod (nodeB) to properly get denied. Have you checked that?

I think I hit exactly this situation while applying network policy for our pod by ipBlock whitelist.
The source IP of non-k8s node was changed to k8s-node. Using externalTrafficPolicy: Local helps with 1 replica only.
Any suggestion to overcome this or we have to accept this, guys ? :(

Try setting the kube-proxy cluster CIDR.  That controls which IPs it does SNAT for.

@fasaxc Thanks for your prompt response !
Our CIDR is set to clusterIP range already.
Just to give you more info, our source IP was changed to k8s node IP.
As we're using calico cluster IP advertising feature, the traffic from non-k8s-node to clusterIP will go like this:
non-k8s-node -> k8s-node ( as calico BGP next hop ) -> ( kube-proxy iptables rules ) -> pod.
Thus the src IP when it reaches pod will be k8s-node's IP , which doesn't match the network policy anymore.

@tungdam the (pod) cluster CIDR is not supposed to overlap with the service cluster IP CIDR

I mean the cluster-cidr option in kube-proxy is set correctly ( to an ip range dedicated for service IP purpose )
Is that the cidr that you mentioned ?

I mean the cluster-cidr option in kube-proxy is set correctly ( to an ip range dedicated for service IP purpose )

The cluster-cidr option should be set to a dedicated range for pod IP addresses and should not include the service IP range.
It's confusing for sure...
From the docs

The CIDR range of pods in the cluster. When configured, traffic sent to a Service cluster IP from outside this range will be masqueraded and traffic sent from pods to an external LoadBalancer IP will be directed to the respective cluster IP instead

OMG, I misunderstood it completely.
Thank you. Let me try to change this to see if it helps.

@fasaxc
I corrected my ip ranges settings but still doesn't help.
P/s: Sorry for keep this for too long, changing IP ranges if quite painful.

@fasaxc I corrected my IP range settings but it still doesn't help
P/s: Sorry for keep this for too long, changing IP ranges is quite painful

@tungdam Please can you open a new issue with a full description of exactly the behaviour that you're seeing?  I.e. all the policies you're applying and the cluster/service CIDRs/IP pools you're using.

@fasaxc : Ok, please continue here.
Thanks


Initial Solution Pack Merge

This is the first release of the solution pack for review. This currently has 8 examples but we are building more and will create pull requests as they are completed.

@fortijames Please make sure to set the version to 1.0.0 and commit your solution pack code to the release/1.0.0 branch instead of the develop branch.

Closing this PR for now as we figure out the paths to make incremental changes. Sometimes I might make multiple changes in one PR that would elevate the version beyond 1.0.x. Is having a per version branch required?


[rc6] Keep data attributes during resolving

After running the resolver, only displayed values are left, thanks to this piece of code:
  return rows => rows.map(row => {
    let ret = {};

    resolvedColumns.forEach(column => {
      ret = {
        ...ret,
        ...method(row, column)
      };
    });

    return ret;
  });

... but I need the rest of my data, too. Crucially, I need an id field, which I don't want displayed, but which I need for my onRow click handler.
The best compromise in terms of annoyance/performance may be to allow users to define phantom columns that don't get rendered.
In any case however, the rowKey should be kept around. It'll be id in most cases anyway.

Yeah, good point. Maybe the right thing to do is to overlay the resolved data on top of the other. So extra .... I think I'll change the resolver that way.
Thanks for the report again.

Hm, this isn't really working for me yet. If I want to be able to use both resolver methods as you do in the example, i.e.
    const resolver = resolve.resolve({
      columns: this.state.columns,
      method: (row, column) => resolve.byFunction('cell.resolve')(
        resolve.nested(row, column),
        column
      )
    });

then if no property is found (but only resolve),

resolve.nested should just return the whole thing, not just {}, and
resolve.byFunction will use value = undefined, which isn't exactly what people might expect.

The alternative would be to combine resolver methods differently: I've now switched to
      method: (row, column) => {
        if (column.cell.resolve) {
          return resolve.byFunction('cell.resolve')(row, column);
        } else {
          return resolve.nested(row, column);
        }
      }

... but again this means I have to remember not to try and use value in my formatters, because it'll be undefined.
Suggestion: forget about the split between property and resolve and keep only one. If typeof == 'function', call the function to get the resolved value; if it's a string, use _.get.

Actually, disregard what I just wrote. Of course the columns need property to know which data attribute to read their data from :see_no_evil:
The issue remains, however, that there is no reliable way to resolve first by property (if it exists) and then by resolve, with the result of the nested pass getting passed in as value, without some convoluted back-and-forth:
      method: (row, column) => {
        if (column.cell.resolve) {
          const resolvedByProperty = resolve.nested(row, column);
          if (has(resolvedByProperty, column.cell.property)) {
            const rowData = {
              ...row,
              ...resolvedByProperty
            };
            return resolve.byFunction('cell.resolve')(rowData, column);
          } else {
            console.warn("Could not resolve by property, value will be undefined!");
            return resolve.byFunction('cell.resolve')(row, column);
          }
        } else {
          return resolve.nested(row, column);
        }
      }

This does appear to work, but I'd be thrilled if some of this could be baked into the resolvers themselves.

Another thing: The rest of the data isn't kept around if a table uses only property columns. Just ran into that issue and was able to fix it by adding an identity resolver, but I shouldn't have to :)

@skosch Can you open a separate issue and set up some kind of test case? Sounds like I'm missing a piece of logic to make the behavior nice.

Another thing: The rest of the data isn't kept around if a table uses only property columns. Just ran into that issue and was able to fix it by adding an identity resolver, but I shouldn't have to :)

That sounds like an easy fix. I can probably write a test case just for that.

@skosch Could you write test cases for the problematic bits? That would help a lot. I don't mind writing the implementation to match those.

I'll do my best, if it can wait until tomorrow afternoon – sorry, I'm a bit swamped with other stuff at the moment! And who knows, maybe it turns out I'm just using it wrong ... sorry about the delay anways!

No worries. :+1:

Alright, here we go. I'm not gonna bother making a PR for this because I'm sure things will change anyways, but the following fails for me:
  it('resolves using multiple resolvers and provides correct intermediate rowData', function () {
    const lastName = 'Demo';
    const columns = [
      {
        header: {
          label: 'Resolved value'
        },
        cell: {
          resolve: (value, {rowData}) => rowData.name.last + value,
          property: 'name.last'
        }
      }
    ];
    const rows = [
      {
        name: {
          last: lastName
        }
      }
    ];
    const expected = [
      {
        'name.last': lastName,
        '_name.last': lastName + lastName
      }
    ];
    const resolver = resolve({
      columns,
      method: (row, column) => byFunction('cell.resolve')(
        nested(row, column),
        column
      )
    });

    expect(resolver(rows)).to.deep.equal(expected);
  });

The one thing to take away here is that byFunction doesn't have access to rowData, because nested doesn't return any. Yes, resolver.resolve takes care of this on a higher level, but when we write custom combined resolvers we need to shepherd that data around manually – see my code sample a few posts up, which shows that it can work.
So you could a) document the requirement for explicit data copying, or b) reconsider how the pieces of the resolver puzzle should go together. I hope that helps!

@skosch Thanks. Looks good. 👍


[Feature/Fix] Implement Payment Record and Retrieval API with File Upload and initiate payment

This PR introduces the following key changes:
Payment Recording API: Allows user  to record payments with fields including finance_id, request_id, amount, payment_method, and an uploaded file as proof of payment.
Multer Integration: Implemented file upload handling using multer for managing proof of payment uploads.
Payment Retrieval API: Added functionality to retrieve either a specific payment by ID or all payments using the viewPayment and getAllPayments functions.
Error Handling: Enhanced error handling to capture invalid IDs and provide appropriate messages.
Changes Made:
Added recordPayment function to handle payment creation.
Updated viewPayment function to support both retrieving a payment by ID and fetching all payments.
Integrated file upload functionality with multer.
Added validation to ensure file uploads and valid ObjectId formats.
Improved API documentation with Swagger for the new routes.

fix  error of sending email  in createUserControllers


Feature flaws wk10

Update Label and Date validation

Label and Date only accept inputs of length <= 100 characters
Label and Date have the same validation; input must begin with
an alphanumeric character, followed by at most 99 characters that
are either alphanumeric or spaces.
Tests for label and date have been written to verify that only
inputs of this form are accepted

Codecov Report

Merging #80 (74e47e0) into master (579e04b) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##             master      #80   +/-   ##
=========================================
  Coverage     69.98%   69.98%
- Complexity      561      563    +2
=========================================
  Files            97       97
  Lines          1816     1816
  Branches        211      211
=========================================
  Hits           1271     1271
  Misses          479      479
  Partials         66       66

Impacted Files
Coverage Δ

src/main/java/seedu/address/model/Date.java
70.00% <100.00%> (ø)

src/main/java/seedu/address/model/person/Name.java
80.00% <100.00%> (ø)

src/main/java/seedu/address/model/task/Label.java
80.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Remove 'No URL file' error message and set default versions for plugins.

By specifying versions explicitly, a person can upgrade their plugins by redeploying.

ping


[FEATURE] Allow attaching screenshot and video into Allure report

I usually use Allure report with PyTest+Playwright.
Test code (intented to fail)
from playwright.sync_api import Page

def test_github_search(page: Page):
    page.goto('https://github.com/')
    page.focus('input[name="q"]')
    page.keyboard.type('playwright')
    with page.expect_navigation():
        page.keyboard.press('Enter')
    first_item = page.query_selector_all('.repo-list-item')[0]
    assert 'Playwright' in first_item.text_content()

Motivation
I want to store the video for failed tests.
I don't want to keep sitting at the laptop for observing flaky test failure :)
So I used to attach video into Allure report.
https://zenn.dev/yusukeiwaki/articles/cfda648dc170e5#テスト失敗時のレポートに動画を添付する (Sorry in Japanese)

When we handle a lot of test cases, it is useful to put screenshot and video into Allure report (not in test-report directory), because it is really hard to find the video file from a list of many files for each failure.
Problem
#70 brought very useful feature. Thank you :)
However it doesn't put video and screenshots into Allure report as attachments.
For putting them into Allure report, we still have to write the script like below.
from playwright.sync_api import Page
import pytest
import allure
from slugify import slugify

def pytest_runtest_makereport(item, call) -> None:
    if call.when == "call":
        if call.excinfo is not None and "page" in item.funcargs:
            page: Page = item.funcargs["page"]

            # ref: https://stackoverflow.com/q/29929244
            allure.attach(
                page.screenshot(type='png'),
                name=f"{slugify(item.nodeid)}.png",
                attachment_type=allure.attachment_type.PNG
            )

            video_path = page.video.path()
            page.context.close()  # ensure video saved
            allure.attach(
                open(video_path, 'rb').read(),
                name=f"{slugify(item.nodeid)}.webm",
                attachment_type=allure.attachment_type.WEBM
            )

@pytest.fixture()
def browser_context_args(browser_context_args, tmpdir_factory: pytest.TempdirFactory):
    return {
        **browser_context_args,
        "record_video_dir": tmpdir_factory.mktemp('videos')
    }

Feature Request
Attach screenshot and videos into Allure report when --alluredir is specified (of cource only when --video=on/retain-on-failure or --screenshot=on/retain-on-failure is specified)

@YusukeIwaki curious did you get similar code to work for trace file to attach to allure report?

One thing (and perhaps this question best serviced and asked  https://github.com/microsoft/playwright-python) but was thinking that would be nice in general for screenshot/videos/trace if had option to get file so could and just use allure.attach. would have similar code when using selenium that would something like below
allure.attach(self.driver.get_screenshot_as_png(), name=description, attachment_type=allure.attachment_type.PNG)

Hello, it's a kind follow-up if this feature request will be worked on. Thanks!

@YusukeIwaki I saw your article and I like your approach and it does attach screenshot and videos on test failure, however with my current setup in addition to your makereport function, I seem to have a slight conflicting problem.
the problem is because it is a session scoped fixture, if one test fails - it disables the rest of the tests in the same file because the context is already closed, and if I don't closed the context manually like you did in the fixture, the video does not actually get attached, do you have a workaround maybe for this issue?
import os
import allure
import pytest
from playwright.sync_api import Page
from slugify import slugify
import json
@pytest.fixture(scope='function', autouse=True)
def goto(page, request):
base_url = request.config.getoption("--base-url")
print("Base URL:", base_url)
page.goto(base_url)
@pytest.fixture(scope="session")
def playwright_launch_args():
launch_options = {}
if os.environ.get('CI'):
launch_options['headless'] = True
else:
launch_options['headless'] = False
launch_options['slow_mo'] = 500
return launch_options
@pytest.fixture(scope="session")
def playwright_context_args():
return {
"viewport": {"width": 1400, "height": 900},
}
@pytest.fixture(scope="session")
def browser_type(playwright, request):
specified_browser = request.config.getoption("--custom-browser")
return playwright[specified_browser]
@pytest.fixture(scope="session")
def page_context(browser_type, playwright_launch_args, playwright_context_args):
browser = browser_type.launch(**playwright_launch_args)
context = browser.new_context(**playwright_context_args, record_video_dir="videos/")
yield context
context.close()
browser.close()
@pytest.fixture(scope="function", autouse=True)
def page(page_context):
page: Page = page_context.new_page()
yield page
page.close()
def pytest_runtest_makereport(item, call) -> None:
if call.when == "call":
if call.excinfo is not None and "page" in item.funcargs:
page: Page = item.funcargs["page"]
allure.attach(
page.screenshot(type='png'),
name=f"{slugify(item.nodeid)}.png",
attachment_type=allure.attachment_type.PNG
)
video_path = page.video.path()
page.context.close()  # ensure video saved
allure.attach(
open(video_path, 'rb').read(),
name=f"{slugify(item.nodeid)}.webm",
attachment_type=allure.attachment_type.WEBM
)


Aligned format of purchase-response

Um.. this should be considered before merge because now the result is seperated with "data" and "signature" which will be handled differently from ios.

Well, the formats are already different from each other.

What will be the validation string for iap? It will just be data isn't it? Just to make sure how to make ios and android reliable to each other.

I will merge this since this is needed. But have to notice users that result string is behaving differently to verify the purchase in their backend.
Will have to see how ios will work with this one too.


Update perform_correction.py

I think the command traj.image_molecules() can only work for waterboxes not for vacuum...

Codecov Report

Merging #38 (61c7f5c) into main (7c6b7d0) will not change coverage.
The diff coverage is n/a.


Consumer Errors after replacing a broker

Problem Description
We had to replace one of the brokers for maintenance reasons. We did the following to replace the broker:
(1) Gracefully stop the Kafka broker (id: 48)
(2) Make sure producers/consumers were fine (the consumers coordinated by this broker now were managed by another broker and things were fine)
(3) Spin up a new instance with the same IP
(4) Make sure the new instance's config is the same as old with the same broker ID.
(5) Bring the new one back up.
It took ~35 to 40 mins to do this. But once the broker came back up, the consumer groups coordinated by this broker were getting constant errors that this CG is not coordinated by this broker for nearly 30 to 40 mins until i stopped the broker again.
Note: we use bsm/sarama-cluster but I am opening this here because I do see we refresh the metadata in Sarama lib every 10 mins by default but looks like the metadata kept returning that the coordinator for this CG is the same old broker (id 48).
(1) Are there any known issues/recent fixes for this?
(2) Why didn't the metadata refresh even after the ticker elapsed? Is it a Kafka issue or a sarama issue? Any ideas on what could be happening?
Note 2: This is different from https://github.com/Shopify/sarama/issues/846 in which the IP address changed underneath and caused weirdness but here we didn't have that.
Versions
Please specify real version numbers or git SHAs, not just "Latest" since that changes fairly regularly.
Sarama Version: Version 1.13.0
Kafka Version: 0.10.1
Go Version: 1.9.2
Configuration
producerConfig := sarama.NewConfig()
producerConfig.Producer.Return.Successes = true // Report successfully produced record
producerConfig.ClientID = config.ClientID
producerConfig.Version = sarama.V0_10_1_0
Consumer: sarama-cluster with the default config for the underlying sarama library (for metadata refresh, etc).
Consumer.Return.Errors = true
Consumer.Offsets.Initial = sarama.OffsetOldest
Logs
<these below logs just repeated for ~40 mins until i stopped the bad broker and the coordinator changed>
sarama-logger : client/coordinator requesting coordinator for consumergroup  from
sarama-logger : client/coordinator coordinator for consumergroup  is #48
kafka- Error: kafka server: Request was for a consumer group that is not coordinated by this broker.
Kafka server log on the bad broker (id: 48):
Error for partition [, ] to broker 2:org.apache.kafka.common.errors.NotLeaderForPartitionException: This server is not the leader for that topic-partition. (kafka.server.ReplicaFetcherThread)

The metadata update that occurs in the background (every ten minutes by default) only updates replica and leadership information; it does not update coordinator information. I suppose it could plausibly update the coordinator information as well, but it shouldn't have to in this case; sarama-cluster should be explicitly triggering a refresh when it determines that the coordinator it has is wrong.
The log line client/coordinator requesting coordinator for consumergroup from  is part of that refresh flow, so this indicates that Sarama is asking the cluster for an updated coordinator and it's Kafka returning the incorrect data. I'm not sure if I can provide much more insight here; sarama-cluster might have a better idea what's gone wrong in this case.
It might be simpler to just give the new instance a different broker ID; I imagine kafka will be happier in that case and you won't run into this kind of cache confusion.

Ah.. ok. Good to know the metadata update doesn't update the coordinator info.
It does look like Kafka is returning the stale info. Looks like I am probably running into bullet 2 in the "interesting scenarios" here:
https://cwiki.apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design#Kafka0.9ConsumerRewriteDesign-Co-ordinatorfailoverorconnectionlosstotheco-ordinator
One thing I am not sure is why the controller doesn't update the metadata for this long. Will raise it with Kafka to see if there is something known.
Also will try different ID and see if it does solve it.
Thanks for the quick response.


fix: read args["legacy-env"] correctly

Our helper isLegacyEnv() wasn't reading the cli arg "legacy-env", this fixes that.

yeah I'll let @JacobMGEvans have a look before I merge, thank you!

This function is checking for validation of configuration
const isLegacyEnv =
    (args as { "legacy-env": boolean | undefined })["legacy-env"] ??
    rawConfig.legacy_env ??
    true;
    ```

   This function seems to be checking against only the config which I think I missed when moving args to be generically passed to the validation check for the `normalizeAndValidateConfig` I would question if instead of removing the args from the param/argument of this helper if it shouldn't look like the validator function
   ```ts
   function isLegacyEnv(args: unknown, config: Config): boolean {
  return config.legacy_env;
}

It doesn't check args though, which is confusing. It's just a local helper, let's have it take only what it needs.

It doesn't check args though, which is confusing. It's just a local helper, let's have it take only what it needs.

What I am saying is it should take both and use them, since the local helper is checking which mode it is in.
It is unclear to me why we would check args and config in the validator but not the helper checking what mode it is in locally which args is in scope of.
function isLegacyEnv(args: unknown, config: Config): boolean {
  return  (args as { "legacy-env": boolean | undefined })["legacy-env"] ??
    config.legacy_env ??
    true;
}

Landing this since it's now a smaller fix, and Pete's on leave and I don't want to bother him more haha.

The original idea was to drop the isLegacyEnv() function altogether but we were going to do it in a follow up PR.


add --ignore-failures flag to rolling-update command

Internally at Spotify we have a use case where a deployment group with hundreds of hosts in the group frequently has trouble completing a rolling-update command successfully to deploy a new version of a job because of various issues with individual hosts out of the hundreds (and sometimes thousands) of hosts in the group that prevent a new job from successfully running. Issues we have seen have to do with unhealthy dockerd instances, etc.
This deployment group represents a critical service where the service owners want to ensure that the deploymentGroup's status is never FAILED, as it is necessary for SLA reasons to make sure that new/auto-scaled instances get the job assigned to the deployment group deployed to it.
To that end we have decided to add a --ignore-failures flag to the helios rolling-update command that should cause the rollout of the new image to continue to all hosts in the deployment group even if the deployment/rollout fails on any single host in the group. We picture that very few services will ever want to use this flag besides this particular use case.
This PR is one possible way that we could implement this behavior in the heliosmaster: by completely removing the RolloutTask.Action.AWAIT_RUNNING step from the list of rollout tasks when the rollout plan is generated (see RollingUpdatePlanner).
This would mean in practice that a helios rolling-update --ignore-failures quickly rolls through every host in the group, undeploying the previous job and deploying the new job, without waiting for any host to even start the image pull / container creation / etc process.
There are probably other ways we could implement this beyond removing RolloutTask.Action.AWAIT_RUNNING from the list of rollout tasks; I'd be happy to discuss and review various other options.

@spotify/helios-team

One possible issue I see with this approach now that I have written up a description of how it would work is that I am not sure if any problems/failures to undeploy the old job would still fail the group if --ignore-failures is present. This change skips over the AWAIT_RUNNING part of the plan, but doesn't skip over the parts of the rollout logic that set DeploymentGroupStatus.state to FAILED.

Codecov Report

Merging #1103 into master will decrease coverage by 0.09%.
The diff coverage is 64.7%.

@@             Coverage Diff             @@
##             master    #1103     +/-   ##
===========================================
- Coverage     52.01%   51.91%   -0.1%
- Complexity     1569     1570      +1
===========================================
  Files           266      266
  Lines         12759    12775     +16
  Branches       1469     1473      +4
===========================================
- Hits           6636     6632      -4
- Misses         5619     5635     +16
- Partials        504      508      +4

Continue to review full report at Codecov.

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

perhaps a more complete approach would leave most of the current logic in place (list of tasks would still include AWAIT_RUNNING) but RollingUpdateOpFactory.error() would actually call nextTask() instead of failing/aborting/setting the group's status to FAILED.

on second thought the above comment probably wouldn't work as there are places where nextTask(List<ZookeeperOperations) is called (by ZookeeperMasterModel) which relies on the caller knowing what ZK operations should be done as a part of the next task in the plan - the OpFactory isn't fully in charge of what happens "next".

With the approach in this PR, the rolling-update would fail under the following:

when processing RolloutTask.Action.DEPLOY, if

the job no longer exists
token is invalid
host is not found
a JobPortAllocationConflictException occurs (i.e. try to allocate a static port already assigned to a different job on the same host)

as far as I can tell all other places where opFactory.error(..) is called are from code paths where the master is processing a RolloutTask.Action.AWAIT_RUNNING

@gimaker would you have any preference between this approach and the AWAIT_TERMINAL one you mention? I think the latter might involve more complexity inside helios-master, but might be better from the user perspective.

would you have any preference between this approach and the AWAIT_TERMINAL one you mention? I think the latter might involve more complexity inside helios-master, but might be better from the user perspective.

@mattnworb Either approach is fine with me. I have a weak preference for the "AWAIT_TERMINAL" approach (a shitty name that'd need changing, since it doesn't accurately capture what it'd do) because with that approach the --par flag still kind of makes sense (== it'd wait for the image to pull (or fail to pull) before continuing to the next host).

just thinking out loud, but what should a theoretical AWAIT_TERMINAL action do if (for example) the image failed to pull before the timeout elapsed? Seems like we would not want to fail the rollout then, as a host with a broker docker instance will probably never get out of TaskStatus.State.PULLING_IMAGE.

@mattnworb Fair point. Having to deal with that edge case does add extra complexity. Perhaps it's best to keep it simple and stick with the current approach - at least we understand the implications of it (?).

btw if we were to go with this approach instead of #1105 I would like to rename the flag to be helios rolling-update --do-not-await-running to be more accurate

btw if we were to go with this approach instead of #1105 I would like to rename the flag to be helios rolling-update --do-not-await-running to be more accurate

:+1:

closing in favor of #1105

did you mean to actually close this PR?


GH-1333 created Error Handling section

Resolves #1333

Codecov Report

Merging #1334 into master will decrease coverage by 0.07%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #1334      +/-   ##
============================================
- Coverage     61.86%   61.78%   -0.08%
+ Complexity      828      825       -3
============================================
  Files           136      136
  Lines          3936     3936
  Branches        551      551
============================================
- Hits           2435     2432       -3
- Misses         1225     1227       +2
- Partials        276      277       +1

Impacted Files
Coverage Δ
Complexity Δ

...gframework/cloud/stream/binder/DefaultBinding.java
26.66% <0%> (-6.67%)
4% <0%> (-3%)

Continue to review full report at Codecov.

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


Unable to build project

I am unable to do a gradle build on the latest code.  The app's build.gradle fails.  See screenshot:

Can not reproduce with the given information, Android Studio 2.0 Beta 5 and beta5 plugin.
Older versions work flawlessly as well. Please provide more information on the issue.

Deleted my fork.  Re-forked and clone.  Imported into Android Studio again, and still getting this error!  Regardless, your project - out of the box - is using classpath 'com.android.tools.build:gradle:2.0.0-alpha9'.  How can you posit that it works?

Because it builds for me as well as others that are using the project.
This is the first itme I'm hearing of that particular issue.
Does ./gradlew clean assembleDebug work for you?
Also, have you run android update sdk recently? If not, please do.

Also, your build.gradle was pointing at:
    gradleVersion = "2.8".  I believe this is wrong.
I fixed the issue by deleting and re-adding the dependencies closure in build.gradle file.  Now the project builds.


Add missing deployment_target in podspec for tvOS

Just adding support for tvOS in the podspec file

Thank you!

@naoty what do you think? would make sense to to release a new version to cocoapods now that tvOS is fully supported?
Thanks a lot for your project, it is really useful.


Wait for input at end

As a user, I want to pause at the end of the execution, so that I can call the module from a desktop "create shortcut" command
Dev notes:
add input('Press ENTER to finish...')

Fernet throws an error when calling the log keeper from a .bat file, hence the need for this addition


install galaxy ansible.posix, not from sources

What this PR does / why we need it:
Workaround an issue in a github action
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #17
Special notes for your reviewer:
Release note:

NONE

/lgtm


Memory usage with small XML documents

We've been using TinyXML for a long time and are looking at upgrading to TinyXML2. I've done some testing with implementing it and the performance is always significantly better as advertised. However, as far as memory usage goes it looks like due to the size of the memory allocation chunks small documents end up using significantly more memory than the previous version.
Our application usually ends up parsing several small documents more often than larger documents. So as a test I parsed the same 257 byte XML document 40k times (roughly 10MB total) and tinyxml2 ended up using 512MB while the original used about 57MB.
I'm wondering if it would be useful if we could specify the chunk size used by MemPoolT when creating the document. Since you generally know the document size ahead of time you could specify a chunk size that works best for your particular document size (or use case). And of course there could be a default chunk size as there is now of 4KB.

Closing. Good suggestion, but (clearly :)) not the top priorities.


Memory leak in knex v0.13.0

Hi,
When importing, then destroying, then reset modules a lot of times with jest, I have some warning about memory leak MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 SIGABRT listeners added. Use emitter.setMaxListeners() to increase limit
I think that destroy() leave listener that should be removed.
Here is the (useless) code to reproduce the issue :
//@flow

import k from 'knex';
import path from 'path';

const config = {
  client: 'sqlite3',
  connection: {
    filename: path.join(__dirname, './database.sqlite'),
  },
  pool: {
    min: 1,
    max: 1,
  },
  migrations: {
    tableName: 'knex_migrations',
  },
  useNullAsDefault: true,
  timezone: 'UTC',
};

let knex;

describe('pppppppppp', () => {
  beforeEach(async () => {
    jest.resetModules();
    knex = k(config);
  });

  afterEach(async () => {
    await knex.destroy();
  });

  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
  test('test', () => {});
});

the output :

Is it a bad use or a bug ?
Thanks in advance.

it seems to be the same issue as #2106

Thanks for report, would be great to add this kind of test (and fixes ofc) to test suite.

Can be reproduced as long as jest.resetModules() is called. I tested this example against branch of #2128 and there the warning no longer exists. So presumably that PR fixes the memory leak by upgrading generic-pool version.

I've experienced this when using jest specifically myself. I'm wondering if this simply isn't a knex issue, but rather a jest issue. I do not experience equivalent issues in a project using mocha (completely different projects, the setup is quite similar, supertest/koa2/objection.

@kiralex if you explicitly call jest.clearAllTimers() in afterEach, does it fix it for you?

I will try. ☺ I will give you my feedback after.
Le 27 juil. 2017 23:50, "Martin Iwanowski"<EMAIL_ADDRESS>a
écrit :

@kiralex https://github.com/kiralex if you explicitly call
jest.clearAllTimers() in afterEach, does it fix it for you?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tgriesser/knex/issues/2165#issuecomment-318496440,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AC51o8tAsuaF1Qg7RwKy0EWdMSfAZqqtks5sSQYUgaJpZM4OePlm
.

@fl0w nop, it does not fix the issue

@kiralex  Does it leak when running initialization and destroy sequence without jest?

From my previous tests this should be fixed by #2208, so closing this for now. If it's still an issue in upcoming 0.14, feel free to reopen.


Add retry logic to fetch

What kind of changes does this PR include?

Something else!

Description
Adds retry logic to our githubGet helper to try and mitigate the regular CI failures we get for “Invalid response body” when generating integration pages. Here’s a recent example: https://github.com/withastro/docs/runs/7837529942?check_suite_focus=true#step:4:18

Thanks @hippotastic — yeah, this was quick and dirty, sorry! I’ll take a look at that suggestion. I’m also wondering if there’s a nice way to generalise this. We sometimes use fetch directly, other times githubGet.

Ha I retract my approval! @hippotastic's suggestion is much better!

I used p-retry now as discussed and tested it locally by simulating a connection error. It's retrying in exponentially increasing intervals for up to 5 times now. PTAL @delucis :)

(Please disregard my self-approval. I tried to declare my old review with requested changes as outdated and this was the result. 😆)


Homematic thermostats can't be adjusted with Google Assistant

Home Assistant release with the issue:
0.80.3
Last working Home Assistant release (if known):
N/A
Operating environment (Hass.io/Docker/Windows/etc.):
Debian 9
Component/platform:
https://www.home-assistant.io/components/climate.homematic/
Description of problem:
As with several thermostats, the code needs some work (see #17333) to make them work with Google Assistant. Homematic thermostats have no OFF state, so I would suggest mapping turn_on to AUTO and turn_off to MANUAL but there may be a better way (e.g. OFF sets temperature to 4.5, ON sets thermostat to AUTO - possibly mimics real state more accurately). Paging @danielperna84 for suggestions.
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
homematic:
  local_ip: <IP_ADDRESS>
  local_port: 8943
  interfaces:
   wireless:
    host: <IP_ADDRESS>
    port: 2001
    username: XXXX
    password: XXXXX
    resolvenames: metadata

...

google_assistant:
        project_id: XXXXXX
        api_key: XXXXXX

Traceback (if applicable):
N/A

Additional information:
Current thermostats and radiator valves do report the setpoint and actual temperature correctly. AFAICT they need to be supporting climate.turn_on and turn_off for Google Assistant integration to work correctly.

I agree, that OFF would be like setting to MANUAL and 4.5°. ON would be AUTO, but only for people that use that mode. For others it could be MANUAL + some target temperature. After all some people probably always use manual mode and let HASS set the temperatures. So it's not really clear what ON should be.
@pvizeli what's your opinion on that?

Yes, climate.set_temperature  is the only thing I am planning to use; I'm on MANUAL only mode and never use AUTO.
But actually looking into this I got more confused. We already have STATE_AUTO support and we have def operation_list. Google assistant code does:
    def sync_attributes(self):
        """Return temperature point and modes attributes for a sync request."""
        modes = []
        for mode in self.state.attributes.get(climate.ATTR_OPERATION_LIST, []):
            google_mode = self.hass_to_google.get(mode)

So this is in fact already mapped: STATE_AUTO to heatcool. Just confirmed it by asking Google Assistant what the status of my thermostat is.
So as a quick hack I removed STATE_AUTO mapping and mapped STATE_MANUAL to heat:
    hass_to_google = {
        climate.STATE_HEAT: 'heat',
        climate.STATE_MANUAL: 'heat',
        climate.STATE_COOL: 'cool',
        climate.STATE_OFF: 'off',
    }

And voila, I can set temperatures just fine when they're set to MANUAL.
So, using AUTO causes a different problem, which is that google seems to assume you have a device that takes a temperature range and you then can't set a single temperature. I'm not sure if we can handle this case at all?


CuDNN install problems..

I did this:
tar -xzvf cudnn-6.5-linux-x64-v2.tgz
cd cudnn-6.5-linux-x64-v2
sudo cp lib* /usr/local/cuda/lib64/
sudo cp cudnn.h /usr/local/cuda/include/

But I get this when testing waifu2x:
guy@Guy-Ubuntu-PC:~/Waifu$ th waifu2x.lua/usr/local/share/lua/5.1/cudnn/ffi.lua:376: libcudnn.so: cannot open shared object file: No such file or directory
/usr/local/bin/luajit: /usr/local/share/lua/5.1/trepl/init.lua:363: /usr/local/share/lua/5.1/cudnn/ffi.lua:379: 'libcudnn.so not found in library path.
Please install CuDNN from https://developer.nvidia.com/cuDNN
Then make sure all the files named as libcudnn.so* are placed in your library load path (for example /usr/local/lib , or manually add a path to LD_LIBRARY_PATH)

stack traceback:
	[C]: in function 'error'
	/usr/local/share/lua/5.1/trepl/init.lua:363: in function 'require'
	waifu2x.lua:1: in main chunk
	[C]: in function 'dofile'
	/usr/local/lib/luarocks/rocks/trepl/scm-1/bin/th:131: in main chunk
	[C]: at 0x00406260

So, I assume CuDNN is not properly, installed.. I searched everywhere on how to install it, but I got nothing more than what I did..
Can you please tell me how to properly install it?
*This is on Ubuntu 14.04 64Bit

try
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64

That did it.. Thank you. :)


TypeError: Cannot assign to read only property 'paths' of object

Hey folks, by any chance do you know how to fix this? I would like to setup an alias, but the issue is that my tsconfig.json can't set the aliases, so I am wondering if there is a workaround for the issue
❯ yarn test
yarn run v1.22.10
$ craco test
/myapp/node_modules/react-scripts/scripts/test.js:20
  throw err;
  ^

TypeError: Cannot assign to read only property 'paths' of object '#<Object>'
    at verifyTypeScriptSetup (/myapp/node_modules/react-scripts/scripts/utils/verifyTypeScriptSetup.js:239:43)

The following changes are being made to your tsconfig.json file:
  - compilerOptions.paths must not be set (aliased imports are not supported)

Setup
{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]  // this is the problem
    }
  }
}

const path = require('path');

module.exports = {
  style: {
    postcss: {
      plugins: [require('tailwindcss'), require('autoprefixer')],
    },
  },
  webpack: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
  },
  jest: {
    configure: (jestConfig) => {
      jestConfig.moduleNameMapper['^@/(.*)$'] = '<rootDir>/src/$1';
      return jestConfig;
    },
  },
};

I have the same problem. Have you solved it， I tried to solve it this way，But it doesn't work

@yaojin2070 I haven't solved the issue sadly, please if you find any workaround share it here 🙏🏻

@yaojin2070 I haven't solved the issue sadly, please if you find any workaround share it here 🙏🏻

I think your path configuration is set in tsconfig.json, and then the path configuration will disappear when you start the project, right?

You need to put your path configuration in a separate file, and then extends this file in config.json, just like I did in the image above. I couldn't solve this before because I didn't put a * after the path

Pump


Feature/tfd 582 dependencies endpoint

Please check if the PR fulfills these requirements

[x] The commit message follows Talend standard
[x] Tests for the changes have been added (for bug fixes / features)

What is the current behavior? (You can also link to an open issue here)
What is the new behavior?
Add an endpoint in order to retrieve the (maven) dependencies of any Definition (Components, Datastore or Dataset)
Does this PR introduce a breaking change?

[ ] Yes
[x] No

If this PR contains a breaking change, please describe the impact and migration path for existing applications: ...
Other information:

I have some suggested modifications for this PR, I'll commit on the branch if you don't mind.


valgrind: fix build error for aarch64+Musl

Musl does not have __THROW macro from glibc,
so define it to empty if undefined.
Signed-off-by: Ivan Nikolaenko<EMAIL_ADDRESS>Description of changes

Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

@alyssais @vilvo

Oh, and now that we're targeting staging it looks like there's a merge conflict that will need to be resolved. :(

@OfBorg build pkgsMusl.valgrind

The derivation that failed on OfBorg worked for me on the aarch64 community builder, so let's retry:
@OfBorg build pkgsMusl.valgrind


sql_last_value got converted ino local timezone, making fresh db records lookup unfeasible

input {
  jdbc {
    jdbc_driver_library => "/local/path/mysql-connector-java-8.0.11.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/testdb"
    jdbc_user => ""
    jdbc_password => ""
    schedule => "* * * * *"
    statement => "SELECT * FROM table WERE updatedAt > :sql_last_value ORDER BY updatedAt"
    clean_run => true
    use_column_value => true
    lowercase_column_names => false
    tracking_column => "updatedAt"
    tracking_column_type => "timestamp"
  }
}

sql_last_value here is being converted into local timezone. So the next time it queries db, the timestamp being used is wrong.
If the actual last fetched from db value of updatedAt in my example is 2018-07-20T00:00:00.000Z, the next query will get 2018-07-20T02:00:00.000Z in :sql_last_value instead, shifted according to my local timezone +02:00. So the whole procedure of fetching freshly updated db records will fail.
logstash 6.3.1
Ubuntu 16.04.4 LTS

It looks like you could be using the jdbc_default_timezone directive to inform the plugin of the external time zone.

This directive

Got workaround with:

remove jdbc_default_timezone setting, using machine timezone.
convert timestamp field to string(using DATE_FORMAT function) in statement sql.
use date filter to match date string above and convert to utc time from my local timezone( set date filter's timezone config to Asia/Shanghai')
remove use_column_value/ set to false.

Got what I expected:

sync tables' last checkpoint was correct.
time-related field updated to elasticsearch got correct value in UTC timezone(it seems all time in es was stored as UTC timezone)

config file looks like this:
input {
  jdbc {
    ...
    statement => "SELECT *, DATE_FORMAT(created, '%Y-%m-%d %T') as created_at, DATE_FORMAT(updated, '%Y-%m-%d %T') as updated_at FROM table_name WHERE updated >= :sql_last_value"
    use_column_value => false
    ...
  }
}
filter {
  ...
  date {
    match => [ "created_at" , "YYYY-MM-dd HH:mm:ss" ]
    timezone => "Asia/Shanghai"
    target => "created"
    remove_field => [ "created_at" ]
  }
  date {
    match => [ "updated_at" , "YYYY-MM-dd HH:mm:ss" ]
    timezone => "Asia/Shanghai"
    target => "updated"
    remove_field => [ "updated_at" ]
  }
}
output {
  ...
}


Fix Network Throttle TypeError with HTTPS (fix #43)

The getKeyAndCert method does not exist, so calling it causes a TypeError (see #43). This PR fixes that by calling getHttpsOptions instead, which results in the correct key and cert to be returned.

I don't know why the CI failed, but please verify that the file in question does, in fact, not contain the method.

Released at<EMAIL_ADDRESS>

Thanks!
You have been invited to the Browsersync org (which means you'll full write access to all repos)
Please continue to submit PRs for code changes & be sure to review the guidelines. https://github.com/BrowserSync/browser-sync/blob/master/CONTRIBUTING.md#-submitting-a-pull-request
Any questions, just ask :)

Nice, thanks! Glad I could help :)


[style]: Make dark mode toggle more accessible

What's the style idea?
Issue: The current dark mode toggle on the website is an emoji. This can be difficult to use for some users, such as those with visual impairments.
Solution: We propose to change the dark mode toggle to an actual switch. This will make it easier for all users to toggle dark mode.
Benefits: Changing the dark mode toggle to an actual switch will make the website more accessible to all users. This will help to improve the user experience and make the website more inclusive.
I hope this helps!
"I'm in GSSOC'23"
Add screenshots
Add screenshots

Code of Conduct

[X] I agree to follow this project's Code of Conduct

it seems like this issue has already been raised before https://github.com/priyankarpal/ProjectsHut/issues/376. We kindly request you review the existing issues and, if necessary, create a new one accordingly.


Question: is glaredb a hard fork of datafusion ?

just a question as I did not know where to ask, is glaredb a hard fork or do you guys keep compatibility with datafusion source code ?

No, glaredb is not a fork of datafusion, we use it as library. Datafusion provides a lot of great buildings blocks for building a complete database system, and every release includes a lot of improvements. We're currently on datafusion 30 (https://github.com/GlareDB/glaredb/blob/main/Cargo.toml#L14) and try to keep as up to date as possible.
There's some changes that we've made to some parts of datafusion to support things like table functions and hybrid exec. Much of our modifications to datafusion code lives in datafusion-ext and in sqlexec.
We're planning to continue to use as much of upstream datafusion as possible, while making changes where necessary to support features specific to glaredb.

thanks, that make perfect sense


More lazyness in standard

Make lazy some attributes of often used classes. So that the attribute creation cost only when they are really used.
More impact that initially imagined:
for nitc/nitc/nitc
before: 7.188
after: 7.008 (-2.5%)

+1

+1


Multi-app fix

Pass auth instance in request configure and use it to:

retrieve the associated tenant ID for requests https://github.com/firebase/firebase-ios-sdk/issues/10748
store the associated auth instance in MFA resolver https://github.com/firebase/firebase-ios-sdk/issues/10690

Looks good. Thanks!
Is it feasible to add a regression test for the MultiFactor issue?
Would you update the Changelog?

Good suggestions. Done.


Affix navigation

With this PR the navigation anchor related to the current section will be activate. Unfortunately is working only with h1, soon to be fixed, not a bug, it's more a problem with the logic used.
Preview: http://bernardodiasc.github.io/inline-docs/

Looks good! Before I merge, could you please remove the filenames from the nav (http://screencast.com/t/3ctwCQh59HU)
Longer-term I'm anticipating that a section might come from multiple files.
Thanks

About this PR, I'm thinking in try another logic, maybe store all headers positions and content height only once and while scrolling update both active menu and persistent header. Was checking the filter method, but have performance concerns (see also http://jsperf.com/filter-method-cost). Any thought about this, in general?

Yes, I think it makes sense to combine those 2.  Perhaps store all positions once up front, and then emit an event when we scroll to a different section? The affix nav and the side nav can both listen for that same event.  Sound good?
I think .filter will perform fine for this case.

Cool. I'll send in a new PR.

Longer-term I'm anticipating that a section might come from multiple files.

This is interesting by the way, i can see why.


Add sepolia chain to QRNG

QRNG no longer responds to ropsten, rinkeby, kovan requests so we should remove these. We can't add sepolia here until we have AQN redeploy their Airnode and that is blocked by ChainAPI supporting publicly accessible deployments (it deploys with authorizers by default).

Update the table in chains.md to include sepolia.
See PR #1075

Completed as part of 1137 and 1136


Arm version for bettercord

Please make bettercord available for arm version Linux

Why it got closed?

betterdiscordctl works fine on AArch32 or AArch64, as long as you can supply the dependencies. betterdiscordctl has no architecture-specific code. If you have problems using betterdiscordctl with an ARM build of Discord's Linux app, please do report those. I don't think BetterDiscord itself does anything architecture-specific.


Push Services - Docker Hub instead of ACR

Great Lab!
I'm getting an issue on the Push Services Task:
##[section]Starting: Push services
==============================================================================
Task         : Docker Compose
Description  : Build, push or run multi-container Docker applications. Task can be used with Docker or Azure Container registry.
Version      : 0.4.26
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?linkid=848006)
==============================================================================
[command]/usr/bin/docker push mhcpoccr/myhealth.web
The push refers to repository [docker.io/mhcpoccr/myhealth.web]
581c38738922: Preparing
921502301d44: Preparing
c2098182c4e3: Preparing
710c451c25c8: Preparing
fa998e2f5e4b: Preparing
f64f9ef42fcb: Preparing
919f29a58bd0: Preparing
919f29a58bd0: Waiting
f64f9ef42fcb: Waiting
denied: requested access to the resource is denied
##[error]denied: requested access to the resource is denied
##[error]/usr/bin/docker failed with return code: 1
##[section]Finishing: Push services

Seems to be attempting a push to Docker Hub instead of my Azure container registry, any thoughts appreciated!

Hi gettek,
Could you please check the Push Services task in the build pipeline has correct details for Azure subscription and ACR is selected for Container Registry type.

Thank you @sriramdasbalaji it appears my ACR needed admin user enabled

Thank you @sriramdasbalaji it appears my ACR needed admin user enabled

what you mean with "my ACR needed admin user enabled"?


TEST ON Phison  PS2251-61

Dear all,
Find here my feedback on a Phison  PS2251-61.
After a fews test, i think it's don't work with device!
When i send the hacked FW, the system return :
Fatal :   SystemInvalidExeception : header not accepted

This software does not, nor will it ever, work on PS2251-61, only PS2251-03.


Revising report / output format

Revising the logic behind report format

Codecov Report

Merging #4 into master will decrease coverage by -<1%.
The diff coverage is 99%.

@@          Coverage Diff           @@
##           master     #4    +/-   ##
======================================
- Coverage     100%   100%   -<1%
======================================
  Files           4      4
  Lines         537    579    +42
  Branches       79     93    +14
======================================
+ Hits          537    578    +41
- Misses          0      1     +1

Impacted Files
Coverage Δ

src/runner.js
100% <100%> (ø)
:white_check_mark:

src/kasmir.js
100% <99%> (ø)
:x:

Continue to review full report at Codecov.

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


Data serialization inconsistencies in MemoryDataView

There are a few inconsistencies when seralizing an object with a registered DataSerializer/DataTranslator
Test 1 serializes as expected
data.set(DataQuery.of("Test1"), new Vector3i(1, 2, 3));

With SpongeForge 1762 (4.2.0)
MemoryDataContainer {
    map = {
        Test1 = MemoryDataView {
            path = Test1, map = {
                x = 1,
                y = 2,
                z = 3
            }
        }
    }
}

With SpongeForge 1798 (5.0.0)
MemoryDataContainer {
    safety = ALL_DATA_CLONED, map = {
        Test1 = MemoryDataView {
            path = Test1, safety = ALL_DATA_CLONED, map = {
                x = 1,
                y = 2,
                z = 3
            }
        }
    }
}

Test 2 serializes as expected
Map<Object, Object> map = Maps.newHashMap();
map.put("Test2_Map", new Vector3i(2, 3, 4));
data.set(DataQuery.of("Test2"), map);

With SpongeForge 1762 (4.2.0)
MemoryDataContainer {
    map = {
        Test2 = MemoryDataView {
            path = Test2, map = {
                Test2_Map = MemoryDataView {
                    path = Test2.Test2_Map, map = {
                        x = 2,
                        y = 3,
                        z = 4
                    }
                }
            }
        }
    }
}

With SpongeForge 1798 (5.0.0)
MemoryDataContainer {
    safety = ALL_DATA_CLONED, map = {
        Test2 = MemoryDataView {
            path = Test2, safety = ALL_DATA_CLONED, map = {
                Test2_Map = MemoryDataView {
                    path = Test2.Test2_Map, safety = ALL_DATA_CLONED, map = {
                        x = 2,
                        y = 3,
                        z = 4
                    }
                }
            }
        }
    }
}

Test 3 - Fails on 1.8.9
Map<Object, Object> map = Maps.newHashMap();
map.put("Test3_Map", Lists.newArrayList(new Vector3i(3, 4, 5)));
data.set(DataQuery.of("Test3"), map);

With SpongeForge 1762 (4.2.0)
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.flowpowered.math.vector.Vector3i
        at org.spongepowered.common.data.persistence.DataSerializers$8.serialize(DataSerializers.java:271) ~[DataSerializers$8.class:1.8.9-1890-4.2.0-BETA-1762]
        at org.spongepowered.api.data.MemoryDataView.setCollection(MemoryDataView.java:347) ~[MemoryDataView.class:1.8.9-1890-4.2.0-BETA-1762]
        at org.spongepowered.api.data.MemoryDataView.set(MemoryDataView.java:283) ~[MemoryDataView.class:1.8.9-1890-4.2.0-BETA-1762]
        at org.spongepowered.api.data.MemoryDataView.setMap(MemoryDataView.java:398) ~[MemoryDataView.class:1.8.9-1890-4.2.0-BETA-1762]
        at org.spongepowered.api.data.MemoryDataView.set(MemoryDataView.java:285) ~[MemoryDataView.class:1.8.9-1890-4.2.0-BETA-1762]
        at org.spongepowered.api.data.MemoryDataContainer.set(MemoryDataContainer.java:53) ~[MemoryDataContainer.class:1.8.9-1890-4.2.0-BETA-1762]
        at com.simon816.test.ErrorTest.test(ErrorTest.java:53) ~[ErrorTest.class:?]

With SpongeForge 1798 (5.0.0)
MemoryDataContainer {
    safety = ALL_DATA_CLONED, map = {
        Test3 = MemoryDataView {
            path = Test3, safety = ALL_DATA_CLONED, map = {
                Test3_Map = [MemoryDataContainer {
                    safety = ALL_DATA_CLONED, map = {
                        x = 3,
                        y = 4,
                        z = 5
                    }
                }]
            }
        }
    }
}

Test 4 does NOT serialize the vector. Causes errors when translating to other forms (e.g NBT)
Map<Object, Object> map = Maps.newHashMap();
map.put("Test4_Map", Lists.newArrayList(new Vector3i(4, 5, 6)));
data.set(DataQuery.of("Test4"), Lists.<Map<?, ?>>newArrayList(map));

With SpongeForge 1762 (4.2.0)
MemoryDataContainer {
    map = {
        Test4 = [{
            Test4_Map = [(4, 5, 6)]
        }]
    }
}

With SpongeForge 1798 (5.0.0)
MemoryDataContainer {
    safety = ALL_DATA_CLONED, map = {
        Test4 = [{
            Test4_Map = [(4, 5, 6)]
        }]
    }
}

Test 5 - Fails on 1.8.9
data.set(DataQuery.of("Test5"), Lists.newArrayList(new Vector3i(5, 6, 7)));

With SpongeForge 1762 (4.2.0)
java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.flowpowered.math.vector.Vector3i
        at org.spongepowered.common.data.persistence.DataSerializers$8.serialize(DataSerializers.java:271) ~[DataSerializers$8.class:1.8.9-1890-4.2.0-BETA-1762]
        at org.spongepowered.api.data.MemoryDataView.setCollection(MemoryDataView.java:347) ~[MemoryDataView.class:1.8.9-1890-4.2.0-BETA-1762]
        at org.spongepowered.api.data.MemoryDataView.set(MemoryDataView.java:283) ~[MemoryDataView.class:1.8.9-1890-4.2.0-BETA-1762]
        at org.spongepowered.api.data.MemoryDataContainer.set(MemoryDataContainer.java:53) ~[MemoryDataContainer.class:1.8.9-1890-4.2.0-BETA-1762]
        at com.simon816.test.ErrorTest.test(ErrorTest.java:59) ~[ErrorTest.class:?]

With SpongeForge 1798 (5.0.0)
MemoryDataContainer {
    safety = ALL_DATA_CLONED, map = {
        Test5 = [MemoryDataContainer {
            safety = ALL_DATA_CLONED, map = {
                x = 5,
                y = 6,
                z = 7
            }
        }]
    }
}

Aside from the class cast exception that @Deamon5550 fixed in https://github.com/SpongePowered/SpongeAPI/commit/52ae682fa2605b47b017aebba6411ec421cfc7ea, there's no real difference between the two mappings.

Test 4 is broken on both versions.
Also, if I try to set a data on a DataView with an empty DataQuery, it throws an IOOBE. What's the use of an empty query?
java.lang.IndexOutOfBoundsException: index (0) must be less than size (0)
	at com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:313) ~[guava-17.0.jar:?]
	at com.google.common.base.Preconditions.checkElementIndex(Preconditions.java:295) ~[guava-17.0.jar:?]
	at com.google.common.collect.RegularImmutableList.get(RegularImmutableList.java:65) ~[guava-17.0.jar:?]
	at org.spongepowered.api.data.MemoryDataView.set(MemoryDataView.java:283) ~[MemoryDataView.class:?]
	at org.spongepowered.api.data.MemoryDataContainer.set(MemoryDataContainer.java:53) ~[MemoryDataContainer.class:?]
	at org.spongepowered.api.data.MemoryDataContainer.set(MemoryDataContainer.java:1) ~[MemoryDataContainer.class:?]

@simon816 you can't set anything on an empty DataQuery since that is the "self" object.

@simon816 I don't see how this isn't working....

So test 4 is a list with a map with an entry value of a list with a vector
(i.e. List [ Map { String->List[ Vector ] } ])
I've traced through the steps:
set(DataQuery, Ojbject) Entry point
setCollection(String, Collection) Unwraps the list
ensureSerialization(Map) Unwraps the map
ensureSerialization(Collection) Unwraps the inner list
Then the object is just appended to the ImmutableList if it's not a Collection or DataSerializable
objectBuilder.add(element)
The problem appears to be that ensureSerialization doesn't go through the same rigorous instanceof matching that set(DataQuery, Object) does. thus leading to arbitrary objects being appended when it's inside a collection.
The fix would be to have one central method that converts an object to either a datacontainer or a base type.

MemoryDataView was moved to the implementation.
It still needs to be tested to confirm it's still relevant but in the meantime I'm moving this to SC


identify trigger as an account?

I guess trigger will be able to be identified as an account.

I don't think it has been broken down into issues yet.
If we want to support use cases where a trigger needs different permission than the registrant account (e.g. swap between two accounts, #1212), the trigger should reference its own account (or should be identified as an account).
The ideas of system level triggers and technical accounts were suggested in as early as Triggers ADR.
Similar concepts include Contract Address and Program Derived Addresses

Originally posted by @s8sato in https://github.com/hyperledger/iroha/pull/4668#discussion_r1620176299
In this way, trigger has authority independent of the registrant and can manage transactions involving multiple authorities. Use cases such as locking assets could also be implemented by the trigger taking the assets

A possible path is as follows:

as of f12077d35
struct AccountId {
    domain_id: DomainId,
    signatory: PublicKey,
}

shallow objects #3921 should allow AccountId to be independent of DomainId
struct AccountId(PublicKey);

multisig accounts #4373 should require AccountId to be like enum
struct AccountId {
    raw_id : [u8; 32];
    ty: AccountType
}

enum AccountType {
    Ed25519,
    // snip
    Multisig,
}

add a variant for triggers
struct AccountId {
    raw_id : [u8; 32];
    ty: AccountType
}

enum AccountType {
    Ed25519,
    // snip
    Multisig,
    Trigger,
}


cgo: c code that was compiled with go, cannot also be used by go

Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version)?
$ go version
go version go1.10.3 linux/amd64

Does this issue reproduce with the latest release?
I have not tried with any go1.11.x releases
What operating system and processor architecture are you using (go env)?
$ go env
GOARCH="amd64"
GOBIN="/home/adam/go/bin"
GOCACHE="/home/adam/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/adam/go"
GORACE=""
GOROOT="/home/adam/.gvm/gos/go1.10.3"
GOTMPDIR=""
GOTOOLDIR="/home/adam/.gvm/gos/go1.10.3/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build321160569=/tmp/go-build -gno-record-gcc-switches"

What did you do?
You can find a demo, here.
// lib/lib.go
package main

import "C"
import "log"

//export myPrint
func myPrint(str *C.char) {
    gStr := C.GoString(str)
    log.Println(gStr)
}

func main() {}

//main.go
package main

//#include <stdlib.h>
//#include "./lib/lib.h"
import "C"
import "unsafe"

func main() {
    cs := C.CString("hello, world!")
    defer C.free(unsafe.Pointer(cs))
    C.myPrint(cs)
}

$ go build -o ./lib/lib.so -buildmode=c-shared ./lib/lib.go
$ go run main.go
# command-line-arguments
In file included from ./main.go:3:0:
cgo-builtin-prolog:7:48: error: conflicting types for '_GoString_'
cgo-builtin-prolog:6:44: note: previous declaration of '_GoString_' was here
In file included from ./main.go:3:0:
cgo-gcc-export-header-prolog:27:20: error: 'GoString' redeclared as different kind of symbol
cgo-builtin-prolog:8:12: note: previous declaration of 'GoString' was here

What did you expect to see?
$ go build -o ./lib/lib.so -buildmode=c-shared ./lib/lib.go
$ go run main.go
hello, world!

What did you see instead?
$ go build -o ./lib/lib.so -buildmode=c-shared ./lib/lib.go
$ go run main.go
# command-line-arguments
In file included from ./main.go:3:0:
cgo-builtin-prolog:7:48: error: conflicting types for '_GoString_'
cgo-builtin-prolog:6:44: note: previous declaration of '_GoString_' was here
In file included from ./main.go:3:0:
cgo-gcc-export-header-prolog:27:20: error: 'GoString' redeclared as different kind of symbol
cgo-builtin-prolog:8:12: note: previous declaration of 'GoString' was here

Possibly related to #22192

@AlexRouSg I think this is a little different. This err is happening because _GoString_ is being defined twice.
It's defined in cmd/cgo/out.go L#1722:
#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H
...
typedef _GoString_ GoString;
...
#endif

But also in the header file ./lib/lib.h L#53:
#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H
...
typedef _GoString_ GoString;
...
#endif

I don't know why the #ifndef GO_CGO_PROLOGUE_H, it seems to me like that should prevent this error from happening.

@adam-hanna
That issue is generally about c-shared not working (or is not expected to work) with go programs. This is about the generated header defining types twice, so that's why I thought it's related.

@AlexRouSg ahh, my apologies. I didn't understand. Thanks!


Add cert edition

This pull request adds features to support the 2014 certification edition including UI changes on the product create page and the background to support including patient html files and the certification edition information in the downloaded report.
HTML files should only be included "unless C2 and not 2014"
This can be tested by creating new products and ensuring the appropriate UI options, then going to the product summary page and downloading all patients or downloading the full report and ensuring that html patients and a listing of the certification edition are included respectively.

Pull requests into Cypress require the following. Submitter and reviewer should :white_check_mark: when done. For items that are not-applicable, note it's not-applicable ("N/A") and :white_check_mark:.
Submitter:

[ ] This pull request describes why these changes were made.
[ ] Internal ticket for this PR:
[ ] Internal ticket links to this PR
[ ] Code diff has been done and been reviewed
[ ] Tests are included and test edge cases
[ ] Tests have been run locally and pass

Reviewer 1:
Name:

[ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
[ ] The tests appropriately test the new code, including edge cases
[ ] You have tried to break the code

Reviewer 2:
Name:

[ ] Code is maintainable and reusable, reuses existing code and infrastructure where appropriate, and accomplishes the task’s purpose
[ ] The tests appropriately test the new code, including edge cases
[ ] You have tried to break the code

Just created a 2014 edition product, and I'm getting the following:
 when I click on "Download all patients"

Created another product, with the same result.
Product settings:

Update: after resetting my DB, the download button works again. Probably just a bad state in my DB.


Making lines shorter in five different files.

We are trying to make all the files in the codebase have a line lenght below 85. This has been done to nearly all files. Just five are not done yet:

keras/backend/cntk_backend.py
keras/backend/common.py
keras/backend/tensorflow_backend.py
keras/backend/theano_backend.py
tests/keras/backend/backend_test.py

If you want to take up this issue, please make one Pull request per file (you don't have to do all five pull requests at once). And once the lines are shorter for one file, you can remove the corresponding exception in the https://github.com/keras-team/keras/blob/master/pytest.ini to enable the tests.

HI!
I am chasing to complete my first PR.
I would like to know that what to be exactly mean by reducing line length below 85.
Thanks!

PEP8 recommend a maximum line lenght of 79 characters, we aim for 85. So we need to make some lines shorter in those files. See https://www.python.org/dev/peps/pep-0008/#maximum-line-length

I've had a go at:

keras/backend/common.py
keras/backend/theano_backend.py

Still 3 more for others to do.
Thank you, was an interesting learning exercise (also thanks to @iwillspeak for talking me through the harder bits).

I would like to work on keras/backend/cntk_backend.py

I attempted to fix tests/keras/backend/backend_test.py.

@GabrielBianconi Just found your PR #11184 doing the same for backend_test.py. Mine would be a duplicate but has no conflicts with master.
Should I close mine?

I've just submitted a PR for keras/backend/tensorflow_backend.py.
I hope this helped!


US102322: Remove .json extention for test data; it confuses the code …

…when it's expecting a route with no extension.

@m6jones https://github.com/Brightspace/d2l-my-courses-ui/blob/master/src/d2l-my-courses-content/d2l-my-courses-content-behavior.html#L562

interesting


SPARQL processor and directed graph processor

I may be missing something, so here goes:

is this a service?

By that I mean:

where is the SPARQL processor that reads the SPARQL text?
Where is the directed graph processor that prints the SPARQL result as a graph?

I assume (am hoping) that there is a method to generate this hash:
L3jPjGWHnKeV76En5YSTPJBgrCbI9rqe4bpExVh0ReREv3a8Fe4ztj7RcipzjRXLLsFC0Qo6SAKkr0XFGwrSC4x3pOMcp28z
and then invoke the hash like this:
https://inforapid.org/webapp/webapp.php?shareddb=L3jPjGWHnKeV76En5YSTPJBgrCbI9rqe4bpExVh0ReREv3a8Fe4ztj7RcipzjRXLLsFC0Qo6SAKkr0XFGwrSC4x3pOMcp28z
or am totally off base?

Hi,
It’s available as an app on Android, IOS, MacOS and Windows and as an web app on all platforms.
The app has an import function for CSV files. The Wikidata import converts the result of the SPARQL query into a csv file and imports it.
The hash value is generated when you login the web app and share a database.
Best Regards
Ingo
Von: jay gray<EMAIL_ADDRESS>Gesendet: Mittwoch, 14. Oktober 2020 15:52
An: inforapid/SPARQL
Cc: Subscribed
Betreff: [inforapid/SPARQL] SPARQL processor and directed graph processor (#1)
I may be missing something, so here goes:

is this a service?

By that I mean:

where is the SPARQL processor that reads the SPARQL text?
Where is the directed graph processor that prints the SPARQL result as a graph?

I assume (am hoping) that there is a method to generate this hash:
L3jPjGWHnKeV76En5YSTPJBgrCbI9rqe4bpExVh0ReREv3a8Fe4ztj7RcipzjRXLLsFC0Qo6SAKkr0XFGwrSC4x3pOMcp28z
and then invoke the hash like this:
https://inforapid.org/webapp/webapp.php?shareddb=L3jPjGWHnKeV76En5YSTPJBgrCbI9rqe4bpExVh0ReREv3a8Fe4ztj7RcipzjRXLLsFC0Qo6SAKkr0XFGwrSC4x3pOMcp28z
or am totally off base?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/inforapid/SPARQL/issues/1 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ANZ3GNQ7DNCDC3FDLYDHC6DSKWUHVANCNFSM4SQUPBSA .Das Bild wurde vom Absender entfernt.


Add ability to read SA_PASSWORD from SA_PASSWORD_FILE environment variable (#326)

For #326, adds the ability to read SA_PASSWORD from the file defined by SA_PASSWORD_FILE if SA_PASSWORD is undefined and SA_PASSWORD_FILE points to a valid file.

Personally I need this feature as well for Docker swarm. Same as #68
However I think adding an entrypoint.sh to this image is not the way I would do it.
It should be added as a feature of the binary instead to support either SA_PASSWORD or SA_PASSWORD_FILE and crash on startup in case you provide both.
Why do I believe so? Entrypoints are commonly used by downstream users of this image for various setup / config tasks. If this functionality was added using an entrypoint script, it will be lost for downstream users that wrote their own entrypoint scripts. It would mean the base image behaves inconsistently depending on how you use it.
And why crash on startup if you add both? Because it's ambiguous what it should do in this scenario. Plus it's a likely security problem.
Now I know this is just complaints. And I would be more than happy to try and make a PR for my suggestions... but where's the source to build /opt/mssql/bin/sqlservr? :thinking:

Can we please get this merged?  As an internal Microsoft user I was kinda astonished to find that the container didn't support the ability to read the password from a file path to use secrets.

@vin-yu really need this! Is it ok for you?

@amvin87  - can you take a look into this.

Let me take a look at this and update in some time

Thank you all for the suggestions. Want to also understand, why after creating the container can we not follow these steps to change the SA password. Is there a specific reason why this is necessary during the creation of the container? Just trying to understand a specific scenario where this cannot be done immediately.

@amvin87 the short answer I think is:

security
declarative configuration
docker swarm support

Secure + docker swarm rules out any docker run or docker exec options, as this is effectively circumventing how the swarm orchestrator schedules tasks. ENV cannot be used either as it's handled in plaintext throughout the system. Instead one should use secrets: https://docs.docker.com/engine/swarm/secrets/. These secrets only map to read-only files (unlike k8s), hence the SA_PASSWORD_FILE approach.
Why not bootstrap after creation with sqlcmd? Because it's imperative and goes against the "cattle, not pets" approach to deploying applications. To work around this you'll wind up creating brittle bootstrapping containers to automate the password change. These not only add more overhead in your configuration, they'll also fail if the DB's state is not exactly right. With the consequence of failure being insecure deployments.
By contrast, supporting SA_PASSWORD_FILE when SA_PASSWORD is already implemented should be trivial. Although for reasons stated above, I think would be preferable if supported by the sqlservr binary, rather than an entrypoint script.


React Native

Now that the client logic is decoupled from React, and the React implementation is just a tiny wrapper around the Client class, it should be possible to add support for React Native in a similar way.
I have no experience with React Native, but if someone wants to do some exploring here, I'll be happy to provide guidance and review PR's.

The other UI stuff is coupled to React. How do you plan to proceed?

@Stefan-Hanke I'd assume the UI stuff will continue to be coupled directly with React for now– and anyone implementing React Native/Vue/Angular will be responsible for bringing their own UI components.
@nicolodavis I gave this a shot about a month back– I'm pretty sure the only things that need changes are converting the divs to Views, handling the CSS imports + debug UI, and adding an example using RN (probably with create-react-native-app + Expo.io)
I'm not sure what my schedule is like in the next couple weeks– I'll get going on something but if anyone else reads this and wants to take a stab at it please do!

We'll need to have parallel implementations in React Native / Vue / Angular. However, that doesn't mean they can't share code. @Stefan-Hanke proposes sharing SVG code in https://github.com/google/boardgame.io/pull/111, which I think is a good idea.
I think the UI components are the easy bit. The Debug pane is going to be harder. Reactive Native doesn't need one, but I think it will need to be rewritten completely for Angular and Vue (they can start out without having one, of course).

What's the status of RN integration now? I'll be attempting a RN project with this soon, and would be willing to contribute if anything's missing.
That, and/or TypeScript support.

It is already on NPM. Would welcome some testers though (I haven't checked if it works correctly).

Would welcome some testers though (I haven't checked if it works correctly).

Seems to work!

This screenshot is actually my port of the react-native tic-tac-toe example to TypeScript. It's made as a non-Expo app, for some variety. The port is not quite ready to show yet, as I first need to figure out how to distribute the TypeScript declarations (I have no idea how to get them to co-operate with rollup bundles).

That looks amazing, great work!


res.send(200) not sent for stickers

Hi all
I am developing a bot using nodejs on fb messenger. While testing it, I found that when a user sends a sticker, the facebook messenger sends that message as attachments with sticker_id key. After parsing that message, when I send the res.send(200), facebook doesn't seem to recognize it. Does anyone know how to fix this issue?
server.post('/', (req, res, next) => {
  f.incoming(req, res, msg => { //this function parses the input message from facebook and returns message object and sender id
    const {
      message,
      sender
    } = msg
    console.log(msg); //this gets printed with message object which includes the sticker_id and sender id
    if(message.text) {
            f.txt(sender, 'Hi there');
        }else {
            console.log('we are in else block..');
            f.txt(sender, `I couldn't get you. Sorry :(`);
      }
  });
        res.send(200);//this is not working
	return next();
});

Hi @samt07! These are issues for a Ruby gem, so you'll probably have more luck asking this at StackOverflow.


Bug console.log function does not work on Android device, ionic test 2 RC3

Short description of the problem:
This console.log function work with running on 'ionic serve' the browser show console.log.
But running on 'ionic run android -lc' or 'ionic run android' --livereload --consolelogs' not work console logs on android device.
What behavior are you expecting?
Using Ionic 2 RC2 the console.log function works from the android device, with the update to RC3 stopped working.
Steps to reproduce:

run: ionic serve (this will work fine for console.log)
run: ionic run android -lc (this will not work fine for console.log)
run: ionic run android --livereload --consolelogs (this will not work fine for console.log)

constructor(public navCtrl: NavController) {
    /**
     * This console.log function work with running on 'ionic serve'
     * the browser show console.log.
     *
     * But running on 'ionic run android -lc' or 'ionic run android' --livereload --consolelogs'
     * not work display console logs on android device.
     */
    console.log('Constructor Home Page');
  }

testConsole() {
    /**
     * This console.log function work with running on 'ionic serve'
     * the browser show console.log. Event click button.
     *
     * But running on 'ionic run android -lc' or 'ionic run android' --livereload --consolelogs'
     * not work display console logs on android device. Event click button.
     */
    console.log('Click on button Test Console Log');
  }

Post the output of ionic info below please
sebaxtian@Satellite [ test ] >> sudo ionic info
Your system information:
Cordova CLI: 6.4.0
Ionic Framework Version: 2.0.0-rc.3
Ionic CLI Version: 2.1.13
Ionic App Lib Version: 2.1.7
Ionic App Scripts Version: 0.0.45
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Linux 4.4
Node Version: v5.12.0
Xcode version: Not installed
Other information: (e.g. stacktraces, related issues, suggestions how to fix, stackoverflow links, forum links, etc)
This is my project, https://github.com/sebaxtian/ionic2-angular2/tree/master/test using the console.log function in the home.ts file
home.ts file: https://github.com/sebaxtian/ionic2-angular2/blob/master/test/src/pages/home/home.ts
home.html file: https://github.com/sebaxtian/ionic2-angular2/blob/master/test/src/pages/home/home.html
package.json file: https://github.com/sebaxtian/ionic2-angular2/blob/master/test/package.json
1. run: ionic serve (this will work fine for console.log)

2. run: ionic run android -lc (this will not work fine for console.log)

[SOLVED]
Change in the package.json file:
Replace: "ionic:serve": "ionic-app-scripts serve"
With: "ionic:watch": "ionic-app-scripts watch"
"scripts": {     "ionic:build": "ionic-app-scripts build",     "ionic:watch": "ionic-app-scripts watch" }
Change in the package.json file

I think you should reopen the bug, the problem should not be the app/script but the ionic cli. With 1.2.8 the log does work well.

I think this issue should be reopen as well. What I'm experiencing is as follow:

If I run ionic run android -lc with an UNmodified package.json the live reload works well but the logs won't show up

If I run ionic run android -lc with a Modified package.json the console logs will show up but the livereload won't work anymore

If I run ionic run android --livereload --consolelogs both livereload and consolelogs work as expected, however it won't detect that it's running in a device

anybody else is having this behaviour?

Hi @tonirilix, I tried a lot but I can't reproduce your scenario, also --livereload --consolelogs dosn't work for me. But I can not do run because I brooked my android phone, so it's always only a emulating device.
You can see here
https://github.com/driftyco/ionic-cli/issues/1695#issuecomment-265353928
and here
https://github.com/driftyco/ionic-app-scripts/pull/492#issuecomment-265353659
where we discuss this

Thanks a lot. I'll be following that thread.

Can you test as described in my links if installing ionic@test (2.1.15) is resolving the issue for you? Are you on ionic-angualr RC.3?
Please join first link/issue

Yes, I'm using ionic RC.3.
I just tried ionic@test (2.1.15) in an clean project and it's not resolving the issue for me.
I'll join now.

I was having this issue and sebaxtian fix solved the issue.


refusing to allow an integration to create or update .github/workflows/*.yml

We have a long-running PR that was updating just fine until it hit this:
 * [new branch]            using-saml-broken-link -> tmp_upstream/using-saml-broken-link
 * [new tag]               legacy_content_removal_20170503 -> legacy_content_removal_20170503
 * [new tag]               pre-nanoc            -> pre-nanoc
origin<EMAIL_ADDRESS>(fetch)
origin<EMAIL_ADDRESS>(push)
tmp_upstream	*** (fetch)
tmp_upstream	*** (push)
To https://github.com/docs/docs
 ! [remote rejected]         tmp_upstream/master -> sync (refusing to allow an integration to create or update .github/workflows/check-all-english-links.yml)
error: failed to push some refs to<EMAIL_ADDRESS>
This is the part of our Workflow where this fails:
- uses: repo-sync/github-sync@v2
  name: Sync repo to branch
  with:
    source_repo: ${{ secrets.SOURCE_REPO }}
    source_branch: "master"
    destination_branch: sync
    github_token: ${{ secrets.GITHUB_TOKEN }}

I think there's a new Scope™ in the works to address this. We'll probably need to generate a new Personal Access Token (PAT) to unblock this.
cc @wei

Yep, a PAT can be used in place of ${{ secrets.GITHUB_TOKEN }} for when workflow files are present.


ES2016 Port

This looks great declan. Will have to try out ava/wallaby -- I know if you are considering using them they must be worth a shot!

Hey so I just was checking out ava and it doesn't work with babel 6. Otherwise it looks quite nice! I'll give it another shot later once they are babel 6 compatible :grinning:

Yep @jenius - much of this branch is still on the ol' hammer and anvil and is thus unstable. Babel 6 has made things rather awkward (see: my latest tweet) (did you know it deprecated interoperability between ES6 modules and commonjs? me neither), and switching to ES6/7 while maintaining that tests pass has been a bit time consuming.
I'd originally started out with a fork but was asked to base it off of this branch so I'm still in the process of smoothing things out. But in any case, this is the roadmap:
Improving Speed / Testing:

replace mocha with ava (waiting on a PR to update to Babel6 - they're close to getting it done)
replace istabul / isparta with nyc (so we can cover ava tests)
implement caching

Improving Maintainability:

using standard coding style
refactoring the code into a multi-file architecture

Reducing Overhead

replacing dependency on when with native Promise() and async / await
removing dependency on lodash, string, and other unnecessary utilities in favor of built-in language constructs

And a few other things.


[Bug]: The button to import previously generated images in txt2img cannot be used

What happened?
I want to import the image generated by txt2img before, and click the import button, but there is no effect.
Colab cell output
Error: no "view" mailcap rules found for type "inode/directory"
/usr/bin/xdg-open: 869: www-browser: not found
/usr/bin/xdg-open: 869: links2: not found
/usr/bin/xdg-open: 869: elinks: not found
/usr/bin/xdg-open: 869: links: not found
/usr/bin/xdg-open: 869: lynx: not found
/usr/bin/xdg-open: 869: w3m: not found
xdg-open: no method available for opening 'outputs/txt2img-images'

Which colab and model(s) were you using when the error occurred?
https://github.com/camenduru/stable-diffusion-webui-colab/tree/drive
Which Public WebUI Colab URL were you using when the error occurred?
trycloudflare.com
If you used HiRes mode when the error occurred, please provide the Hires info
No response

hi @mnrr01 please use One Time Install & Update colab


Update hash so that Kronos builds with Swift 4

Update to use latest version of Kronos project.
Project is already configured to use 4.0
Drop building project in 3.0

@swift-ci test