Unable to use docker compose of chorus with isSecure: false

While trying to use Chorus to replicate data from staging instances of Minio in one kubernetes cluster (old cluster, oc) to another (new cluster, nc) we encounter a few issues.
We are using docker compose to build Chorus with an agent :
docker compose -f ./docker-compose/docker-compose.yml --profile agent up --force-recreate

The connection to main seems to be configuring fine, however follower is giving us the problems. We have assigned two urls to our nc staging Minio instance, one uses http and one is https, both have self-signed certificates.
IF we  use the https url which assigned to the follower Minio instance, the composition is fine, and chorctl dash and storage work as expected. But bucket replication fails due to the https route not having a valid certificate. If we were able to convince Chorus to trust our self-signed certificates this issue would be resolved, without this we are not currently able to generate a trust x.509 certificate that it is requesting.
IF we use the http url, with the necessary flags isSecure: false the composition fails on the worker with the following:
worker-1  | {"level":"error","error":"unable to create client for storage \"follower\": s3 is offline: The request signature we calculated
does not match the signature you provided. Check your key and signing method.","time":"2024-07-26T09:36:40Z","message":"critical
error. Shutdown application"}`

This Chorus instance is hosted on a virtual machine, on our own hosted vSphere cluster. The connection and credentials being used have been by installing Minio client locally, and we are able to list all buckets for both nc and oc instances.
Either a solution that enables us to give Chorus a certificate authority to trust, or an explanation of how to solve the "offline s3" issue would be appreciated.

Hi, unfortunately, self-signed certificates are not supported by chorus.
Some context: isSecure option is indicates s3 url schema: http for isSecure: false and https for isSecure: true. Schema is required to correctly work with s3 client libraries like rclone, and minio go sdk which are used by chorus.
To use self-signed certificates, we will have to provide your custom CA to these libraries or disable CA check there. Right now there is no option like disable-ca-check or ca-cert in chorus config so it is not possible to propagate this options to mentioned s3 client libraries (rclone, minio-go).
possible solutions:

Use http.
Use https with CA Certificate like letsencrypt.
implement disable-ca-check option in chorus.

For option 3 you can adjust minio client config with custom transport and find a way how to set rclone --no-check-certificate option to rclone lib in chorus.

Hi @arttor ,
I had worried this would be the case, I can see that it is not straight forward to implement, but would be a useful feature.
For our production services, when it comes to that stage, we will be able to used option 2 with letsencrypt, and I can begin ti look at option 3 as it was not something I had considered before (will let you know how it goes).
However, for Option 1, this is something that we had already tried. We've altered the Kubernetes httproute and gateway to use a http address as opposed to https. When we try to use the agent docker-compose an error is reported from the worker
{"level":"error","error":"unable to create client for storage \"follower\": s3 is offline: The request signature we calculated does not match the signature you provided. Check your key and signing method.","time":"2024-07-30T08:01:25Z","message":"critical error. Shutdown application"}
A curl request such as curl -I http://minio-staging-s3api.flux-test.dafni.rl.ac.uk:80/minio/health/live -v is fine.
* Trying ...
* TCP_NODELAY set
* Connected to <...> port 80 (#0)
> HEAD <>health/live HTTP/1.1
> Host: <>
> User-Agent: curl/7.61.1
> Accept: */*
>
< HTTP/1.1 200 OK
< accept-ranges: bytes
< content-length: 0
< server: envoy
< strict-transport-security: max-age=31536000; includeSubDomains
< vary: Origin
< x-amz-id-2: <>
< x-amz-request-id: <>
< x-content-type-options: nosniff
< x-xss-protection: 1; mode=block
< date: Tue, 30 Jul 2024 08:02:55 GMT
< x-envoy-upstream-service-time: 0

Is there a suggestion that the httproute or gateway is misconfigured to use http address or that Chorus configuration has been done incorrectly?

this is strange. I think that the error is related to s3 auth signature, not tls. So the problem is that minio cannot validate credentials. Is there a chance that minio or chorus using wrong domain or ip to calculate signature?
I have not tested chorus with minio, only with aws, ceph, and fake-s3. But probably you can reproduce it with docker-compose with minio and chorus and post it here?

I can investigate this approach first, (the one you linked to around "using wrong domain..."), but first let me understand the suggestion. Would it be worth searching through the code in folder docker-compose for where the s3Client is defined and ensuring this is coded for the Url I'm using? I'm not an avid Go coder, but I should be able to attempt this.
A simple restart of the docker processes and prune of resources (nothing else is using this VM), still fails with the following output.
[+] Running 4/2
 ✔ Network docker-compose_default     Created                                                                                0.3s
 ✔ Container docker-compose-redis-1   Created                                                                                0.1s
 ✔ Container docker-compose-worker-1  Created                                                                                0.0s
 ✔ Container docker-compose-agent-1   Created                                                                                0.0s
Attaching to agent-1, redis-1, worker-1
redis-1   | 1:C 30 Jul 2024 10:09:04.474 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
redis-1   | 1:C 30 Jul 2024 10:09:04.474 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis-1   | 1:C 30 Jul 2024 10:09:04.474 * Redis version=7.2.5, bits=64, commit=00000000, modified=0, pid=1, just started
redis-1   | 1:C 30 Jul 2024 10:09:04.474 * Configuration loaded
redis-1   | 1:M 30 Jul 2024 10:09:04.474 * monotonic clock: POSIX clock_gettime
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * Running mode=standalone, port=6379.
redis-1   | 1:M 30 Jul 2024 10:09:04.475 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * Server initialized
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * Reading RDB base file on AOF loading...
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * Loading RDB produced by version 7.2.5
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * RDB age 411945 seconds
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * RDB memory usage when created 0.83 Mb
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * RDB is base AOF
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * Done loading RDB, keys loaded: 0, keys expired: 0.
redis-1   | 1:M 30 Jul 2024 10:09:04.475 * DB loaded from base file appendonly.aof.1.base.rdb: 0.000 seconds
redis-1   | 1:M 30 Jul 2024 10:09:04.476 * DB loaded from incr file appendonly.aof.1.incr.aof: 0.000 seconds
redis-1   | 1:M 30 Jul 2024 10:09:04.476 * DB loaded from append only file: 0.000 seconds
redis-1   | 1:M 30 Jul 2024 10:09:04.476 * Opening AOF incr file appendonly.aof.1.incr.aof on server start
redis-1   | 1:M 30 Jul 2024 10:09:04.476 * Ready to accept connections tcp
worker-1  | {"level":"info","time":"2024-07-30T10:09:05Z","message":"app config: reading default common config"}
worker-1  | {"level":"info","time":"2024-07-30T10:09:05Z","message":"app config: override with: worker_default_cfg"}
worker-1  | {"level":"info","time":"2024-07-30T10:09:05Z","message":"app config: override with: config/config.yaml"}
worker-1  | {"level":"info","time":"2024-07-30T10:09:05Z","message":"app config: override with: config/override.yaml"}
worker-1  | 2024-07-30T10:09:05Z INF ../build/service/worker/server.go:62 > app starting... app=worker app_id=cqkbngedpdu24p8o4gbg commit="not set" version=development
worker-1  | 2024-07-30T10:09:05Z INF ../build/service/worker/server.go:80 > app redis connected app=worker app_id=cqkbngedpdu24p8o4gbg
worker-1  | {"level":"error","error":"unable to create client for storage \"follower\": s3 is offline: The request signature we calculated does not match the signature you provided. Check your key and signing method.","time":"2024-07-30T10:09:05Z","message":"critical error. Shutdown application"}
agent-1   | {"level":"info","time":"2024-07-30T10:09:05Z","message":"app config: reading default common config"}
agent-1   | {"level":"info","time":"2024-07-30T10:09:05Z","message":"app config: override with: agent_default_cfg"}
agent-1   | {"level":"info","time":"2024-07-30T10:09:05Z","message":"app config: override with: config/config.yaml"}
agent-1   | {"level":"warn","time":"2024-07-30T10:09:05Z","message":"app config: no config file \"config/override.yaml\""}
agent-1   | 2024-07-30T10:09:05Z INF ../build/service/agent/server.go:49 > app starting... app=agent app_id=cqkbng858gblg9ch8n70 commit="not set" version=development
agent-1   | 2024-07-30T10:09:05Z INF ../build/service/agent/server.go:58 > redis app pool stats app=agent app_id=cqkbng858gblg9ch8n70 redis_pool={"Hits":0,"IdleConns":0,"Misses":0,"StaleConns":0,"Timeouts":0,"TotalConns":0} redis_pool_size=20
agent-1   | 2024-07-30T10:09:05Z INF ../build/service/agent/server.go:69 > app redis connected app=agent app_id=cqkbng858gblg9ch8n70
agent-1   | 2024-07-30T10:09:05Z INF ../build/service/agent/server.go:73 > redis conf pool stats app=agent app_id=cqkbng858gblg9ch8n70 redis_pool={"Hits":0,"IdleConns":1,"Misses":1,"StaleConns":0,"Timeouts":0,"TotalConns":1} redis_pool_size=20
agent-1   | 2024-07-30T10:09:05Z INF ../build/service/agent/server.go:82 > redis queue pool stats app=agent app_id=cqkbng858gblg9ch8n70 redis_pool_size=0
agent-1   | 2024-07-30T10:09:05Z INF ../build/service/agent/server.go:104 > agent created app=agent app_id=cqkbng858gblg9ch8n70
agent-1   | 2024-07-30T10:09:05Z INF ../build/pkg/util/serve.go:60 > server: start serving 2 workers app=agent app_id=cqkbng858gblg9ch8n70
agent-1   | 2024-07-30T10:09:05Z INF ../build/pkg/util/serve.go:97 > server: start serving app=agent app_id=cqkbng858gblg9ch8n70
agent-1   | 2024-07-30T10:09:05Z INF ../build/pkg/util/serve.go:67 > server: starting worker "agent_http" app=agent app_id=cqkbng858gblg9ch8n70
agent-1   | 2024-07-30T10:09:05Z INF ../build/pkg/util/serve.go:67 > server: starting worker "agent_request_reply" app=agent app_id=cqkbng858gblg9ch8n70
worker-1 exited with code 1 ```

I have noted there are warnings (this has always been the case) from the redis component, but these didn't appear to be stopping any processes, and so were settled to be addressed when we came towards production setup (where more data will be being used).

as i can see from the log the problem is that chorus worker cannot execute healthcheck to configured s3:

worker-1  | {"level":"error","error":"unable to create client for storage "follower": s3 is offline: The request signature we calculated does not match the signature you provided. Check your key and signing method.","time":"2024-07-30T10:09:05Z","message":"critical error. Shutdown application"}

And error says that s3 auth signature is invalid.
worker s3 credentials for docker-compose should be defined in docker-compose/s3-credentials.yaml.
if you want to log exact values, you can add something like fmt.Println(conf) to this line.

Thank you very much for your help @arttor, I've been able to diagnose the issue.
With the breadth and wonders of the internet my typo can now be immortalised. (The issue was that I had written the incorrect credentials in the s3-credentials.yaml).
The suggestion for fmt.Println(conf) was the saviour for me, after rebuilding the image it was able print the the configuration and show which minio instance was failing to connection and the credentials it was attempting to use. Hopefully this will be the end of my worries for now. Thanks again!

i was thinking about an option allowing to print config at startup but in this case i would mask all credentials for security reasons anyway.

I am currently tinkering with configuration to keep the credentials in the s3-credentials.yaml file safe. However, if only root can view the file docker seems to be unable to configure.
What are the current best-practice suggestions for keeping the credential files secure and not easily readable?

please check out config docs. At the end you need to provide config as yaml file or envars to chorus binaries. you can override any yaml option with envar like this: CFG_REDIS_ADDRESS='<IP_ADDRESS>:6379' - envar name should start from CFG_ followed by yaml properties separated by _.
if you deploy chorus to k8s with helm chart it will use k8s secret to store credentials from confgis.

Thank you one more time Arttor, it has again solved my issues. I've created a .env file and had it linked in via the docker-compose.yaml file to bring in those envars, then I can set permissions on this .env as required.
I'm going to close this issue now as you've been able to solve all my issues.


discord-canary: 0.0.277 -> 0.0.278

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for discord-canary is: All-in-one cross-platform voice and text chat for gamers
meta.homepage for discord-canary is: https://discordapp.com/
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.0.278 with grep in /nix/store/zq68rn1klwsp07x7nznd1yn2z782w7gx-discord-canary-0.0.278
found 0.0.278 in filename of file in /nix/store/zq68rn1klwsp07x7nznd1yn2z782w7gx-discord-canary-0.0.278

Rebuild report (if merged into master) (click to expand)

1 total rebuild path(s)

1 package rebuild(s)

First fifty rebuilds by attrpath
discord-canary

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/zq68rn1klwsp07x7nznd1yn2z782w7gx-discord-canary-0.0.278 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A discord-canary https://github.com/r-ryantm/nixpkgs/archive/7922c8d1805bf8a7f17faafe4be190a7824fe586.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/7922c8d1805bf8a7f17faafe4be190a7824fe586#discord-canary

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/zq68rn1klwsp07x7nznd1yn2z782w7gx-discord-canary-0.0.278
ls -la /nix/store/zq68rn1klwsp07x7nznd1yn2z782w7gx-discord-canary-0.0.278/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

discord-canary

Maintainer pings
cc @MP2E @Scrumplex @Artturin @Infinidoge @jopejoe1 for testing.

hmm, not sure why that didn't work. can you retest? we didn't see anything in the logs, maybe github lost the webhook

@NixOS/nixpkgs-merge-bot merge

hmm, not sure why that didn't work. can you retest? we didn't see anything in the logs, maybe github lost the webhook

Maybe because it was a review comment?
Will test that again when r-ryantm sends me another one.

Ah that could be the case. Interesting that it looks so similiar. We probably should also support that type of comment


Rename QOL Access to car denominator column and reorder QOL access to broadband/access to car columns

Couple things to do to get the QOL indicators out to OSE:

[ ] Update the QOL Access to Transit: car commute column from access_carcommute_workers_ to access_workers16pl_ as discussed in pull req #198
[ ] Reorder the columns in QOL Access to broadband and Access to Transit:car commute to match race crosstab conventions that have already been established

hey looks good Max. Let me know if you have a branch pointed at this issue

202-fix-qol-access-broadband-carcommute @td928 @SashaWeinstein

Sorted both dataframes, let me know what you all think

I took a look at the branch and I think both work look good to me. Is there a pull request being created right now for this?

Let me take a quick look as well, I have not started a pull req for this issue @td928 @SashaWeinstein


dubbo_proxy clang-tidy CI build regression since 7/20

The dubbo_proxy was updated on 7/20, and broke pre-commit clang-tidy build.
@alyssawilk
2020-07-23T21:11:20.7931109Z /source/source/extensions/filters/network/dubbo_proxy/deserializer.h:34:27: error: no member named 'Hessian' in 'Envoy::Extensions::NetworkFilters::DubboProxy::SerializationType'; did you mean 'Hessian2'? [clang-diagnostic-error]
2020-07-23T21:11:20.7932514Z       {SerializationType::Hessian, "hessian"},
2020-07-23T21:11:20.7932937Z                           ^~~~~~~
2020-07-23T21:11:20.7933290Z                           Hessian2
2020-07-23T21:11:20.7934270Z bazel-out/k8-fastbuild/bin/source/extensions/filters/network/dubbo_proxy/_virtual_includes/message_lib/extensions/filters/network/dubbo_proxy/message.h:48:3: note: 'Hessian2' declared here
2020-07-23T21:11:20.7935187Z   Hessian2 = 2,
2020-07-23T21:11:20.7935479Z   ^
2020-07-23T21:11:20.7936250Z /source/source/extensions/filters/network/dubbo_proxy/deserializer.h:54:7: error: redefinition of 'RpcInvocation' [clang-diagnostic-error]
2020-07-23T21:11:20.7936818Z class RpcInvocation {
2020-07-23T21:11:20.7937111Z       ^
2020-07-23T21:11:20.7938011Z bazel-out/k8-fastbuild/bin/source/extensions/filters/network/dubbo_proxy/_virtual_includes/message_lib/extensions/filters/network/dubbo_proxy/message.h:118:7: note: previous definition is here
2020-07-23T21:11:20.7938664Z class RpcInvocation {
2020-07-23T21:11:20.7939089Z       ^
2020-07-23T21:11:20.7939854Z /source/source/extensions/filters/network/dubbo_proxy/deserializer.h:69:7: error: redefinition of 'RpcResult' [clang-diagnostic-error]
2020-07-23T21:11:20.7940438Z class RpcResult {
2020-07-23T21:11:20.7940728Z       ^
2020-07-23T21:11:20.7941618Z bazel-out/k8-fastbuild/bin/source/extensions/filters/network/dubbo_proxy/_virtual_includes/message_lib/extensions/filters/network/dubbo_proxy/message.h:135:7: note: previous definition is here
2020-07-23T21:11:20.7942262Z class RpcResult {
2020-07-23T21:11:20.7942541Z       ^
2020-07-23T21:11:20.7943493Z bazel-out/k8-fastbuild/bin/source/common/config/_virtual_includes/utility_lib/common/config/utility.h:239:52: error: no member named 'typed_config' in 'std::__1::basic_string<char>' [clang-diagnostic-error]
2020-07-23T21:11:20.7944263Z     const ProtobufWkt::Any& typed_config = message.typed_config();
2020-07-23T21:11:20.7944710Z                                                    ^
2020-07-23T21:11:20.7946056Z /source/source/extensions/filters/network/dubbo_proxy/deserializer.h:154:36: note: in instantiation of function template specialization 'Envoy::Config::Utility::getAndCheckFactory<Envoy::Extensions::NetworkFilters::DubboProxy::NamedDeserializerConfigFactory, std::__1::basic_string<char> >' requested here
2020-07-23T21:11:20.7947122Z     return Envoy::Config::Utility::getAndCheckFactory<NamedDeserializerConfigFactory>(name);
2020-07-23T21:11:20.7947616Z                                    ^
2020-07-23T21:11:20.7948603Z bazel-out/k8-fastbuild/bin/source/common/config/_virtual_includes/utility_lib/common/config/utility.h:259:63: error: no member named 'name' in 'std::__1::basic_string<char>' [clang-diagnostic-error]
2020-07-23T21:11:20.7949345Z     return Utility::getAndCheckFactoryByName<Factory>(message.name());
2020-07-23T21:11:20.7949831Z                                                               ^
2020-07-23T21:11:20.7950143Z
2020-07-23T21:11:20.7950468Z 67872 warnings and 5 errors generated.
2020-07-23T21:11:20.7950933Z Error while processing /source/source/extensions/filters/network/dubbo_proxy/deserializer.h.

@sunjayBhatia

Sorry about that.  After a few minutes of being baffled (the Hessian option was removed ages ago!) the only way I see this compiling is if the file isn't used at all.  Sent out a PR to remove it.


Including referenced models as dependencies

Describe the bug
Given a JSON Schema which results in two models being generated such as the following:
{
      "type": "object",
      "required": ["lumen"],
      "properties": {
	      "lumen": {
		      "type": "integer",
		      "description": "How bright should the light be."
	      },
	      "test": {
		      "type": "object",
		      "$id": "OtherModel",
		      "required": ["lumen"],
		      "properties": {
			      "lumen": {
				      "type": "integer",
				      "description": "How bright should the light be."
			      }
		      }
	      }
      }
}

When we want to render these models we do something along these lines (using TS generator as example) :
const typescriptGenerator = new TypeScriptGenerator();
const generatedModels = await typescriptGenerator.generate(input);
for (const generatedModel of generatedModels) {
  const modelFileName = `${FormatHelpers.toPascalCase(generatedModel.modelName)}.ts`;
  const modelFileContent = `
${generatedModel.dependencies.join('\n')}
${generatedModel.result}
  `;
}

Problem is that the generated class includes a property called private _test?: OtherModel;, but the dependencies does not include this other model.
So the question remains, how do we best give the user access to which other models that we depend upon?
I see two ways to solve this.

We create a modelDependencies property (similar to dependencies but only for models which we depend upon). This will give greater power to the user. In terms of complexity, #287 #288 would simplify normal use-cases and still allow for greater freedom for complex use-cases.
Utilize the existing dependencies list. It will create a problem though since we cant dynamically locate models differently from one another, as we would need to add the dependency import OtherModel from ./OtherModel.ts. However, the generator has no knowledge (for now) of what you do with the models... So that would be tricky to implement IMO.

cc @magicmatatjahu

I prefer way with going with dependencies list. We should avoid unnecessary props like modelDependencies.

It will create a problem though since we cant dynamically locate models differently from one another...

Even if we traverse all properties/patternProperties/additionalProperties of model and check if given prop has $ref? :)
We can also extend dependencies list to include info about imported models like:
dependencies = [
  {
    import: `import OtherModel from './OtherModel'`,
    type: 'model'
  },
    {
    import: `import something from 'something'`,
    type: 'package'
  }
]

but I see the problem with path to the OtherModel because user should have possibility to defined it in another place that the rendered model.

Even if we traverse all properties/patternProperties/additionalProperties of model and check if given prop has $ref? :)

It is not a problem traversing the model for $refs as we will need to do it regardless. However, import OtherModel from './OtherModel' will not be possible to assume as in theory it can be located anywhere (as the functionality currently allows this).
With modelDependencies you would of course need to manually keep track of where you output the models. So when dependencies need to be rendered, you would need to do something like:
const typescriptGenerator = new TypeScriptGenerator({ ... });
const generatedModels = await typescriptGenerator.generate(asyncapi);
const fileNaming = (modelName) => {
  return `${FormatHelpers.toPascalCase(modelName)}.ts`
};
const modelLocations = {};
for (const generatedModel of generatedModels) {
  const modelFileName = fileNaming(generatedModel.modelName);
  modelLocations[generatedModel.modelName] = `./${modelFileName}`;
  const fileContent = `
${generatedModel.dependencies.join('\n')}
${generatedModel.modelDependencies.map((modelName) => {return modelLocations[fileNaming(modelName)]})}
${generatedModel.result}
  `;
}

This is of course not a silver bullet because now referenced models need to be listed in order (which we currently do not comply with), and what about circular dependencies, you need to handle that as well.
Another reason why we might want to split the dependencies into two lists is that maybe you place all models inside the same file, here you won't need the model dependencies, as they already have access to each other.

We can also extend dependencies list to include info about imported models like:

I honestly think this is the best approach at the moment. Do you foresee any problems later on? 🤔

We need to remember that each model has a getNearestDependencies function, meaning you can actually include this already, and won't need any extra implementation.

Closing as we already have the functionality to retrieve the models.


Using WebhookHttpServers results in a spurious diff after being created

What happened?
When attempting to use WebhooksHttpServers after the initial creation, it results in an empty diff and attempts to update the resource which subsequently will fail.
Example
TODO
Output of pulumi about
TODO
Additional context
No response
Contributing
Vote on this issue by adding a 👍 reaction.
To contribute a fix for this issue, leave a comment (and link to your pull request, if you've opened one already).

I believe this is coming form the upstream provider. When testing it upstream, I received an error and the resource in a tainted state.

tracked upstream: https://github.com/cisco-open/terraform-provider-meraki/issues/72

closing as completed and resolved via https://github.com/pulumi/pulumi-meraki/pull/71


feat: Add support for OR Queries Firestore

feat: Add support for OR Queries Firestore

Looks like a few tests are failing. Can we please address them first? Also, please share the design doc with me (if it exists) so that I have the context. If not I'll sync up with you and get that information. Thanks.

@Rishabh-V just realized after raising the PR a small check was missing fixed it. yeah will share the doc.
Thanks

Hi @jskeet ,
Please review this and share your valuable feedback.
Thanks,

Hi @jskeet , I've added the tests. Please have a look and let me know if anything else is needed.
Thanks,


refactor: replace call to UI API from background thread with safe API calls

This seems to work. It appears that the method call NSMutableAttributedString.yy_attachmentString is creating a YYTextAttachment for us with all the appropriate attributes, which indicates to me we do not need to do any extra work here other than passing in a UIImage, which the YYTextAttachment supports.
The only real thing I see different is how I decide if we even do this (if data doesn't come back appropriately from the reward URL, I move on. Additionally I resize the UIImage, whereas before it was resizing the UIImageView, which I guess is different if the YYTextAttachment decides to increase in size after the resize is performed.
Fixes https://github.com/ccrama/Slide-iOS/issues/892

Looks great, thank you! I can finally debug without waiting for Xcode to complain 😛


Tiers for Onboarding creation form have incorrect defaults and aren't properly connected

When trying to onboard a tenant using RC0, the default tier in the Onboarding create form has an incorrect default value ('default ' instead of 'default') and the tier that should be pulled out of config is improperly wired up, meaning that the default value will always be used.
Reproduction Steps

Install a v2.0.0-RC0 environment
Create an app config with a single service, and follow getting-started.md to upload the sample application into the created ECR repository
Attempt to onboard a tenant

What did you expect to happen?
The onboarding request should eventually move to Complete
What actually happened?
The onboarding request is stuck in validation. Logs for the sb-<env>-onboarding-validation lambda show the following:
Missing tier configuration for service 'xxx' tier 'default '

More information here
Environment

AWS Region  : any
AWS SaaS Boost Version : v2.0.0-RC0
Workload OS  (Linux or Windows) : any

Other

This is :bug: Bug Report

Resolved with commit b386c05


DUP: User able to book pass by changing system time to 6:50am

Describe the bug
User reporting to ParkInfo that if system time is changes on laptop by 10 minutes, they are able to book passes early - the user changed system time to 6:50 from 7:00am and was able to book.
To Reproduce
Steps to reproduce the behavior:

At 7:00am go to https://reserve.bcparks.ca/dayuse/
Change system time to 6:50am
Reserve day use pass

Expected behavior
Despite system time, user is not able to book a pass until after 7:00am PST
Screenshots

Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

@manuji  did you get a chance to check out this bug? teams post reference: https://teams.microsoft.com/l/message/19:163facd69a2e4fe1a14eac3ae95fb3c4@thread.tacv2/1720635268881?tenantId=6fdb5200-3d0d-4a8a-b036-d3685e359adc&groupId=aadf267c-d6ab-4c8c-9cff-e574713575e6&parentMessageId=1720632611866&teamName=External%3A Team Osprey&channelName=Dev Chat&createdTime=1720635268881

I will check it this morning @Dianadec , thanks for the reminder.

Confirmed that this is an invalid bug. Users cannot book passes just by setting the computer time as described by the user. Users cannot get past to the user information form and complete the booking.
But, if the user sets their computer time as described, then they have the option to select the date in advance and select the facility bit early so they have less steps to do when the booking window is actually open giving them a head start.

Closing issue as per discussion on Jul 12.


Use .NET Standard

Pablo.dll should use .NET Standard to make it more compatible

Done! woo.

Done! woo.


Polarion Connector For Jenkins

Repository URL
https://github.com/nagasagar/polarion-plugin
New Repository Name
polarion-plugin
Description
This plugin provides options to, Publish test results to Polarion and Change the status of WorkItem In Polarion.
GitHub users to have commit permission
@nagasagar
Jenkins project users to have release permission
nagasagar
Issue tracker
Jira

Security audit, information and commands
The security team is auditing all the hosting requests, to ensure a better security by default.
This message informs you that a Jenkins Security Scan was triggered on your repository.
It takes ~10 minutes to complete.
Commands
The bot will parse all comments, and it will check if any line start with a command.
Security team only:

/audit-ok => the audit is complete, the hosting can continue :tada:.
/audit-skip => the audit is not necessary, the hosting can continue :tada:.
/audit-findings => the audit reveals some issues that require corrections :pencil2:.

Anyone:

/request-security-scan => the findings from the Jenkins Security Scan were corrected, this command will re-scan your repository :mag:.
/audit-review => the findings from the audit were corrected, this command will ping the security team to review the findings :eyes:.
	It's only applicable when the previous audit required changes.

Only one command can be requested per comment.

(automatically generated message, version: 1.31.74)

The Jenkins Security Scan discovered 9 finding(s) :mag:.
For every identified issue, please do one of the following:

Implement the recommended fix to address the issue.
If you think it's a false positive, suppress the warning directly within the code.
Alternative, you write an explanation here about why you think it's irrelevant. That will require a manual review, leading to a slower process.

After addressing the findings through one of the above methods:

If all modifications have been made to the code, please initiate a new security scan by triggering the /request-security-scan command.
If there are any unresolved findings (those not corrected or suppressed), request a review from the Jenkins security team by using the /audit-review command.

Stapler: Missing POST/RequirePOST annotation
You can find detailed information about this finding here.
PolarionNotifier.java#278
Potential CSRF vulnerability: If DescriptorImpl#doCheckTestResults connects to user-specified URLs, modifies state, or is expensive to run, it should be annotated with @POST or @RequirePOST

PolarionNotifier.java#254
Potential CSRF vulnerability: If DescriptorImpl#doCheckProject connects to user-specified URLs, modifies state, or is expensive to run, it should be annotated with @POST or @RequirePOST

PolarionNotifier.java#227
Potential CSRF vulnerability: If DescriptorImpl#doTestConnection connects to user-specified URLs, modifies state, or is expensive to run, it should be annotated with @POST or @RequirePOST

PolarionWorkItemStatusUpdateBuilder.java#79
Potential CSRF vulnerability: If BuilderDescriptor#doCheckWorkItem connects to user-specified URLs, modifies state, or is expensive to run, it should be annotated with @POST or @RequirePOST

Stapler: Missing permission check
You can find detailed information about this finding here.
PolarionNotifier.java#278
Potential missing permission check in DescriptorImpl#doCheckTestResults

PolarionNotifier.java#254
Potential missing permission check in DescriptorImpl#doCheckProject

PolarionNotifier.java#227
Potential missing permission check in DescriptorImpl#doTestConnection

PolarionWorkItemStatusUpdateBuilder.java#79
Potential missing permission check in BuilderDescriptor#doCheckWorkItem

Jenkins: Plaintext password storage
You can find detailed information about this finding here.
PolarionNotifier.java#143
Field should be reviewed whether it stores a password and is serialized to disk: token

/hosting re-check

/audit-review

/hosting re-check

Your plugin doesn't support pipeline jobs, at least the Notifier is limited to AbstractBuild

Hi, yes this plugin currently supports only a freestyle project
On Thu, 21 Nov 2024 at 3:00 AM, Markus Winter @.***>
wrote:

Your plugin doesn't support pipeline jobs, at least the Notifier is
limited to AbstractBuild
—
Reply to this email directly, view it on GitHub
https://github.com/jenkins-infra/repository-permissions-updater/issues/4186#issuecomment-2489578213,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZ7NDISBHH3PKJY3MOWWWL2BT5O5AVCNFSM6AAAAABSFCSYQKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOBZGU3TQMRRGM
.
You are receiving this because you authored the thread.Message ID:
<jenkins-infra/repository-permissions-updater/issues/4186/2489578213@
github.com>

Without pipeline support I guess you will not find many users for your plugin. Pipeline is the de facto standard nowadays.
Adding pipeline support is quite easy, just implement https://javadoc.jenkins.io/jenkins/tasks/SimpleBuildStep.html in the Notifier
Also add @Symbol annotations to the Descriptors to define names for the steps you can use in a pipeline script.

/hosting re-check

/hosting re-check

@mawinter69 Could you  check now please.

The Jenkins Security Scan discovered 5 finding(s) :mag:.
For every identified issue, please do one of the following:

Implement the recommended fix to address the issue.
If you think it's a false positive, suppress the warning directly within the code.
Alternative, you write an explanation here about why you think it's irrelevant. That will require a manual review, leading to a slower process.

After addressing the findings through one of the above methods:

If all modifications have been made to the code, please initiate a new security scan by triggering the /request-security-scan command.
If there are any unresolved findings (those not corrected or suppressed), request a review from the Jenkins security team by using the /audit-review command.

Stapler: Missing POST/RequirePOST annotation
You can find detailed information about this finding here.
PolarionNotifier.java#323
Potential CSRF vulnerability: If DescriptorImpl#doCheckTestResults connects to user-specified URLs, modifies state, or is expensive to run, it should be annotated with @POST or @RequirePOST

PolarionNotifier.java#299
Potential CSRF vulnerability: If DescriptorImpl#doCheckProject connects to user-specified URLs, modifies state, or is expensive to run, it should be annotated with @POST or @RequirePOST

PolarionNotifier.java#271
Potential CSRF vulnerability: If DescriptorImpl#doTestConnection connects to user-specified URLs, modifies state, or is expensive to run, it should be annotated with @POST or @RequirePOST

PolarionWorkItemStatusUpdateBuilder.java#82
Potential CSRF vulnerability: If BuilderDescriptor#doCheckWorkItem connects to user-specified URLs, modifies state, or is expensive to run, it should be annotated with @POST or @RequirePOST

Stapler: Missing permission check
You can find detailed information about this finding here.
PolarionWorkItemStatusUpdateBuilder.java#82
Potential missing permission check in BuilderDescriptor#doCheckWorkItem

https://github.com/nagasagar/polarion-connector-plugin/blob/e3aed456acebea53665237f35bfe9add82f036df/src/main/java/io/jenkins/plugins/polarionPlugin/PolarionNotifier.java#L270 should not be suppressed. This looks like it implements a server-side request forgery. Both CSRF protection and permission check are needed.
Less sure about https://github.com/nagasagar/polarion-connector-plugin/blob/e3aed456acebea53665237f35bfe9add82f036df/src/main/java/io/jenkins/plugins/polarionPlugin/PolarionNotifier.java#L298 and https://github.com/nagasagar/polarion-connector-plugin/blob/e3aed456acebea53665237f35bfe9add82f036df/src/main/java/io/jenkins/plugins/polarionPlugin/PolarionWorkItemStatusUpdateBuilder.java#L82 but if this service ever implements some sort of spam protection, lack of CSRF protection and permission check can lock out the Jenkins instance. No reason not to add these.
https://github.com/nagasagar/polarion-connector-plugin/blob/e3aed456acebea53665237f35bfe9add82f036df/src/main/java/io/jenkins/plugins/polarionPlugin/PolarionNotifier.java#L322 allows users without Job/Workspace permission to check whether a given pattern matches workspace contents. Please add a permission check here.

/request-security-scan

https://github.com/nagasagar/polarion-connector-plugin/blob/16558c5a16d319a0b0a6a3f80823e76d2437702c/src/main/java/io/jenkins/plugins/polarionPlugin/PolarionNotifier.java#L328 is probably wrong. Check for Item.WORKSPACE on the project if not null.
Similarly, doCheckWorkItem and doCheckProject should require Item/Configure on the job.
doTestConnection seems correct, as the UI is part of the global configuration.

/request-security-scan

The Jenkins Security Scan did not find anything dangerous with your plugin, congratulations! :tada:

:bulb: The Security team recommends that you are setting up the scan in your repository by following our guide.

/request-security-scan

The Jenkins Security Scan did not find anything dangerous with your plugin, congratulations! :tada:

:bulb: The Security team recommends that you are setting up the scan in your repository by following our guide.

💡 The Security team recommends that you are setting up the scan in your repository by following our guide.
Hi,
is this step mandatory for hosting ?

I think the only workflow that we consider as mandatory is to have the Jenkinsfile so that the plugin is in the community CI.
Of course, it's good to have the others: dependency update manager (dependabot, renovate or updatecli), release note generation (release-drafter) or even the continuous delivery one (cd).
I'd recommend also to remove the plugin folder on the repository. Git shouldn't be used to store the binaries.

@alecharp removed binaries and added jenkinsfile

it seems that some of Daniel's comment were not addressed. Please check those.

The method perform( AbstractBuild build, ...) https://github.com/nagasagar/polarion-connector-plugin/blob/d9add8e0b6db2e4de5aa22b857ea481ab26987b4/src/main/java/io/jenkins/plugins/polarionPlugin/PolarionNotifier.java#L139 can be removed. It will never be called as you have the more generic method that supports Run

I think the method should be called doCheckTestResultsXml as the field is called testResultsXml https://github.com/nagasagar/polarion-connector-plugin/blob/d9add8e0b6db2e4de5aa22b857ea481ab26987b4/src/main/java/io/jenkins/plugins/polarionPlugin/PolarionNotifier.java#L329


ON CONFLICT is not placed onto it's own line

Current formatting:
INSERT INTO
  users (name, email)
VALUES
  ($1, $2) ON CONFLICT (email) DO
UPDATE
SET
  name = $1

Proposed:
INSERT INTO
  users (name, email)
VALUES
  ($1, $2)
ON CONFLICT (email) DO UPDATE
SET
  name = $1

@lucacasonato Is the following output okay?
INSERT INTO
    users (name, email)
VALUES
    ($1, $2)
    ON CONFLICT (email) DO UPDATE
SET
    name = $1

I think one less indent would be better on that:
INSERT INTO
    users (name, email)
VALUES
    ($1, $2)
ON CONFLICT (email) DO UPDATE
SET
    name = $1


Auto import suggestions should prefer subpath export over relative imports

🔎 Search Terms

relative imports
workspaces
monorepo
subpath export

🕗 Version & Regression Information

This is the behavior in every version I tried, and I reviewed the FAQ for entries about auto imports and subpath exports.

⏯ Playground Link
No response
💻 Code
Full reduced test case: https://github.com/OliverJAsh/typescript-auto-imports-exports
Contents inlined below. TLDR:

Two workspaces, packages/a and packages/b.
packages/b depends on packages/a.

Root files:
tsconfig.json:
{
  "compilerOptions": {
    "strict": true,
    "noEmit": true,
    "target": "ESNext",
    "module": "Node16",
    "moduleResolution": "Node16"
  }
}

package.json:
{
  "private": true,
  "dependencies": {
    "typescript": "^5.5.4"
  },
  "workspaces": [
    "packages/a",
    "packages/b"
  ],
  "packageManager"<EMAIL_ADDRESS>}

Package a:
packages/a/package.json:
{
  "name": "a",
  "private": true,
  "exports": {
    "./test": "./module.ts"
  }
}

packages/a/module.ts:
export const a = 1;

packages/a/other-module.ts:
// Try to import this
// Auto import uses a relative path here: `./module` ❌
a;

Package b:
packages/b/package.json:
{
  "name": "b",
  "private": true,
  "dependencies": {
    "a": "workspace:^"
  }
}

packages/b/module.ts:
// Try to import this
// Auto import works correctly here: `a/test` ✅
a;

🙁 Actual behavior

The auto import suggestion in packages/b/other-module.ts uses the subpath export defined in packages/a/package.json. The suggested import path is a/test. ✅
The auto import suggestion in packages/a/other-module.ts does not use the subpath export defined in packages/a/package.json. Instead it uses a relative import. The suggested import path is ./module.

It seems that TypeScript is not using the subpath export information for self-referencing imports.
🙂 Expected behavior
In both cases I would expect the subpath export to be used (rather than relative imports), otherwise you can end up with some verbose relative paths in the case of projects with deeply nested folders.
I would expect TypeScript to only use a relative import if a subpath export is not available.
Additional information about the issue
No response

I’ve never seen a project that exclusively uses self-name imports, and this is the first request for it I’ve heard in the years that we’ve supported package.json "exports". I think it’s something we should support, but only under "importModuleSpecifierPreference": "non-relative". Do you have any examples of projects in the wild (other than your own) that never use relative imports (and don’t use tsconfig "paths")?

Do you have any examples of projects in the wild (other than your own) that never use relative imports (and don’t use tsconfig "paths")?

I'm afraid I don't.
We never had this problem when we used paths previously. This problem only became apparent after we migrated away from paths towards subpath exports (because it's standard + more tools support it).

exclusively uses self-name imports,

We do use relative imports in some cases where it makes sense. For example, if we have a package containing React components, the public exports would be the components, but each component module may use relative imports for private things e.g. to import a sibling CSS or helper file.


Is Server side API and Web/SDK supported?

Issue in ./help/data-prep/upserts.md
The document outlines that the HTTP API is supported for data prep. But is the server side API and Edge Web SDK also supported?

Thank you for submitting this issue. We will review the documentation and make the necessary updates as quickly as possible. Tracking internally in PLAT-124066.

We've reviewed the documentation and updated the limitations section of the upserts document to note that upserts currently do not support SDKs. Closing the issue.


Add API for AJAX requests

Nice! I'm waiting for it. =)

This seems like it already exists in domafic::web_render::HttpRequest, no? Example.

@beatgammit Yep! There are some improvements I want to make, but those can be tracked separately. I think it makes sense to close this issue.


fix(nodebuilder): increase start timeout

Was originally for debugging purposes but actually solved the issue. The bootstrapper with a corrupted DAGstore state was not able to start quickly enough.
Ideally, we should make this value configurable(https://github.com/celestiaorg/celestia-node/issues/2126)

So this actually fixed bootstrapper, as it didn't have enough time to Start.

Codecov Report

Merging #2125 (276c225) into main (7f95c72) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #2125   +/-   ##
=======================================
  Coverage   55.48%   55.48%
=======================================
  Files         209      209
  Lines       13324    13324
=======================================
  Hits         7393     7393
+ Misses       5188     5187    -1
- Partials      743      744    +1

Impacted Files
Coverage Δ

nodebuilder/node.go
60.31% <ø> (ø)

... and 3 files with indirect coverage changes
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Adds mention of selectCursor to java API documentation page.

From the API documentation it was not clear that it is possible to use selectCursor to fetch data.
This PR fixes that omission.

Thanks again!


Pin capacitor dependencies so building still works

Seems it tries to install @capacitor/core@3, which uses import type {} from "" syntax, which TypeScript 3.2, the version it's pinned to, doesn't support.

Closing as stale
Also switching to capacitor 3.0 now.


kvstore: switch to kvstore v2 hostcalls

This doesn't expose any new API surface but does switch the kvstore backend hostcalls to the v2 API.

Merging.  Will put up a second PR to expand the API surface to include the new v2 features.


color option

a color range should be added based on a range; e.g. take a base color in hex -> create n colors between a lower and upper lighting bound based on the color

Repo isn't maintained anymore; closing!


Add XAML control file template

About the PR
Coding a XAML control no longer requires you to type at 300 WPM
Screenshots
https://user-images.githubusercontent.com/10968691/185763770-8c95bc9f-2f83-469b-b003-6ddfd4bf3c14.mp4

BASED

This is going to make my life so much easier 🙏


Add Google Analytics support

Specify a Google Analytics Tracking ID in the app-config.yaml to enable Google Analytics tracking.
app:
  title:
  baseUrl:
  googleAnalyticsTrackingId: UA-87354845-4

If the googleAnalyticsTrackingId is not supplied, no tracking script is added to the application and no tracking can occur.

[ ] A changeset describing the change and affected packages. (more info)
[ ] Added or updated documentation
[ ] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)

Forgot to update the Helm charts. More code coming.

hey! you may wanna rebase this on latest master since the e2e tests have been fixed recently

@freben I think I am on latest rebase. Hopefully it passes now. 🤞

I accidentally deleted the branch with closed the PR. 🙏  GitHub for keeping the backup branch 😂 . This is ready to merge now.


Ban/Soft_Delete System.

General:

[ ] When a user is banned or the account has been soft_deleted, display a note alongside the user identification on posts and comments.

Ban

[ ] Allow a user to log in during all bans. While banned is set to true, the user can only do the actions allowed during the type of ban.
[ ] is_banned should be set to false when banned_date is today's date. Then, set banned_date to nil in order to clear the system of useless data.

First Ban

[ ] User can control his/her profile, create comments and posts during the ban. However, all other functionalities are blocked.

Second Ban

[ ] User can control his/her profile, and create comments. However, all other functionalities including creating posts are blocked.

Third Ban

[ ]  User can control his/her profile for the duration of the ban.

Fourth Ban (Final One)

[ ]  User can control his/her profile for the duration of the ban. Aso, show a message that the user is banned permanently. A note can be posted that shows the permanent ban and instructions to contact admins if the person wants to contest the final ban.

Soft_Delete

[ ] Allow user reactivation on another route? or render something on the login?

Previous Ban system idea:
General:

[ ] When a user is banned or the account has been soft_deleted, display a note alongside the user identification on posts and comments.

Ban

[ ] Allow a user to log in during all bans. While banned is set to true, the user can only do the actions allowed during the type of ban.
[ ] is_banned should be set to false when banned_date is today's date. Then, set banned_date to nil in order to clear the system of useless data.

First Ban

[ ] User can control his/her profile, create comments and posts during the ban. However, all other functionalities are blocked.

Second Ban

[ ] User can control his/her profile, and create comments. However, all other functionalities including creating posts are blocked.

Third Ban

[ ]  User can control his/her profile for the duration of the ban.

Fourth Ban (Final One)

[ ]  User can control his/her profile for the duration of the ban. Aso, show a message that the user is banned permanently. A note can be posted that shows the permanent ban and instructions to contact admins if the person wants to contest the final ban.

Soft_Delete

[ ] Allow user reactivation on another route? or render something on the login?


use cast() where we can

cast() removes the qualifiers from an expression's type.

@Herringway Unqual isn't recursive either (I'll make a PR to update its docs). Unqual!(const(char)[]) is const(char)[] too.

@Herringway Unqual isn't recursive either (I'll make a PR to update its docs). Unqual!(const(char)[]) is const(char)[] too.

There were instances of (Unqual!T)[] being changed in the initial commit. That is no longer the case.

@Herringway you are right, and I fixed those cases.


bower support

we can use this: https://github.com/bower/registry-client

Landed as #5

Thanks @david-driscoll! :+1:


PHPStan: add bootstrap file

Follow up on #175, but now for the 2.x branch.
As this branch uses some uncommon class names which PHPStan does not recognize by default, so tweaks are needed to get a passing build.

coverage: 95.833%. remained the same
when pulling b6391d6d42b33a38c298ccfc3c85205f9582c235 on JRF/2.x/add-phpstan
into 1ff5230c86c32c7e32cb2294a11d281b8aff361c on 2.x.


PA2 calling Nothing

While doing my PA2, I had trouble trying to call Nothing and printing it onto flatMap for the put(S s) method. Any help is appreciated.
My code:

Is your Nothing a function?

Is your Nothing a function?

A class actually. Here's my implementation:

I think you should just take in a Function into the method call, so it should just be
return new StateM<>(newF).
Assuming your constructor takes in a method.

Yup thats what i did too

The issue is, your nothing( ) method is a static method under the Nothing class. In order to call it, you need to write which class this nothing( ) method comes from. Basically, Nothing n = Nothing.nothing( ). this way java knows your static nothing( ) method is from the Nothing class and will be able to call the method. This change should fix your code.

Did you solve it @hadyamanisanto? If so, you may close the issue now. Thanks.

finals is over you can close this issue


tf.sub and tf.mul changes

This is an update the existing PR https://github.com/chiphuyen/tf-stanford-tutorials/pull/5

Thanks for the pull request. This chatbot was written using TF 0.12, and I'd love to update it to TF 1.0, but then I'll have to update more than just tf.mul() and tf.sub(). I'll do it when I have time :-)

Thanks for your contribution. I've updated the code.


Add @javax.annotations.Generated to Java generators

Contributing to Twilio

All third-party contributors acknowledge that any contributions they provide will be made under the same open-source license that the open-source project is provided under.

[x] I acknowledge that all my contributions will be made under the project's license.

Codecov Report

Merging #793 into master will increase coverage by 0.04%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #793      +/-   ##
==========================================
+ Coverage   82.80%   82.85%   +0.04%
==========================================
  Files          73       73
  Lines        5404     5419      +15
  Branches      146      147       +1
==========================================
+ Hits         4475     4490      +15
  Misses        929      929

Impacted Files
Coverage Δ

...guardrail/generators/Java/SpringMvcGenerator.scala
22.66% <ø> (ø)

...il/generators/Java/DropwizardServerGenerator.scala
95.23% <100.00%> (+0.02%)
:arrow_up:

...o/guardrail/generators/Java/JacksonGenerator.scala
95.03% <100.00%> (+0.01%)
:arrow_up:

...ardrail/generators/Java/SerializationHelpers.scala
100.00% <100.00%> (ø)

.../com/twilio/guardrail/generators/syntax/Java.scala
75.53% <100.00%> (+1.29%)
:arrow_up:

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 8d6c357...833f7b0. Read the comment docs.

Do IDEs/linters/other tools do anything useful with this?  I like the idea of doing this for completeness, but since it requires users to add yet another dependency, I'd rather not unless there's a clear user-facing benefit.

Most code coverage analyzers will ignore anything with that annotation. SonarQube for example won't factor in any generated code for coverage metrics.

Ah, that's really useful then.

Most code coverage analyzers will ignore anything with that annotation. SonarQube for example won't factor in any generated code for coverage metrics.
That was exactly the reason of this PR. Now we have to manually exclude Guardrail-generated code to jacoco excludes.

javax.annotations:javax.annotation-api dependency is required for JDK9+ only.
BTW, the Guardrail's missing feature is a target JVM version flag or understanding "maven.compiler.source" property.
If the flag was be present then no dependency would be needed. Depending on the java version either @javax.annotations.Generated (<=JDK8) or @javax.annotation.processing.Generated annotations should be used.

BTW, the Guardrail's missing feature is a target JVM version flag or understanding "maven.compiler.source" property.

It's possible to handle this using guardrail's module system, but I don't think it's worth it just for <=8, especially since it'll still work with 8 and below by adding the extra dependency.

I'm a little confused, though.  You're using @javax.annotations.Generated, but that will only work on JDK 8 and below?  And for JDK 9 and above you need to use @javax.annotation.processing.Generated?  If so, that's a blocker; we can't stop supporting 9 and above.

It's not a blocker. For 9 and above customers have to add extra dependency as the annotation has moved. For 8 and below - no need for javax.annotations api dependency.

It's possible to handle this using guardrail's module system, but I don't think it's worth it just for <=8, especially since it'll still work with 8 and below by adding the extra dependency.

No, we need a dependency for 9+

i guess the idea here is to use java8 annotation. if you're building for jdk >8 you have to import a lib which has old 1.8 annotations, and yes, in new java they moved in to separate namespace
i think this is a stuff that we have to be diligent about since
a) odd library from old jdk8 makes guardrail jdk8 aware/specific.
b) jdk8 lib may interfere with some existing code that may use jdk9+ namespace

Codecov Report

Merging #793 (1fe1dc1) into master (0dc7341) will increase coverage by 0.03%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #793      +/-   ##
==========================================
+ Coverage   82.82%   82.85%   +0.03%
==========================================
  Files          73       73
  Lines        5409     5419      +10
  Branches      148      147       -1
==========================================
+ Hits         4480     4490      +10
  Misses        929      929

Impacted Files
Coverage Δ

...guardrail/generators/Java/SpringMvcGenerator.scala
22.66% <ø> (ø)

...il/generators/Java/DropwizardServerGenerator.scala
95.23% <100.00%> (+0.02%)
:arrow_up:

...o/guardrail/generators/Java/JacksonGenerator.scala
95.03% <100.00%> (+0.01%)
:arrow_up:

...ardrail/generators/Java/SerializationHelpers.scala
100.00% <100.00%> (ø)

.../com/twilio/guardrail/generators/syntax/Java.scala
75.53% <100.00%> (+0.35%)
:arrow_up:

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 e098c81...944ba98. Read the comment docs.


Create Circuit scaffold as a new Substrate Pallet

Description
Create Substrate Pallet for Circuit maintainers. Implement methods for code execution which receives composable smart contracts and execution schedule. Integrate dispatch & watch functionalities from subxt in order to exchange messages with Gateways.
Acceptance Criteria

implement new Circuit pallet with composable_execute method
decode execution_schedule from JSON; support multiple execution types: transfer-only, volatile-execution, static-call, side-effects call, side-effects execution
set up unit tests for Circuit
create new FRAME-based Substrate node demo-circuit-runtime from template with Circuit pallet installed
set up integration tests for Circuit - dispatch composable smart contracts over API of demo-circuit-runtime

Closed by #28


Disable distribution of rank-expression files.

@hmusum PR

@aressem FYI, this needs to be included in next release (7.409.x)


Creating units quickly using HTTP API is causing units to fail to launch

This is a lot like #1079 and #997 but I wanted to give another datapoint if it helps as the situation is a little different, but the issue seems to manifest the same.  This is in Vagrant on CoreOS alpha (593.0.0).
I am doing 3 PUTs quickly:
PUT<EMAIL_ADDRESS>PUT<EMAIL_ADDRESS>PUT<EMAIL_ADDRESS>
When I do this, rarely do all units come up.  Usually I see a similar error to those other mentioned issues that looks something like Failed to trigger systemd unit<EMAIL_ADDRESS>start: Unit<EMAIL_ADDRESS>failed to load: No such file or directory.
Here's some info from my journal that seems suspect:
Feb 20 10:07:59 deployster fleetd[548]: INFO engine.go:272: Scheduled<EMAIL_ADDRESS>to Machine(75f8fc8356be438fae39cc3fe46ea7f5)
Feb 20 10:07:59 deployster fleetd[548]: INFO reconciler.go:163: EngineReconciler completed task: {Type: AttemptScheduleUnit, JobName<EMAIL_ADDRESS>MachineID: 75f8fc8356be438fae39cc3fe46ea7f5, Reason: "target state launched and unit not scheduled"}
Feb 20 10:07:59 deployster fleetd[548]: INFO engine.go:272: Scheduled<EMAIL_ADDRESS>to Machine(75f8fc8356be438fae39cc3fe46ea7f5)
Feb 20 10:07:59 deployster fleetd[548]: INFO reconciler.go:163: EngineReconciler completed task: {Type: AttemptScheduleUnit, JobName<EMAIL_ADDRESS>MachineID: 75f8fc8356be438fae39cc3fe46ea7f5, Reason: "target state launched and unit not scheduled"}
Feb 20 10:07:59 deployster fleetd[548]: INFO engine.go:272: Scheduled<EMAIL_ADDRESS>to Machine(75f8fc8356be438fae39cc3fe46ea7f5)
Feb 20 10:07:59 deployster fleetd[548]: INFO reconciler.go:163: EngineReconciler completed task: {Type: AttemptScheduleUnit, JobName<EMAIL_ADDRESS>MachineID: 75f8fc8356be438fae39cc3fe46ea7f5, Reason: "target state launched and unit not scheduled"}
Feb 20 10:08:02 deployster fleetd[548]: INFO manager.go:262: Writing systemd unit<EMAIL_ADDRESS>(720b)
Feb 20 10:08:02 deployster fleetd[548]: INFO manager.go:198: Instructing systemd to reload units
Feb 20 10:08:02 deployster systemd[1]: Reloading.
...
Feb 20 10:08:03 deployster fleetd[548]: INFO manager.go:262: Writing systemd unit<EMAIL_ADDRESS>(720b)
Feb 20 10:08:03 deployster fleetd[548]: INFO reconcile.go:321: AgentReconciler completed task: type=LoadUnit<EMAIL_ADDRESS>reason="unit scheduled here but not loaded"
...
Feb 20 10:08:03 deployster fleetd[548]: INFO manager.go:134: Triggered systemd unit<EMAIL_ADDRESS>start: job=9747
Feb 20 10:08:03 deployster fleetd[548]: INFO reconcile.go:321: AgentReconciler completed task: type=StartUnit<EMAIL_ADDRESS>reason="unit currently loaded but desired state is launched"
Feb 20 10:08:03 deployster systemd[1]: Starting hello-world...
Feb 20 10:08:03 deployster systemd[1]: Started Update CA bundle at /etc/ssl/certs/ca-certificates.crt.
Feb 20 10:08:03 deployster fleetd[548]: INFO manager.go:262: Writing systemd unit<EMAIL_ADDRESS>(720b)
Feb 20 10:08:03 deployster fleetd[548]: INFO reconcile.go:321: AgentReconciler completed task: type=LoadUnit<EMAIL_ADDRESS>reason="unit scheduled here but not loaded"
Feb 20 10:08:03 deployster fleetd[548]: ERROR manager.go:136: Failed to trigger systemd unit<EMAIL_ADDRESS>start: Unit<EMAIL_ADDRESS>failed to load: No such file or directory.
Feb 20 10:08:03 deployster fleetd[548]: INFO reconcile.go:321: AgentReconciler completed task: type=StartUnit<EMAIL_ADDRESS>reason="unit currently loaded but desired state is launched"
Feb 20 10:08:03 deployster fleetd[548]: INFO reconcile.go:321: AgentReconciler completed task: type=LoadUnit<EMAIL_ADDRESS>reason="unit scheduled here but not loaded"
Feb 20 10:08:03 deployster fleetd[548]: ERROR manager.go:136: Failed to trigger systemd unit<EMAIL_ADDRESS>start: Unit<EMAIL_ADDRESS>failed to load: No such file or directory.
Feb 20 10:08:03 deployster fleetd[548]: INFO reconcile.go:321: AgentReconciler completed task: type=StartUnit<EMAIL_ADDRESS>reason="unit currently loaded but desired state is launched"

Its possible that I am using the HTTP API incorrectly to launch 3 units of the same application, so guidance there would be appreciated if there's a better way to do this.

It seems like one of the 3 will launch and the other 2 will fail, but I don't see a pattern for which fail or succeed.  I've tried adding a 5 second sleep in-between the calls thinking that might help, but I see the same thing.

I've tried this on the latest stable as well (557.2.0) and still get the same thing.  Any hints if I'm doing something wrong or if I should keep digging somewhere else?

Seeing something similar to this issue on 557.2.0. I've got a few units that will fail to start about 50% of the time. I've got a script that demonstrates the issue pretty consistently:
https://gist.github.com/bdehamer/9c5303f7ef9d463a9134
This script goes into a loop and simply destroys, submits, loads, and starts the units over-and-over (you need the Fleet API bound to TCP port 49153 for the script to work). Things usually run fine the first time through, but will fail on the second execution with a not-found error:
core@core-01 ~/dev $ fleetctl status DB.service
● DB.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead) since Mon 2015-02-23 16:29:25 UTC; 10s ago
 Main PID: 5605 (code=exited, status=0/SUCCESS)

I'm glad to hear I'm not the only one having this issue.  I do have some more notes on when this fails and a workaround I've been using.  I've been doing a lot of testing of switching between two versions of an application and making sure I can bring up a new version with zero downtime.  I'm doing it with the API, but I've replicated what I'm doing by using fleetctl and this pretty consistently triggers the issue:
$ fleetctl start<EMAIL_ADDRESS># all units start properly, only ee0f771 running
$ fleetctl start<EMAIL_ADDRESS># all units start properly, ee0f771 and 0fbb804 running
$ fleetctl destroy<EMAIL_ADDRESS># all units destroy properly, only 0fbb804 running
$ fleetctl start<EMAIL_ADDRESS># some units fail to start (usually 1 works, 2 fail)

In this example, I'm switching between two versions of hello-world (ee0f771 and 0fbb804) and using a naming convention to keep the unit names straight.  The failure that occurs is the same as the log above (fleetd triggers a systemd reload after 1 unit file is loaded and then the other 2 fail to be found).
If I switch and do this, I don't ever see any units fail to load (making sure to rename the unit file on disk between the changes):
$ fleetctl start<EMAIL_ADDRESS># all units start properly, only ee0f771 running
$ fleetctl start<EMAIL_ADDRESS># all units start properly, ee0f771 and 0fbb804 running
$ fleetctl destroy<EMAIL_ADDRESS># all units destroy properly, only 0fbb804 running
$ fleetctl start<EMAIL_ADDRESS># some units fail to start (usually 1 works, 2 fail)

Basically, if I don't use the same name over again and introduce a timestamp to the end of the unit name, I don't ever see any units fail to load.
Is this expected and should I be doing this a different way?  Here's a gist with my unit files that can be used to reproduce this.  Again, I'm using Vagrant with latest alpha and just one node.

Oops, my second (correct) example had a small copy/paste error.  I've edited the above message and its correct now.

I can confirm this same issue on CoreOS stable (557.2.0)

Thanks @bmorton for your timestamp workaround.
I've been using it in my environment and the issues disappeared.

I am seeing the same issue, a timestamp does work around the problem, however when I look at systemctl list-unit-files, I still see the old files hanging around:
<EMAIL_ADDRESS>                                             enabled
<EMAIL_ADDRESS>                                             enabled
<EMAIL_ADDRESS>                                             enabled
<EMAIL_ADDRESS>                                             enabled
<EMAIL_ADDRESS>                                             enabled
<EMAIL_ADDRESS>                                             enabled
<EMAIL_ADDRESS>                                             enabled

Fleet is not properly removing the files from the system, so if they are the same name, it causes the issue we are seeing.

@bmorton setting KillMode=none seems to have solved this for me.

I am seeing the same issue. Every other submit/start/destroy cycle fails with the No such file or directory error. I was able to narrow it down to fleet 0.9.0. Fleet 0.8.3 does not have this problem. This issue is probably the same thing https://github.com/coreos/fleet/issues/1144

I just filed #1149 which may be a duplicate of this and #1137.  #1149 hopefully adds some value with steps to reproduce.

@bmorton the fact that you are using the fleet API is likely a red herring. I suspect this is the same as #1158

:+1: I'll track that issue instead.  Thanks!

I'm also running into same issue while creating and starting fleet units VIA fleet API. Is there a work around for this issue?
Looks like fleet is only able to start three units. If I remove one unit it will pick up the next unit and start. See below for out put for fleetctl logs and systemctl .
$ fleetctl list-unit-files | grep 'twitter_nsq_producer_test'
<EMAIL_ADDRESS>        ade9947 launched        launched        d422662c.../<IP_ADDRESS>
<EMAIL_ADDRESS>        ade9947 launched        inactive        -
<EMAIL_ADDRESS>        ade9947 launched        inactive        -
<EMAIL_ADDRESS>        ade9947 launched        launched        s3f6338c.../<IP_ADDRESS>
<EMAIL_ADDRESS>        ade9947 launched        inactive        -
<EMAIL_ADDRESS>        ade9947 launched        launched        1a42863e.../<IP_ADDRESS>
$ systemctl list-unit-files | grep 'twitter_nsq_producer_test'
<EMAIL_ADDRESS>enabled
<EMAIL_ADDRESS>enabled
<EMAIL_ADDRESS>enabled
<EMAIL_ADDRESS>enabled
<EMAIL_ADDRESS>enabled


When changing the theme on the fly, a css class disappears from the DOM

So we have a button in our app to change the theme on the fly (using <MuiThemeProvider theme={muiTheme}> and muiTheme comes from the root component's state), and this generally works fine. However there is one component which has the following style:
const styles = ({
  palette: {
    firstColumn,
    secondary: { light }
  }
}: any) =>
  createStyles({
    main: {
      backgroundColor: '#d9d9d9',
      height: '100%',
      width: '100%'
    },

      <Map
        animation={animation}
        innerRef={ref}
        className={classes.main}
        onViewChange={interactive ? this.onViewChange : undefined}
        view={this.state.view}
      >
        <TileLayer source={this.source} />
        {data ? <VectorLayer layerStyle={this.layerStyle} data={data} /> : null}
      </Map>

The first time the css class is generated correctly in the DOM:
.OrderEntryMap-main-794 {
    width: 100%;
    height: 100%;
    background-color: #d9d9d9;
}

But when we change the theme, the className is still there on the div but the css class is totally vanished.
Any ideas on where to start looking or where the problem might be?
This is using 4.2.0.
We have disableGlobal set to true in our createGenerateClassName call.
TIA

Do you have a reproduction?

@oliviertassinari I will try and make a reproducible test case soon, hopefully it is reproducible outside of our app

@bartvde Thanks, I'm closing for now.


SAML2ClientLogoutAction Fix - Use Specific SAML2 Client [branch 5.1.x]

Hello!
We encountered a little issue with the SAML2 Client Logout Action with PAC4J. This pull request should fix it for CAS 5.1.
The action took a random (any) SAML2 client from all PAC4J clients. This worked fine if there were
exactly 1 SAML2 client in the system and just this client was used. However, it did not work if no PAC4J client was used (standard login) or if there were more than 1 SAML2 client.
Now, the SAML2ClientLogoutAction now takes into account the currently used PAC4J client, which is resolved from the PAC4J user profile.
To test:

Configure CAS with PAC4J and at least 2 different SAML2 clients
Log in using SAML
Log out
The logout should take you to the correct IdP server (provided it supports single logout)
Log in without SAML
Log out
You should end on the CAS Logout screen. You should not be redirected anywhere (this was happening with more SAML clients configured but not used for login).

Assumption:

The PAC4J user profile should be in the user session during logout, accessible with PAC4J Profile Manager. Currently this is not true but can be achieved, we already have working code for that; we will discuss it with PAC4J developers, as suggested on the CAS DEV list.

If something is unclear, please ask, I'll be glad to answer.
Thank you!

Excellent. Could you please post the same batch to master as well?

Yes, sure, it should appear shortly.
I have also fixed a CheckStyle warning and added little JavaDoc.

Hi Misagh, the corresponding PR for the master branch is #2970.

Thank you!


Adding more authors to vSphere Plugin

Description
Requesting access for more authors to the vSphere Plugin
Submitter checklist for changing permissions

[x] GitHub Repo: https://github.com/jenkinsci/vsphere-cloud-plugin
[x] Make sure the file is created in permissions/ directory
[x] artifactId (pom.xml) is used for name (permissions YAML file).
[x] groupId / artifactId (pom.xml) are correctly represented in path (permissions YAML file)
[x] Check that the file is named plugin-${artifactId}.yml for plugins
[x] @jswager is myself
[x] Use the Jenkins community (LDAP) account name in the YAML file, not the GitHub account name
[x] All newly added users have logged in to Artifactory at least once

Sure.
I can't promise we won't have to change ownership again - like Jason, if my work changes and I no longer have access to a vSphere deployment then I'll have to hand over to someone else, but until then, yes, I'll give it a go.

The user elordahl as never logged in (last check list item), so these changes are not getting applied.


release: abi enum, docker updates, code cleanup

Included in release:

ABI Enum addition
pytest-cov for code coverage
remove commented code
add __init__.py files
update docker configurations for new docker-compose setup
abstract integration tests from unit tests for quicker testing
GQL removal of async and adding retries
remove testing folders from codecov

Lgtm


Invalid memory address or nil pointer dereference

Hi,
When starting SeaweedFS using pre-built binary (v0.94 linux_386) on Ubuntu Xenial, it ends with an invalid memory address or nil pointer dereference error.
Describe the bug
$ weed server -dir=/data

I0829 12:37:52  9413 file_util.go:20] Folder /data Permission: -rwxr-xr-x
I0829 12:37:52  9413 file_util.go:20] Folder /data Permission: -rwxr-xr-x
I0829 12:37:52  9413 master_server.go:68] Volume Size Limit is 30000 MB
I0829 12:37:52  9413 server.go:186] Start Seaweed Master 0.94 at localhost:9333
I0829 12:37:52  9413 raft_server.go:47] Starting RaftServer with localhost:9333
I0829 12:37:52  9413 raft_server.go:51] Peers Change: [] => []
I0829 12:37:54  9413 raft_server.go:75] Initializing new cluster
I0829 12:37:54  9413 raft_server.go:83] raft: Has been stopped
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0xc0f163]

goroutine 25 [running]:
github.com/chrislusf/seaweedfs/weed/server.(*MasterServer).SetRaftServer(0xc0001dab40, 0x0)
        /home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/server/master_server.go:95 +0x43
github.com/chrislusf/seaweedfs/weed/command.runServer.func2.1(0xc000192af0, 0xc000263dc0, 0xc0001dab40, 0xc000192b00)
        /home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/command/server.go:197 +0x10c
created by github.com/chrislusf/seaweedfs/weed/command.runServer.func2
        /home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/command/server.go:192 +0x407

System Setup
$ weed server -dir=/data
Expected behavior
Expecting seaweed to start properly 😊
Additional context
OS:                    Ubuntu 16.04.4 LTS
Kernel:                4.4.0-1049-aws
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 63
Model name:            Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz
Stepping:              2
CPU MHz:               2400.038
BogoMIPS:              4800.07
Hypervisor vendor:     Xen
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              30720K
NUMA node0 CPU(s):     0,1

This seems some goroutine timing issue. Is this always reproducible?

Yes, got this error everytime I start weed

Same problem with amd64 v0.94

ok. Need details on how to reproduce this, especially how to get a ubuntu instance like yours.

Hi,
I have seen the same behavior when running the latest Seaweed (1.12) on Fedora 29 Silverblue inside a container:
[root@korora-01 data]# podman start -a -i seaweed-m01
I1221 20:00:08     1 file_util.go:19] Folder /data Permission: -rwxr-xr-x
I1221 20:00:08     1 master_server.go:68] Volume Size Limit is 10 MB
I1221 20:00:08     1 master.go:80] Start Seaweed Master 1.12 at <IP_ADDRESS>:9333
I1221 20:00:08     1 raft_server.go:47] Starting RaftServer with <IP_ADDRESS>:9333
I1221 20:00:08     1 raft_server.go:51] Peers Change: [] => []
I1221 20:00:10     1 raft_server.go:75] Initializing new cluster
I1221 20:00:10     1 raft_server.go:83] raft: Has been stopped
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0xe38743]

goroutine 13 [running]:
github.com/chrislusf/seaweedfs/weed/server.(*MasterServer).SetRaftServer(0xc000260c60, 0x0)
	/home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/server/master_server.go:94 +0x43
github.com/chrislusf/seaweedfs/weed/command.runMaster.func1(0xc000186240, 0xc000260c60)
	/home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/command/master.go:91 +0xfe
created by github.com/chrislusf/seaweedfs/weed/command.runMaster
	/home/travis/gopath/src/github.com/chrislusf/seaweedfs/weed/command/master.go:87 +0x444

... and after a lot of head scratching it turned out that the solution was to please SELinux and add the "z" option to the volume binding of the container:
podman create -v /var/zones/seaweed-v01/data:/data:z --hostname ...

I "think" this is because the data folder actually is "visible" to Seaweed with a "writeable" flag ... but any write will actually fail. I did not debug the code ... but that would be my "best guess". Maybe there is an easy way to detect that if file creation fails in a weird way.

@tomi-engel Thanks a lot! Having no knowledge about podman, I would never have thought of this!
https://github.com/containers/libpod/blob/master/docs/podman-build.1.md
"The z option tells podman that two containers share the volume content. As a result, podman labels the content with a shared content label. Shared volume labels allow all containers to read/write content. "

"podman" is basically the Fedora "docker" drop-in-replacement. Since the issue seems to be related to file permissions I guess it is a "generic" (SELinux?) issue.
@franquis has "Xen" and "aws" in his system description ... so it seems to me like his Ubuntu 16.04.4 is not running on bare metal … and I suspect AWS has some "security layer" in place as well (maybe SELinux too).
But the real question is … how to detect that and "fail gracefully" with a well defined error message.
I am not really familiar with the Seaweed code base ... but I suspect an "easy" fix might be to enhance the TestFolderWritable function in the file_util.gomodule.
Maybe one could simply create a temporary file with a random name in that folder to proof that it is really writeable.
The "pure" solution might be to include a dedicated SELinux library like https://selinuxproject.org/page/NB_Userspace_Libraries ... but I would suspect that this might be too much effort.
There might also be some places in the seaweed code where file creation errors are not checked.
However, it seems like the specific crash from our logs is related to the "raft server" part
weed/command/master.go
..
		raftServer := weed_server.NewRaftServer(r, peers, myMasterAddress, *metaFolder, ms.Topo, *mpulse)
		ms.SetRaftServer(raftServer)
..

so it seems like weed_server.NewRaftServer is returning a nil object. So perhaps

ms.SetRaftServershould fail gracefully when getting a "nil" argument.
weed_server.NewRaftServer needs to check for the "ACL write permission" stuff

I hope this is helpful.

added error handling for this case.

hi @chrislusf , I have the same problem with filer on an centos 7.5,x86_64 server.
I0810 09:30:20 50306 filer_server_handlers_read.go:110] retrieving from http://<IP_ADDRESS>:8083/358,1cefad72b0d58766
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0x5ddc4f]
goroutine<PHONE_NUMBER> [running]:
bufio.(*Writer).Available(...)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/bufio/bufio.go:607
bufio.(*Writer).WriteString(0x0, 0x18c2de7, 0x19, 0x10100c00ecbd498, 0x0, 0x8000)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/bufio/bufio.go:688 +0x7f
net/http.(*expectContinueReader).Read(0xc00905c1e0, 0xc00a722000, 0x8000, 0x8000, 0xc0130e2c20, 0x44409c, 0x8000)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/net/http/server.go:890 +0x13b
net/http.transferBodyReader.Read(0xc00eb29cc0, 0xc00a722000, 0x8000, 0x8000, 0x0, 0x2a19e00, 0xc011385ea8)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/net/http/transfer.go:62 +0x56
io.copyBuffer(0x7f97ebea0388, 0xc00f992df0, 0x1bd4440, 0xc00eb29cc0, 0xc00a722000, 0x8000, 0x8000, 0x3, 0x1, 0xc0130e2d01)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/io/io.go:402 +0x122
io.Copy(...)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/io/io.go:364
net/http.(*transferWriter).writeBody(0xc00eb29cc0, 0x1bce700, 0xc0101f65c0, 0x2, 0x2)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/net/http/transfer.go:358 +0x16b
net/http.(*Request).write(0xc004719500, 0x1bce700, 0xc0101f65c0, 0x0, 0x0, 0xc00cf8d280, 0x0, 0x0)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/net/http/request.go:655 +0x721
net/http.(*persistConn).writeLoop(0xc00003d320)
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/net/http/transport.go:1979 +0x1b8
created by net/http.(*Transport).dialConn
/home/travis/.gimme/versions/go1.12.6.linux.amd64/src/net/http/transport.go:1358 +0xb0d

@dzang your logs are totally different. please create a separate issue with details.


Bash aliases do not work in PowerShell.

Steps to reproduce
$ which powershell
/usr/local/bin/powershell
$ alias wh='which'
$ wh powershell
/usr/local/bin/powershell
$ powershell
PowerShell v6.0.0-beta.8
Copyright (C) Microsoft Corporation. All rights reserved.

PS > which powershell
/usr/local/microsoft/powershell/6.0.0-beta.8/powershell
PS > wh powershell

Expected behavior
PS /Users/greg/temp> wh powershell
/usr/local/microsoft/powershell/6.0.0-beta.8/powershell

Actual behavior
PS > wh powershell
wh : The term 'wh' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ wh powershell
+ ~~
    + CategoryInfo          : ObjectNotFound: (wh:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Environment data
Name                           Value
----                           -----
PSVersion                      6.0.0-beta.8
PSEdition                      Core
GitCommitId                    v6.0.0-beta.8
OS                             Darwin 17.0.0 Darwin Kernel Version 17.0.0: Thu Aug 24 21:48:19 PDT 2017; root:xnu-4570.1.46~2/RE...
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>
WSManStackVersion              3.0

Likewise PowerShell aliases don't work in bash:
mark@posh-ubuntu:~$ powershell
PowerShell v6.0.0-beta.8
Copyright (C) Microsoft Corporation. All rights reserved.

PS /home/mark> New-Alias -Name ech -Value /bin/echo
PS /home/mark> ech 1
1
PS /home/mark> bash
mark@posh-ubuntu:~$ ech 1
No command 'ech' found, did you mean:
 Command 'bch' from package 'bikeshed' (universe)
 Command 'echo' from package 'coreutils' (main)
 Command 'ecl' from package 'ecl' (universe)
 Command 'dch' from package 'devscripts' (main)
 Command 'ecc' from package 'ecere-dev' (universe)
 Command 'sch' from package 'scheme2c' (universe)
 Command 'ecm' from package 'gmp-ecm' (universe)
 Command 'ecs' from package 'ecere-dev' (universe)
 Command 'ecp' from package 'ecere-dev' (universe)
 Command 'ecj' from package 'ecj' (main)
ech: command not found
mark@posh-ubuntu:~$

I would not expect bash aliases to work in PowerShell and I would not expect PowerShell aliases to work in bash. Aliases are a convenience for the shell you are working in.
Take this example going from bash to sh without any powershell involvement:
mark@posh-ubuntu:~$ alias wh='which'
mark@posh-ubuntu:~$ sh
$ wh
sh: 1: wh: not found
$

Bash aliases also don't work going from bash to bash:
mark@posh-ubuntu:~$ alias wh='which'
mark@posh-ubuntu:~$ wh powershell
/usr/bin/powershell
mark@posh-ubuntu:~$ bash
mark@posh-ubuntu:~$ wh powershell
wh: command not found

Perfect sense and I agree even as I wrote the issue that they are their own shells.

Bash aliases also don't work going from bash to bash:

While never passed they do work when they are in the .bash_profile which is the case for most Linux admins I know. By far 'll' (ls -la) is the most common. I just worry about the user experience once an admin drops to PowerShell.

While never passed they do work when they are in the .bash_profile

Which is also true of PowerShell aliases in your $profile when you launch PowerShell
I think it's important to remember that PowerShell isn't something you use under bash, but something you use in place of bash. PowerShell is a shell just like bash and tsc. tsc doesn't use bash aliases, and bash doesn't use tsc aliases so there shouldn't be any expectation for PowerShell to use bash or tsc aliases nor for tsc of bash to use PowerShell aliases. Ideally, you would ssh to a system and never even touch bash, it would be PowerShell on the client side and server side. You can set your default shell in /etc/passwd to /usr/bin/powershell  on both client and server and never see bash again if you wanted.

I just worry about the user experience once an admin drops to PowerShell.

I don't think that's an issue at all. Most Linux admins I've been exposed to understand concept of shells and understand that many things don't cross the shell wall.


Issues with naoqi driver and bridge

Hello All,
I am getting the following error as I try to run the following command -
roslaunch nao_bringup nao_full.launch nao_ip:=<IP_ADDRESS> roscore_ip:=<IP_ADDRESS>
Error -
`... logging to /home/cvl/.ros/log/7de6e3e2-a0bd-11e8-b486-c48e8ffaa3c3/roslaunch-cvl-nao-9939.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://cvl-nao:38346/
SUMMARY
PARAMETERS

/nao_robot/pose/pose_manager/poses/init/joint_names: ['Body']
/nao_robot/pose/pose_manager/poses/init/positions: [0.0, 0.0, 1.39, ...
/nao_robot/pose/pose_manager/poses/init/time_from_start: 1.5
/nao_robot/pose/pose_manager/poses/zero/joint_names: ['Body']
/nao_robot/pose/pose_manager/poses/zero/positions: [0.0, 0.0, 0.0, 0...
/nao_robot/pose/pose_manager/poses/zero/time_from_start: 1.5
/nao_robot/pose/pose_manager/xap: /home/cvl/nao/nao...
/rosdistro: indigo
/rosversion: 1.11.21

NODES
/nao_robot/pose/
pose_controller (naoqi_pose/pose_controller.py)
pose_manager (naoqi_pose/pose_manager.py)
/nao_robot/
naoqi_driver (naoqi_driver/naoqi_driver_node)
auto-starting new master
process[master]: started with pid [9951]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to 7de6e3e2-a0bd-11e8-b486-c48e8ffaa3c3
process[rosout-1]: started with pid [9964]
started core service [/rosout]
process[nao_robot/naoqi_driver-2]: started with pid [9975]
process[nao_robot/pose/pose_controller-3]: started with pid [9982]
process[nao_robot/pose/pose_manager-4]: started with pid [9983]
Traceback (most recent call last):
File "/home/cvl/nao/nao_ws/src/naoqi_bridge/naoqi_pose/nodes/pose_controller.py", line 49, in
from naoqi_driver.naoqi_node import NaoqiNode
File "/home/cvl/nao/nao_ws/devel/lib/python2.7/dist-packages/naoqi_driver/init.py", line 35, in
exec(__fh.read())
File "", line 29, in
File "/home/cvl/nao/nao_ws/src/naoqi_bridge/naoqi_driver_py/src/naoqi_driver/naoqi_node.py", line 37, in
raise RuntimeError("Error importing NaoQI. Please make sure that Aldebaran's NaoQI API is in your PYTHONPATH.")
RuntimeError: Error importing NaoQI. Please make sure that Aldebaran's NaoQI API is in your PYTHONPATH.
Receiving information about robot model
[W] 9975 qimessaging.remoteobject: Return signature might be incorrect depending on the value, from m to s
[nao_robot/pose/pose_controller-3] process has died [pid 9982, exit code 1, cmd /home/cvl/nao/nao_ws/src/naoqi_bridge/naoqi_pose/nodes/pose_controller.py --pip=<IP_ADDRESS> --pport=9559 __name:=pose_controller __log:=/home/cvl/.ros/log/7de6e3e2-a0bd-11e8-b486-c48e8ffaa3c3/nao_robot-pose-pose_controller-3.log].
log file: /home/cvl/.ros/log/7de6e3e2-a0bd-11e8-b486-c48e8ffaa3c3/nao_robot-pose-pose_controller-3*.log
[W] 9975 qimessaging.remoteobject: Return signature might be incorrect depending on the value, from m to [[m]]
set prefix successfully to naoqi_driver
[I] 9975 qimessaging.session: Session listener created on tcp://<IP_ADDRESS>:0
[I] 9975 qimessaging.transportserver: TransportServer will listen on: tcp://<IP_ADDRESS>:34053
[I] 9975 qimessaging.transportserver: TransportServer will listen on: tcp://<IP_ADDRESS>:34053
using ip address: <IP_ADDRESS> @ eth0
found a catkin prefix /opt/ros/indigo/share/naoqi_driver/share/boot_config.json
load boot config from /opt/ros/indigo/share/naoqi_driver/share/boot_config.json
found a catkin URDF /opt/ros/indigo/share/naoqi_driver/share/urdf/nao.urdf
Audio Extractor: Start
RightBumperPressed
LeftBumperPressed
ROS-Driver-RightBumperPressed : Start
HandRightBackTouched
HandRightLeftTouched
HandRightRightTouched
HandLeftBackTouched
HandLeftLeftTouched
HandLeftRightTouched
ROS-Driver-HandRightBackTouched : Start
FrontTactilTouched
MiddleTactilTouched
RearTactilTouched
ROS-Driver-FrontTactilTouched : Start
registered subscriber:	teleop
registered subscriber:	moveto
registered subscriber:	speech
nodehandle reset
Could not find network interface named eth0, possible interfaces are ... lo wlan0
================================================================================REQUIRED process [nao_robot/naoqi_driver-2] has died!
process has died [pid 9975, exit code 1, cmd /opt/ros/indigo/lib/naoqi_driver/naoqi_driver_node --qi-url=tcp://<IP_ADDRESS>:9559 --roscore_ip=<IP_ADDRESS> --network_interface=eth0 --namespace=naoqi_driver __name:=naoqi_driver __log:=/home/cvl/.ros/log/7de6e3e2-a0bd-11e8-b486-c48e8ffaa3c3/nao_robot-naoqi_driver-2.log].
log file: /home/cvl/.ros/log/7de6e3e2-a0bd-11e8-b486-c48e8ffaa3c3/nao_robot-naoqi_driver-2*.log
Initiating shutdown!
[nao_robot/pose/pose_manager-4] killing on exit
[nao_robot/naoqi_driver-2] killing on exit
[FATAL] [WallTime:<PHONE_NUMBER>.629640] Could not connect to required "joint_trajectory" action server, is the nao_controller node running?
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done
`
I also tried running the driver to check issues with the driver by running the following command -
 roslaunch naoqi_driver naoqi_driver.launch nao_ip:=<IP_ADDRESS> roscore_ip:=<IP_ADDRESS>
Error -
`... logging to /home/cvl/.ros/log/c1b6ec16-a0bd-11e8-9276-c48e8ffaa3c3/roslaunch-cvl-nao-10036.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://cvl-nao:45739/
SUMMARY
PARAMETERS

/rosdistro: indigo
/rosversion: 1.11.21

NODES
/
naoqi_driver (naoqi_driver/naoqi_driver_node)
auto-starting new master
process[master]: started with pid [10048]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to c1b6ec16-a0bd-11e8-9276-c48e8ffaa3c3
process[rosout-1]: started with pid [10061]
started core service [/rosout]
process[naoqi_driver-2]: started with pid [10068]
Receiving information about robot model
[W] 10068 qimessaging.remoteobject: Return signature might be incorrect depending on the value, from m to s
[W] 10068 qimessaging.remoteobject: Return signature might be incorrect depending on the value, from m to [[m]]
set prefix successfully to naoqi_driver
[I] 10068 qimessaging.session: Session listener created on tcp://<IP_ADDRESS>:0
[I] 10068 qimessaging.transportserver: TransportServer will listen on: tcp://<IP_ADDRESS>:40908
[I] 10068 qimessaging.transportserver: TransportServer will listen on: tcp://<IP_ADDRESS>:40908
using ip address: <IP_ADDRESS> @ eth0
found a catkin prefix /opt/ros/indigo/share/naoqi_driver/share/boot_config.json
load boot config from /opt/ros/indigo/share/naoqi_driver/share/boot_config.json
found a catkin URDF /opt/ros/indigo/share/naoqi_driver/share/urdf/nao.urdf
Audio Extractor: Start
RightBumperPressed
LeftBumperPressed
ROS-Driver-RightBumperPressed : Start
HandRightBackTouched
HandRightLeftTouched
HandRightRightTouched
HandLeftBackTouched
HandLeftLeftTouched
HandLeftRightTouched
ROS-Driver-HandRightBackTouched : Start
FrontTactilTouched
MiddleTactilTouched
RearTactilTouched
ROS-Driver-FrontTactilTouched : Start
registered subscriber:	teleop
registered subscriber:	moveto
registered subscriber:	speech
nodehandle reset
Could not find network interface named eth0, possible interfaces are ... lo wlan0
================================================================================REQUIRED process [naoqi_driver-2] has died!
process has died [pid 10068, exit code 1, cmd /opt/ros/indigo/lib/naoqi_driver/naoqi_driver_node --qi-url=tcp://<IP_ADDRESS>:9559 --roscore_ip=<IP_ADDRESS> --network_interface=eth0 --namespace=naoqi_driver __name:=naoqi_driver __log:=/home/cvl/.ros/log/c1b6ec16-a0bd-11e8-9276-c48e8ffaa3c3/naoqi_driver-2.log].
log file: /home/cvl/.ros/log/c1b6ec16-a0bd-11e8-9276-c48e8ffaa3c3/naoqi_driver-2*.log
Initiating shutdown!
[naoqi_driver-2] killing on exit
[rosout-1] killing on exit
[master] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete
done
`
Please suggest the possible solution or a guide to follow to get the robot working with ROS interface. The ROS wiki is not quite informative and there needs to be a better tutorial for the same.

Hi,
I found two error messages in your log.
I hope these explanations help you.

both launch files: Could not find network interface named eth0, possible interfaces are ... lo wlan0

Please check if you use wlan0 or lo by ifconfig.
Then, please add network_interface argument like this.
roslaunch naoqi_driver naoqi_driver.launch nao_ip:=<IP_ADDRESS> roscore_ip:=<IP_ADDRESS> network_interface:=wlan0
I also think we don't have to set roscore_ip argument, but I'm not sure.

nao_full.launch: Please make sure that Aldebaran's NaoQI API is in your PYTHONPATH.") RuntimeError: Error importing NaoQI. Please make sure that Aldebaran's NaoQI API is in your PYTHONPATH.

Please install Python NAOqi SDK.
That is because nodes in pose_manager.launch require NaoqiNode, which require Python Naoqi SDK.
I put a link of README in my laboratory which explains how to install and set it.
https://github.com/jsk-ros-pkg/jsk_robot/blob/master/jsk_naoqi_robot/README.md
Please see jsk_naoqi_robot => Setup Environment => 1,2
This part in step2 explains how to set PYTHONPATH in your .bashrc file.
export PYTHONPATH=$HOME/pynaoqi/<your Python SDK package name>:$PYTHONPATH


inputFontSize will cause StyleSheetValidation failed

https://github.com/brains-and-beards/react-native-animated-code-input/blob/0c430cc6ac8e0f3645bc1036ee36d66cca6a2ba6/src/InputSingleItem.tsx#L201
To reproduce the issue, create codeContainerStyle by StyleSheet instead of Style.
Since inputFontSize  is not a react-native style prop, It will cause StyleSheetValidation error

If you just change inputFontSize  to fontSize, the problem will be solved.

Could you describe the issue in more detail?
It's not clear to me:

what you're trying to do
what's the code that triggers this error