Introduce new data structure for faster shutdown()

Repeated addAll operations on Sequence[]s in shutdown() were causing excessive allocations, using a linked list to join the arrays yielded instead of allocating and copying seems to significantly speed things up. Happy to post YourKit results if that would be helpful.

Thanks for the PR!
I have some thoughts:

This is a large change compared to its impact. Can you tell us more about the problems excessive allocation during shutdown are causing you? In general we waive our requirements to be efficient when we're shutting down. We're either bringing the entire application to a halt; not usually a performance sensitive area, or about to create a new disruptor; much more expensive than shutting down an existing one.

Summary: We would like to know more about the problems this is causing you before adding code to fix it :-)

If we did want to make an improvement here, I would consider a different approach. If I take a look at ConsumerRepository::getLastSequenceInChain, it only has a single (in library) usage, and that's to support Disruptor::hasBacklog. We could instead just get Disruptor to delegate hasBacklog to ConsumerRepository. In this world, we will perform no allocations and there is less code; woohoo. I'd then consider deprecating/removing getLastSequenceInChain (although that has versioning implications).

Thanks again for getting in touch - looking forward to hearing more about your use case :-)

You are very welcome!
Sure, I’d be very happy to tell you about the problem I’m trying to solve, I’m profiling an application in which I use the disruptor and the excessive allocations are causing noise in my profiler. I could just introduce a pause before shutdown and manually stop profiling then but that would mean I couldn’t get up and go get coffee while I wait, which is clearly unacceptable.
Your suggested solution sounds awesome and I’d prefer to solve it that way if you’re open to it, I just wasn’t sure what the intention was for this interface going forward.
Thanks for the review @grumpyjames

Ok, cool - would definitely accept a PR based on those requirements; developer coffee retrieval ergonomics are very important to us ;-).
Looking forward to seeing PR v2!
P.S If you're occupied elsewhere, let us know and we'll find some time to put this change in ourselves.

That is most excellent! I will find some time to get that in this weekend.


Edge's customizable new tab page and the extension cannot coexist

Can't separately prohibit the extension from overwriting new tabs in Microsoft Edge browser. The extension's new tab override options - browser default will cause the Edge to use a simple search box only new tab without customizable options, popular websites, and more.

I have tried to set the Custom option to the https://ntp.msn.cn/edge/ntp for solve this problem, but it basically doesn't work.

Has this been reported publicly to the Edge team yet?


Change log level on some messages

When setting log level on INFO, it's quite missleading to have only this message:
Could not delete wal_file: %r, returning

It looks like removal of old logwals failed.
I think it would be better to have this (even in INFO level):
Starting WAL deletion from: %r before: %r, pg_version: %r
Could not delete wal_file: %r, returning

The current log messages are indeed misleading, but I don't want to log every deletion at INFO -- how about just tracking the range of IDs that have been deleted, perhaps per timeline?
So you can log: "Starting to delete WAL before %r" "Deleted WAL segments %r .. %r" "Could not find next WAL segment to delete" or something like that.
We have systems that generate tens of thousands of segments daily, logging all of them at INFO is a bit too much, but the logging and old wal deletion in general could be improved.

@saaros fixed

Travis tests aren't passing:
************* Module pghoard.pghoard
C:226, 0: Wrong continued indentation (remove 1 space).
site, wal_segment, pg_version)
|^ (bad-continuation)
make: *** [pylint] Error 16
Please always double check that your PRs pass the tests

@Ormod fixed

reworded the commit message slightly and merged.


Update Typescript and typings.

Typescript --> 1.4.1
d3.d.ts --> newest

I was assuming you're going to remove
addons:
  sauce_connect: true

from .travis.yml

All comments are outside of the scope of the PR, so feel free to merge this and open different PR later for the flags.

Fixing the sauce stuff, since that might catch bugs.


⚠ DesiTorrents has degraded performance

In 68e8fa1, DesiTorrents ($DST) experienced degraded performance:

HTTP code: 200
Response time: 2005 ms

Resolved: DesiTorrents performance has improved in ea07e0c.


[QUESTION] empty backups?

Question
Reinstalled my k3s cluster, added longhorn, added secrets/url to backup back, opened backups, only one volume is listed with size and restorable, all others are 0 bi and can't be restored.
Environment:

Longhorn version: 1.2.2
Kubernetes version: k3s 1.22

it appeared after i rebooted nodes (forgot to install proper kernel). Waited for quite some time before that.
Not sure if it's related, but works now, thanks!


Keybase can't connect on mac and immediately crashes on iphone

On Mac, keybase just says "disconnected". It occasionally flashes the start of rendering the UI, but then jumps back to the loading icon and says "disconnected".
I've been playing with linux, so I've been provisioning/deprovisioning devices a bunch. It's possible that has messed up keybase?
Is there any further info I can provide to help you debug?

On mac, please run: keybase log send
On iPhone, please send feedback from within the app
thank you

On mac, the sending failed with:
▶ INFO ignoring error getting keybase status: There were multiple errors: dial unix /Users/llimllib/Library/Group Containers/keybase/Library/Caches/Keybase/keybased.sock: connect: connection refused; dial unix /Users/llimllib/Library/Caches/Keybase/keybased.sock: connect: no such file or directory
▶ INFO ignoring UI logs: There were multiple errors: dial unix /Users/llimllib/Library/Group Containers/keybase/Library/Caches/Keybase/keybased.sock: connect: connection refused; dial unix /Users/llimllib/Library/Caches/Keybase/keybased.sock: connect: no such file or directory

eventually, it got to telling me succes, my log id is: ee8c8480078b85214195561c
On iphone, I can't manage to open the app, so I can't send you logs.

/Users/llimllib/Library/Group\ Containers/keybase/Library/Caches/Keybase/keybased.sock exists, is a socket, and has reasonable-looking permissions:
$ file /Users/llimllib/Library/Group\ Containers/keybase/Library/Caches/Keybase/keybased.sock
/Users/llimllib/Library/Group Containers/keybase/Library/Caches/Keybase/keybased.sock: socket
10:25 PM hickory:~
$ ls -alh /Users/llimllib/Library/Group\ Containers/keybase/Library/Caches/Keybase/keybased.sock
srwxr-xr-x  1 llimllib  staff     0B Dec 18 22:25 /Users/llimllib/Library/Group Containers/keybase/Library/Caches/Keybase/keybased.sock=

It's likely the same issue in both places, I see a crasher on an NPE in your logs. We'll have to take a loko at it.

Thanks, appreciate it

See #9968 for the fix. I'm not sure when we can ship a release though, the holiday will slow down our release schedule.  Thanks for your patience and the bug report!


Compatibility with older linuces

On CentOS 7 I'm facing:
target_compile_definitions(ysfx-private
    PRIVATE
        "_FILE_OFFSET_BITS=64")

which makes the build fail with:
[ 98%] Building CXX object CMakeFiles/ysfx-private.dir/sources/ysfx_eel_utils.cpp.o
In file included from /image/ysfx/sources/ysfx_utils.cpp:31:
/usr/include/fts.h:41:3: error: "<fts.h> cannot be used with -D_FILE_OFFSET_BITS==64"
# error "<fts.h> cannot be used with -D_FILE_OFFSET_BITS==64"
  ^

Do you think I can safely comment that on that platform ? Or I should just update to a system with a more recent fts.h ? (if so, if you know what would be the minimal requirement..)

hmm just checked and the 64-bit support appeard in glibc 2.23

That's sad. It seems, the best is to move visit_directories into a separate file ysfx_utils_fts.cpp.
There, make a feature check on glibc's version and undef _FILE_OFFSET_BITS as appropriate.
It's fine that visit_directories would receive FTS_NS codes for files, and we dont care about the stat data.

This is expected to be fixed, haven't checked it.
This adds compatibility flag -DYSFX_FTS_LACKS_LFS_SUPPORT.
It's set if you use the cmake, otherwise add the flag yourself.


Research options to deploy the API and data-pusher containers to AWS

Both containers are deployed with a config file (and possibly a secrets.env file) like https://docs.api3.org/reference/airnode/latest/docker/client-image.html
Requirements:

Noob-friendly, ideally through a GUI
Minimizes the risk of the user messing things up (using the wrong config file, breaking the deployment by deleting S3 content, exposing the secrets file, etc.)
Doesn't require the user to have anything installed locally other than Docker (Edit: though ideally not even that because we don't want to maintain a deployer container)

Terraform x Cloud Formation x CDK
Terraform

uses cloud api under the hood
common syntax across multiple clouds
can save state file
a lot of community modules already developed and they are bug free
hcl language (hashicorp specific)

cons

terraform installed or docker image which contains terraform binary
requires obtaining credentials to interact with the cloud

Cloud Formation

aws specific (e.g. in azure ARM is used)
yaml syntax
can deploy resources via aws web
user can use click-n-go from aws marketplace
saves cloud formation stack, resources can be deleted

cons

unreadable and hard to manage once the code gets bigger

CDK

cloud specific
in aws uses cloud formation under the hood
typescript language
stores state same way as cloud formation

cons

cdk installed or docker image which contains cdk binary

For on-premise infrastructure, we can write a simple docker-compose file which will read the .env file and configure the docker image based on it.

There are two parts to consider: our own deployment and external user deployments. For our deployment, I think the consensus was that we can be AWS specific (and maybe setup a fallback on some other managed/unmanaged non-AWS Docker service). External users should be able to run anywhere - we provide the public Docker image, they provide the config files.
Providing the config files then raises some questions about how we want to do that. We could use Docker volumes, but that seems to limit us if we go with AWS ECS (Fargate). Fargate (to me) seems preferable since it's limited infrastructure maintenance on our end. From what I've seen, if we want volumes with Fargate, we would need to setup an EFS volume, which seems to require an EC2 instance.
We also need to decide if we want build time configuration and runtime configuration. Build time only needs the file available at build time, but requires extra steps on the user's part to build their own images. Runtime needs the file to be always available, but is more flexible.
My Proposal
We go with runtime configuration files by adding a CONFIG_SOURCE env variable. When the app boots, it gets the relevant config file using the source. Options are initially:

local (default) -  which loads from the filesystem and requires mounting the config file
aws-s3 - loads from S3 (also requires some AWS_ env variables)
[more can be added]

This provides us and external users with flexible options for deciding how they want to deploy. It's then critical to ensure our config files are always available. We could even expand CONFIG_SOURCE to host in multiple places for redundancy if we wanted. e.g. CONFIG_SOURCES
More detail in my thread here: https://api3workspace.slack.com/archives/C05S589E7B4/p1695730031236799
Then in terms of our own infrastructure setup, I don't have really have a preference between Terraform or Cloudformation. I think we previously settled on Cloudformation simply because we already decided on AWS. I'm not familiar with CDK enough to really comment here
To the requirements:

Noob-friendly, ideally through a GUI

✅ Everything should be doable through a GUI

Minimizes the risk of the user messing things up (using the wrong config file, breaking the deployment by deleting S3 content, exposing the secrets file, etc.)

❌  The containers break if the config files are not available. The only way around this I can see is to bake the config in at build time. Maybe worth noting that running containers will only break on restart as well as new containers.
❓ The user could accidentally configure a hosted config file to be public on S3 but I think the risk of users misconfiguring something is always present to some extent.

Doesn't require the user to have anything installed locally other than Docker (Edit: though ideally not even that because we don't want to maintain a deployer container)

✅ They don't need to install anything (maybe not even Docker)
Sorry for the long post. Please let me know if there is any other option I've missed or got wrong. I'm not an infrastructure guy

@andreogle

we would need to setup an EFS volume, which seems to require an EC2 instance.

EBS requires EC2 instance. If we use EFS, then the FS will be mounted and the config file can be downloaded to a mounted drive from CONFIG_SOURCE.

Everything should be doable through a GUI

Terraform plan/apply requires CLI. You can do it through some SaaS, but it's out of scope of this task IMHO

EBS requires EC2 instance. If we use EFS, then the FS will be mounted and the config file can be downloaded to a mounted drive from CONFIG_SOURCE.

Doesn't EFS also require setting up an EC2 instance?

just for the file interactions.

Outcome:
Considering all the options I'd go with the Terraform public module approach. It will be developed by us, primarily used by us, and in case somebody else wants to use it, they can reference the module and fill up the correct values. Terraform can be either installed on a computer or run through a docker image. We already use Terraform Cloud (TFC), so we will stick with it for internal deployments.
In terraform we can support AWS and potentially self-hosted docker.

Requires https://github.com/api3dao/signed-api/issues/74

I prepared a prototype procedure for the pusher deployments using AWS CloudFormation. Here is the thing,

CloudFormation TaskDefinition has a field named Environment, we will pass whole content of the secrets.env to there. Contents of the Environment field are passed as an environment variable to the container.

"Environment": [
    {
        "Name": "SECRETS_ENV",
        "Value": "WALLET_MNEMONIC=<YOUR_MNEMONIC>\\nCRYPTOCOMPARE_API_KEY=<YOUR_CRYPTOCOMPARE_API_KEY>"
    }
],

CloudFormation also has an option to override the entrypoint of the container, overrided entrypoint will look like the below:

echo -e $SECRETS_ENV >> ./config/secrets.env # write contents of the secrets.env that is passed in the Environment field of the CloudFormation template to the required path.
wget -O - https://config-url.com/pusher.json >> ./config/pusher.json # Write contents of the publicly available config to the required path
node --enable-source-maps dist/index.js # run the pusher

Here is the CloudFormation template:
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "A CloudFormation template for deploying  my_app.",
    "Resources": {
        "CloudWatchLogsGroup": {
            "Description": "The service to log the outputs of the app.",
            "Type": "AWS::Logs::LogGroup",
            "Properties": {
                "LogGroupName": "myAppLogs",
                "RetentionInDays": 7
            }
        },
        "MyAppDefinition": {
            "Type": "AWS::ECS::TaskDefinition",
            "Description": "App's definiton",
            "Properties": {
                "NetworkMode": "awsvpc",
                "Cpu": 256,
                "Memory": 512,
                "ExecutionRoleArn": {
                    "Ref": "ECSTaskRole"
                },
                "RequiresCompatibilities": ["FARGATE"],
                "ContainerDefinitions": [
                    {
                        "Name": "my_app",
                        "Image": "api3/pusher:0.1.0-rc2",
                        "Environment": [
                            {
                                "Name": "SECRETS_ENV",
                                "Value": "WALLET_MNEMONIC=<YOUR_MNEMONIC>\\nCRYPTOCOMPARE_API_KEY=<YOUR_CRYPTOCOMPARE_API_KEY>"
                            }
                        ],
                        "EntryPoint": ["/bin/sh", "-c", "echo -e $SECRETS_ENV >> ./config/secrets.env && wget -O - <YOUR_CONFIG_URL> >> ./config/pusher.json && node --enable-source-maps dist/index.js"],
                        "LogConfiguration": {
                            "LogDriver": "awslogs",
                            "Options": {
                                "awslogs-group": {
                                    "Ref": "CloudWatchLogsGroup"
                                },
                                "awslogs-region": {
                                    "Ref": "AWS::Region"
                                },
                                "awslogs-stream-prefix": "my_app"
                            }
                        }
                    }
                ]
            }
        },
        "MyAppCluster": {
            "Type" : "AWS::ECS::Cluster",
            "Description": "ECS Cluster to run services.",
            "Properties" : {
                "ClusterName" : "my_app_cluster"
            }
        },
        "MyAppService": {
            "Type": "AWS::ECS::Service",
            "Description": "Service to run the defined app.",
            "Properties": {
                "Cluster": {
                    "Ref": "MyAppCluster"
                },
                "ServiceName": "my_app_service",
                "DesiredCount": 1,
                "LaunchType": "FARGATE",
                "TaskDefinition": {
                    "Ref": "MyAppDefinition"
                },
                "NetworkConfiguration": {
                    "AwsvpcConfiguration": {
                        "AssignPublicIp": "ENABLED",
                        "Subnets": [
                            { "Ref": "MySubnet" }
                        ]
                    }
                },
                "DeploymentConfiguration": {
                    "MinimumHealthyPercent": 100,
                    "MaximumPercent": 200
                }
            }
        },

        "MyVPC": {
            "Type": "AWS::EC2::VPC",
            "Properties": {
              "CidrBlock": "<IP_ADDRESS>/16",
              "EnableDnsSupport": true,
              "EnableDnsHostnames": true
            }
        },
        "MyInternetGateway": {
            "Type": "AWS::EC2::InternetGateway"
        },
        "MyVPCGatewayAttachment": {
            "Type": "AWS::EC2::VPCGatewayAttachment",
            "Properties": {
                "VpcId": { "Ref": "MyVPC" },
                "InternetGatewayId": { "Ref": "MyInternetGateway" }
            }
        },
        "MyPublicRouteTable": {
            "Type": "AWS::EC2::RouteTable",
            "Properties": {
                "VpcId": { "Ref": "MyVPC" }
            }
        },
        "MyPublicRoute": {
            "Type": "AWS::EC2::Route",
            "DependsOn": "MyVPCGatewayAttachment",
            "Properties": {
                "RouteTableId": { "Ref": "MyPublicRouteTable" },
                "DestinationCidrBlock": "<IP_ADDRESS>/0",
                "GatewayId": { "Ref": "MyInternetGateway" }
            }
        },
        "MySubnet": {
            "Type": "AWS::EC2::Subnet",
            "Properties": {
                "CidrBlock": "<IP_ADDRESS>/24",
                "VpcId": { "Ref": "MyVPC" },
                "MapPublicIpOnLaunch": true
            }
        },
        "MyPublicSubnet1RouteTableAssociation": {
            "Type": "AWS::EC2::SubnetRouteTableAssociation",
            "Properties": {
                "RouteTableId": { "Ref": "MyPublicRouteTable" },
                "SubnetId": { "Ref": "MySubnet" }
            }
        },

        "ECSTaskRole": {
            "Type": "AWS::IAM::Role",
            "Description": "Role for running ECS tasks and creating logs.",
            "Properties": {
                "AssumeRolePolicyDocument": {
                    "Statement": {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": [
                                "ecs-tasks.amazonaws.com"
                            ]
                        },
                        "Action": [
                            "sts:AssumeRole"
                        ]
                    }
                },
                "Policies": [
                    {
                        "PolicyName": "MyAppAmazonECSTaskExecutionRolePolicy",
                        "PolicyDocument": {
                            "Statement": {
                                "Effect": "Allow",
                                "Action": [
                                    "logs:CreateLogGroup",
                                    "logs:CreateLogStream",
                                    "logs:DescribeLogStreams",
                                    "logs:PutLogEvents"
                                ],
                                "Resource": "*"
                            }
                        }
                    }
                ]
            }
        }
    }
}

Please review each field under the Resources, especially network-related ones.
Test Deployment
Steps to deploy a pusher and push signed data to https://pool.nodary.io:

Fill <YOUR_CONFIG_URL> in the CloudFormation template. >> Config URL
Fill <YOUR_CRYPTOCOMPARE_API_KEY> in the CloudFormation template. It is a free API key, you can get one by signing up.
Fill <YOUR_MNEMONIC> in the CloudFormation template.
Go to CloudFormation section in the AWS dashboard, click on Create Stack, upload your template in Step 1
Give a name to your stack in Step 2.
Don't change anything in Step 3.
Tick the checkbox with the text I acknowledge that AWS CloudFormation might create IAM resources in Step 4 and submit.
Wait for AWS to deploy everything and check CloudWatch log group named myAppLogs to see what's up. After 1 or 2 minutes, you should see your signed data in https://pool.nodary.io/<YOUR_AIRNODE_ADDRESS> after a successful deployment.

Frontend for the deploymnets
The plan is to create a repo similar to the old operations repo that is used by a frontend. @hiletmis currently working on it. In the frontend, API providers will be able to see and compare their deployments in the frontend. They will select their deployment (created by us), fill in the secrets in the frontend, and receive the populated CloudFormation template. Then they will just go to the AWS CloudFormation dashboard, upload their template, and deploy.

The CloudFormation should eventually be located in this repo: https://github.com/api3dao/api-integrations

Thanks for the deployment instructions. So far I tested the happy path and it works. I have to say I quite like the flow. I expected I would have to click way more stuff on AWS, but it was quite simple (when you just skip step 3). I quite like the options to update/remove the stack. I expect AWS handles removing the old stack fine...
Few notes I did along the way:

Deployment worked but I made a mistake and needed to redeploy
During redeployment it can rollback the resources, but I don't need to tick the "it can create other resources" checkbox anymore

I still checked it just to be sure

There is a button to delete the stack so that is also nice
I added LOG_LEVEL=debug and encountered https://github.com/api3dao/signed-api/issues/90

I want to talk with @stefiix92 about the all the resources, but he is ill now so probably next week.

Environments vs Secrets
Environment block isn’t encrypted and anyone with the read access of the ECS cluster is allowed to read the secrets values (mnemonic, api keys, …)
Instead of it, it’s recommended to use Secrets block where the environment variable is injected in the container from the SecretsManager or Parameter Store. First you have to create new secret and then just put the reference in the Task Definition as ARN value. This way the users who have read access to ECS cluster can’t read the secret value directly.
Also, I’d rather create a script which will do the write in the ./config/secrets.env rather than storing it all in 1 env variable.
Networking
In the template I miss the Load Balancer resource. ECS will assign a public IP to the pusher container (via "AssignPublicIp": "ENABLED”) but this will change with every new container (e.g. on restarts)
Application upgrades
I’m unsure how CF will handle changes in the MyAppDefinition Task Definition resource. Probably it will create a new version and update MyAppService directly to it. It would be better if CF could keep the old task definitions allowing users to rollbacks in case something got broken.
Infrastructure upgrades
It would be good to test the infra updates/rollbacks
Other minor things
understand it shouldn’t be covered in PoC

open policies (should be more restrictive)
missing task role

@Siegrift if you want we can discuss the topics more.

Logging Options
I've looked at the logging possibilities for ECS. Generally, you can forward the logs to the AWS Log Group and format them based on the logger type. However, some advanced logging configurations might be useful for us.
1. Use firelens logdriver to use fluentbit ([link](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/firelens-using-fluentbit.html))

2. Configure the fluentbit logger with the advanced properties and stream the logs to the desired destination ([link](https://medium.com/@kvendingoldo/aws-ecs-and-loki-integration-aae324456d7f))

e.g. we can use Loki which is trendy logging solution developed by Grafana.
However, this setup has also 1 drawback. As the logs are directly streamed to the fluentbit target, a user can't watch the logs directly from ECS Task. If this should be the requirement too, then we can develop a Lambda function (deployed with CF along with ECS service) which will basically forward the logs from AWS LogGroup to the desired destination (e.g. Loki)

Yeah thanks, there was issue for it and we chose the Loki as centralized logging instance and fluentbit as its broker. You can see details https://github.com/api3dao/tasks/issues/257.
By adding extra [OUTPUT] section like following, you can watch logs over CloudWatch which is created for fluentbit sidecar container. Because logging options only allows for one [OUTPUT] for fluentbit container, either you need to rebuild fluentbit image for this purpose or store fluentbit config somewhere then start client with the command -c /somewhere/fluent-bit.conf
[OUTPUT]
    Name   stdout
    Match  *

We agreed to close the issue as the research phase is completed. The feedback by @stefiix92 will be implemented in separate issues yet to be created by @metobom .


Brewing Stand

Version of Bukkit/Spigot: 1.12.2 Paperspigot
Version of OCM plugin: 1.6.2
Default config.
No console errors.
The brewing stands doesnt refuel even with the world added to the list.

Hope you can fix this soon :c all my 1.7 - 1.8 players cant make potions because of this.

Did it used to work before?

No , never.

If you disable the old brewing stand module in the config does it work?

No...

If the old brewing stand module is disabled, then it's not the fault of OCM, right @gvlfm78?

If the old brewing stand module is disabled, I don't see how any other module would affect this...
The ultimate test, just to be sure would be to disable OCM entirely and see if the issue still persists

It persists... what should i do? I want the old brewing stand :(
Btw Infinite lapis Enchantment table works ok.

If disabling OCM doesn't make it work it means some other plugin is causing this...
You need to go through the list of plugins you have installed and look at which ones could possibly affect brewing stands, then disable each and check if brewing stand work

OCM Old Brewing Stand doesnt work even without any extra plugins installed...
Im using Paperspigot 1.12 w/ProtocolSupport

What do you mean "OCM Old Brewing Stand doesnt work even without any extra plugins installed..."
as I said above, you need to first:

Disable the module and see if brewing stands work normally
Disable OCM and see if brewing stands work normally

I have no idea what you just did...

Dude...
I tried the following things:

Removed all the plugins and only letting OCM installed with OBS config enabled. Still 1.9.

Brewing Stands are 1.9 even if the module is disabled or enabled with and without plugins.

Reinstalling the plugin doesnt fix the issue.

What else do you want me to try? -.-

So your problem is that 1.7 and 1.8 players cannot brew potions because it doesn't "refuel".
Unless your problem is "Brewing Stands are 1.9" regardless of the state of the module.
These are two completely different issues. What is your exact issue?

The brewing stand is 1.9 means it isnt refuelling.

and what is the behaviour for a 1.7/1.8 client?

They want to brew the potions and the fire powder doesnt refuell. This happens on 1.12 aswell.

but there is no "refuelling" behaviour in before 1.9, isn't there?

In 1.8 brewing stands doesnt need fuel.

So can 1.7 and 1.8 people use brewing stands or not?

Dude can you be more clear with your answers? The refuelling doesnt work on 1.8 or 1.9....

I was going to ask you to be more clear with your answers because I properly don't understand what's working and what's not...
Also stop asking to 'fix it'; that's exactly what we're doing right now. I can't just press a couple buttons and make everything magically work, the first step is to know exactly what is not working.

Im being really clear. No firepowder appears on the fuel slot. Thats all. Did you understand my answer? Do i have to be more specific?
No firepowder is appearing on the fuel slot when i have this option activated.
More specific?
When having the OLD BREWING STAND option activated on spigot 1.12 on all the clients (1.7 - 1.12) the firepowder doesnt regenerate on the fuel slot of the brewingstand.

BUT, in 1.7 and 1.8, there was no such thing as refuelling a brewing stand. So how is it not being added/not working in those versions?

Because the server is 1.12. The 1.8 - 1.7 players cant see the fuel slot so if it doesnt refuel they cant craft potions because they cant place fuel. Thats why i want a fast fix :(

The fuel slot is server-side. Whether or not clients see it is irrelevant. If the fuel is present server-side, then the potions should brew. Are 1.9+ players getting the blaze powder automatically added to their brewing stands via OCM?

I believe I changed the way that worked some time ago to automatically set the fuel level instead of adding blaze powder, in order to avoid item duplication issues

Either way, are 1.9+ having their brewing stands fueled by OCM? If so, then it would still work for 1.7 and 1.8 players, as the fuel level of a brewing stand is entirely client-side.

Why dont you understand what i say ;-; I said it doesnt work on 1.12 - 1.7 clients...

Ah, okay. With the default OCM config, you said?

I tried my config and the default.

Could you upload your config so I can see what your options are?

https://hastebin.com/vibidadipa.bash

Hmm, true, with default config (old-brewing-stand enabled), I had to manually fuel the brewing stand with blaze powder. Bug confirmed, @gvlfm78.

Is this something that broke with 1.12?

Quite possibly. I have other things to work on, but I have a small theory as to why this isn't working. I'll keep you posted :)

#144 -- there ya go!

Ok I have finally managed to get the Jenkins server back up. @LinsaFTW can you try the latest OCM test build and check if it now works as intended?

Works good :D thanks! Fixed!


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/51366

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/52950


Add negative test for test_svm size check

Isuue #875 clarified that CL_INVALID_BUFFER_SIZE should be returned if clCreateBuffer is passed a pointer returned by clSVMAlloc as its host_ptr and the size of the buffer exceeds the size of the SVM allocation.
Add a new negative test to ensure CL_INVALID_BUFFER_SIZE is returned when the size of buffer exceeds the size of the SVM allocation.
Fixes #1701

With this change the test fails on some OpenCL implementations.

Merging as discussed in the May 21st teleconference.


Update Lab_31_ConnectDataFromAADToAzureSentinel.md

Module: 00
Lab/Demo: 00
Fixes # .
Changes proposed in this pull request:

Submitted by ParamRamki on behalf of MOC Labs Review

@R-C-Stewart @MOC-Labs-Review Lab 31 seems to be gone now, is this intended?


feat(transaction feed): label coinbase transactions as deposit

Description
Similar to labeling transactions as rewards, there is now logic in place to label transactions from coinbase pay as Deposit. A short list of addresses used for Coinbase Pay has been added to firebase.

Other changes
2 addresses have been saved.
Tested
Added unit test to simulate receiving Celo from a coinbase pay address.
How others should test
N/A
Related issues
ACT-389
Backwards compatibility
N/A

Hey @MuckT since NA is mentioned in how others should test section, we are skipping this PR
Cc: @awtsui
Thanks,!


Bug 1145833 - Add link to the source and the currently deployed revision in mcMerge footer.

I switched it to a relative link and also added some CSS so it only shows up on the https://mcmerge.paas.allizom.org/ site, hidden everywhere else.
It's a -moz prefixed rule, so it only hides in Firefox, but I think that'd be okay.
We'd have to update that rule should the hosting move somewhere else.
If you're okay with that, @edmorley I can merge this patch in.

Sounds fine to me - we can always iterate later if needs be :-)


how to train custom dataset

Hello, may I ask how I can train my dataset with only point cloud and kitti format labels，

Hi, I am very sorry that DSVT has never tried kitti, perhaps you can carefully understand the code to change some config parameters, I believe it is not a very difficult thing.

关键词：very


Create a User Interface for the project

[ ] Ask to be assigned.

[ ] Use whatever tech stack you like to create a UI for the project

Make a folder:  ./frontend

Put all the frontend code in this folder.

Please assign this issue to me @ppap1771.


Allow setting TargetVersion+Category to null / access names from Memberships

This is the result of moving redminenb to the new major version of redmine-java-api.
Most changes are very smooth and work quite good. These two changesets address two issues:

Memberships are used to enumerate Users per project in redminenb, so I used the Memberships directly in the past, as these already contain the necessary data (the id and name of the group/user). In the current incarnation this information is discarded by the bindings. With this changeset the names of the groups and users are extracted from the reply
The two attributes category and and targetVersion could not be unset - the null value was discarded from the updateset. This is attributed in the second changeset by introducing a generic setter for "Identifiable" attribute values.

Please note: The first change was tested by the added unittests, the second set is currently untested, as the testsystem is unresponsive. I ran the second set through manual tests, that showed these change to be working.
Please check if the added unittests for the second part work as expected. Thanks!

I brought the dev VM with the test Redmine back.
let's use one PR per commit/feature to simplify both review and merge?

Thank you for merging this. For you comments: I agree mostly. I had the basics of a followup PR prepared, but I just compared the diffs and while the names of the tests might not match 100%, separating the tests nearly doubles the code - I suggest to keep it this way.

@matthiasblaesing does the current version work for you? I will release it as 3.0.0 if yes

It looks good - my client currently shows some issues I have to tackle before I can think about moving to 3.0.0 fully (not related to the api!), but I checked:

all issue fields that should be settable are settable
all issue fields, that should be unsettable/eraseable were erasable (parent task, start/due date, assignee, category, target version, estimated time)
issues are correctly updated and retrieved
custom text fields could be updated
custom multi select lists were updated
custom boolean values were updated and erasable
time entries could be done
watchers were editable
basic searching works
executing server side queries works

So I would say: I think this is good to go. I really look forward to move back to the master branch! Thank you for your work.

alright, I will release this as 3.0.0


Cross scala 3

This PR brings cross-compilation with Scala 3 to memeid.
The trickiest part was the memeid4s-literal, were a new Scala 3 macro has been implemented

The doobie mdoc is still to be implemented

Pending to improve the build.sbt

@gutiory this is ready for review. Thanks

@gutiory I've applied your changes. I'm not sure why the patch is complaining, but the changes look good to me. Could you please review it again?


Question/Suggestion for persist partition flashing prompt

Hi there, first of all, thanks for the efforts made in creating this tool.
I'm a new user, and this is also my first time flashing a newer model Xperia, Xperia XZ1.
I did a flashing on my unit, and after a lengthy, very long flashing process, it asked whether I wanted to flash persist partition.
So, I don't know about it and I copied the url, read everything in the thread, and decided not to flash persist.
However when I switch back to the CMD, it came up in my mind that it was written something like "Press Y to skip flashing persist.sin", so I pressed Y.
Immediately I noticed that it started to flash persist.sin. I immediately reach out for the usb port but I hesitated because I don't know if I interrupt the process, will my device get a hard brick. I just bought this device.
Therefore, I decided to let the flashing continue. And very sad, extremely sad, I confirmed that the attestation key is completely gone.
I thank you for implementing the warning, not blaming you because I'm extremely exhausted at that time so I was extremely careless. Just I would like to provide suggestions so maybe other users can avoid carelessness like me.

Maybe make the skip option as the first option in the sentences, because it reads that it is recommended to skip but the not to skip option comes first, then only followed by the skip option.
Or maybe, I actually prefer this more, is that ask this before flashing process starts (along with the other prompts like the backup ta and driver stuff). With this, maybe can also add a prompt to confirm flashing so we can actually still cancel if we press the wrong key before start flashing the device.
Since this is quite crucial, maybe make it to type something longer instead of just a single letter, like for example, 'n' to skip  persist but 'yes' to flash persist
Make the warning a bit scary, like upper case texts, or some scary disclaimer, or something like FLASH AT YOUR OWN RISK! I AM NOT RESPONSIBLE FOR YOUR ATTESTATION KEY LOST!
Also, just asking, if we pressed Y, and it started to flash, at which flash stage it is still safe to disconnect the device to avoid persist.sin to be flashed?

I would like to express that I'm not blaming the dev! I really thankful the warning is given and actually get to understand it before answering the prompt. It's just my carelessness. So I would like to provide suggestion in order to help avoid this. I actually read through your threads and get to know the amount of effort put into this newflasher and the xflasher. Thanks for the contribution!
Thanks and have a nice day!

Hi, yes I know how frustrating is when something happen wrong, but next time please be a more carefull. Warning message during flashing is easy enought to warn user, even I have included url link so everybody who see a warning prompt can read url first before confirm with Y or N. This is a primitive tool - simple as possible - just for primitive flashing, its not a smart tool which will do the auto things for you, and I not going to make it smart, its smart enought just for flashing, everybody who use them must be carefull and patient, and you can't interupt flashing when you disconnect usb because if you do that e.g. while you flash bootloader your device will become dead. The same for persist partition, you disconnected usb but it not helped. You must be more carefull next time.

Further replies please reply to forum https://forum.xda-developers.com/t/tool-newflasher-xperia-command-line-flasher.3619426/ this is development platform not a forum, thanks!


Package won't install in Docker image build

I'm trying to install vscDebugger in a Docker image, but I'm getting the following error when I I try to install the package during the image build process:
#18 0.323 ><EMAIL_ADDRESS>#18 0.902 Error: Failed to install 'unknown package' from GitHub:
#18 0.902   Line starting 'VignetteB ...' is malformed!
#18 0.902 Execution halted

I'm building an intermediate image for my self called r-tidy that has some of the packages I use most often. It's based on Debian 11. I'm running it on an M1 Mac Mini.
Here's my Dockerfile in case that's helpful.
 The image builds fine without the vscDebugger install.

This may be a duplicate of #171

Yes, this appears to be the same situation. I moved the declaration of the LANG environment variable up above the installation of the R packages in the Dockerfile, and things worked fine. Good catch.


Options for integration tests

It's not clear to me how can I use Options pattern for tests. Let's say I run tests on my dev machine and then I have CI/CD in VSTS. So tests run there. How does configuration works during the build? How do I access app settings? How should I register MyOptions in the tests? Lots of questions...

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

ID: ed39cb0e-aa85-8bba-ffb4-859b56a60723
Version Independent ID: dc7e3449-650b-d117-5eac-69e5ccb250cb
Content: Options pattern in ASP.NET Core
Content Source: aspnetcore/fundamentals/configuration/options.md
Product: aspnet-core
GitHub Login: @guardrex
Microsoft Alias: riande

Hi @alvipeo ... Consult the integration testing topic (and other testing topics): https://docs.microsoft.com/aspnet/core/test/integration-tests

@alvipeo Also note that we don't have the staffing here to field general development questions. We recommend asking for general development support on a support forum, such as Stack Overflow, or a support chat, such as Gitter or Slack.

That's not general questions. These are related to creating tests and using configuration for the tests in different environments. Those topics should be covered in the docs.

If you're referring to mocking services for integration testing, it's described here ...
https://docs.microsoft.com/aspnet/core/test/integration-tests#inject-mock-services
You'll just mock up your configuration and/or options services and build your tests from there. You'll follow exactly the same pattern as is shown for the IQuoteService example.
... or were you more interested in a unit testing approach?
I'd probably just create a ConfigurationBuilder, read the app's sources using the same config providers as the app, and check the values meet predefined criteria. Taking it a step further for options: Bind configuration to an app options class in the test, and then check the options are as you expect.
There might be a more sophisticated approach. However if the idea is just that you want to confirm that whatever config the app is receiving from whatever config sources it's using contains valid configuration (and options binding produces the desired result), that would be a quick and easy way to check that.
We don't recommend testing the configuration/options systems themselves ... they're heavily tested by the framework.
We link out for most of our unit testing coverage, so we'd need to discuss further with management if we want to try and adopt additional unit testing guidance here. I'm not opposed to it, but it would probably be a low priority item unless the MS engineers ask us to make it happen.
RE: CI/CD/VSTS ... It's not a priority in this doc set, which deals primarily with the ASP.NET Core aspects of testing. Try over in the Test your code section of the TFS/VSTS doc set. https://docs.microsoft.com/en-us/vsts/?view=vsts#pivot=start&panel=start-all
For example ... https://docs.microsoft.com/vsts/pipelines/test/getting-started-with-continuous-testing?view=vsts
It should (in theory :smile:) detect and run your tests just as if you were doing the testing yourself. If any of the tests fail, the build fails. It should 🤞 ✨ Just Work:tm: :sparkles:.
I will mark this issue up for a closer look, but it could take some time before we can get to it given the current workload and priorities. Feel free to continue to discuss your progress with me here on the issue.

We're going to pursue additional updates on periodic reviews of the testing topics. If we need to re-open the issue for further discussion, we can do so.


inline ghost text emulation for older neovim versions

the emulation is working fine with treesitter and lsp but for the built-in syntax it might not be that accurate so i made it as an option and off by default until i figure out the issues with syntax

i got it a lot better with memoization i still need to restructure the code a bit to handle comments and strings
https://github.com/Sam-programs/nvim-setup/blob/main/ghost_text_view.lua#L150

the memoization method would run into a lot of problems
like operators being reused for multiple things in a language
errors happening on the line where we cache somethings
not to mention strings and comments would be hard to handle because we would need to overwrite the memoized characters in the string/comment
local foo = bar -- a comment

the 2 --  are going to be loaded from the cache then we would detect we are a comment at the letter a then we would need to set the highlights to comments i don't think this is worth the effort
if anyone has a better way to utilize memoization please help
and i think it would be better to compute it only using the identifier splitting optimization
local foo = bar + 10
----- ---   ---   --
all of the underlined get 1 hilight as usual
= and + get inspected alone

this would result in many inspect calls but if we only compute it at first time and save the result for the line i think it won't matter

the issue with syntax is it crashes whenever i check if the highlight for it is cleared with hl_iscleared
so i picked the last highlight which seems to work best

never mind using syntax crashes noevim with error 139 regardless if i am checking it or not

Turns out the issue is inspect_pos is calling synstack inside on_line which causes neovim to crash,
probably because of this:

Note: doing anything other than setting extmarks is consideredg other than setting
experimental.
I could use InsertCharPre to get the highlights for the line right before cmp starts,
but is there a better way to run code before cmp starts?

This was a bad idea, i only did it because i wasn't on nightly at the time of making this pr.


[stable/sonatype-nexus] Added image pull secret option to download custom image from private …

…repository
Signed-off-by: Javier Martínez<EMAIL_ADDRESS>
Is this a new chart

NOTE: We're experiencing a high volume of PRs to this repo and reviews will be delayed. Please host your own chart repository and submit your repository to the Helm Hub instead of this repo to make them discoverable to the community. Here is how to submit new chart repositories to the Helm Hub.

What this PR does / why we need it:
Which issue this PR fixes
(optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close that issue when PR gets merged)

fixes #

Special notes for your reviewer:
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

/assign @tsiddique

/ok-to-test

/lgtm


Hardlinked/symlinked folders disappear in folder tree after ALM restart [WIN]

OS:  windows 10E 1703 x64
NPM:  5.3.0
Issue:
Alm basic function works great.  However, I'm trying to use the folder tree to work in a directory outside of the ALM working DIR.  So, I create  a  directory hard link within my ALM working DIR via windows CMD prompt ("mklink /D DIRNAME TARGET"), and ALM sees the root directory and it's subfolders right away, and I can work in it.  But if I close the browser and/or stop ALM and relaunch, the folder tree will list the top level working DIR, and it's subfolders to include the hard link root DIR,  but the sub DIRs of the hard linked DIRs just won't appear.  There's no errors, in the console or the browser.
Any ideas?  Am I going about this the wrong way?

Any ideas? Am I going about this the wrong way?

A bug in lib we are using

Initial list is using glob : https://github.com/alm-tools/alm/blob/d9267c8e5a2e5f3ccd64c0c8954be808904df379/src/server/workers/fileListing/fileListingWorker.ts#L138 https://github.com/isaacs/node-glob Based on our current version and commits : https://github.com/isaacs/node-glob/commits/master doubt that its fixed. Would be great if a simple repro could be presented there https://github.com/isaacs/node-glob/issues :rose:

@basarat  -
I appreciate your response,
but with all do respect, why close the issue?  It's still an issue with one of your dependencies, correct?

To keep the "actionable in here set of issues small". Leaving open for now though since you asked 🌹

@basarat  Thanks! I appreciate it!  I really do love the software, but I know this is a pretty serious bug for windows users.
I mean, it's really hard to make the project functional with this bug in place


Update dependencies and workflows

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 100.00%. Comparing base (bc24253) to head (d4b8ed4).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #729   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           90        90
  Lines         2459      2459
  Branches       239       163   -76
=========================================
  Hits          2459      2459

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


gcsfuse: 0.35.0 -> 0.35.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/googlecloudplatform/gcsfuse/releases.
meta.description for gcsfuse is: "A user-space file system for interacting with Google Cloud Storage"
meta.homepage for gcsfuse is: "https://cloud.google.com/storage/docs/gcs-fuse"
meta.changelog for gcsfuse is: ""
Updates performed

Version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS

The tests defined in passthru.tests, if any, passed

/nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1/bin/gcsfuse passed the binary check.

/nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1/bin/mount_gcsfuse passed the binary check.

/nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1/bin/mount.gcsfuse passed the binary check.

/nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1/bin/mount.fuse.gcsfuse passed the binary check.

4 of 4 passed binary check by having a zero exit code.

4 of 4 passed binary check by having the new version present in output.

found 0.35.1 with grep in /nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1

found 0.35.1 in filename of file in /nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1

directory tree listing: https://gist.github.com/a7204f93168aa789da83b02790b6b96c

du listing: https://gist.github.com/0d3bb65a8e7facfc5b938ad69dce0163

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

4 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 i686-linux rebuild(s)
1 x86_64-darwin rebuild(s)
1 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
gcsfuse

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1 \
  --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 gcsfuse https://github.com/r-ryantm/nixpkgs/archive/ee63aff6918e40a264165f0c7b04e96eb5fec94d.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1
ls -la /nix/store/7vjr1ladgl1n4x6xh9w0bzznahipqlim-gcsfuse-0.35.1/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:

gcsfuse

Maintainer pings

Result of nixpkgs-review pr 126149 at ee63aff6 run on x86_64-linux 1

1 package built successfully:

gcsfuse

1 suggestion:

warning: maintainers-missing
Package does not have a maintainer. Consider adding yourself?
Near pkgs/tools/filesystems/gcsfuse/default.nix:30:5:
   |
30 |     maintainers = [];
   |     ^


Fix #1488: Fix NPE when the targetAop class is null

Please answer these questions before submitting pull request

Why submit this pull request?

[x] Bug fix

[ ] New feature provided

[ ] Improve performance

Related issues
#1488

The Javadoc show that the target class maybe null, so we add the check statement.

Coverage remained the same at 24.589% when pulling 84a1d85527061c5c33983670316b446a6c2bf272 on ascrutae:fix/spring-aop-expression-match-issue into eed6fa18c88ad14277d17149fea92946e9cb1b40 on apache:master.


Working with Environment Variables

Hello,
This may just be a syntax error on my side but I am having issues with the GCS plugin in terms of being able to output environment variables in my GCS upload.
For example, I will have a build pipeline that runs my build / creates my artifacts but when I try to dump them using:
stage('gcs-upload') {
steps {
googleStorageUpload bucket: 'gs://bucket-name/$JOB_NAME-$BUILD_ID, credentialsId: '', pattern: '*.img'
}
I unfortunately will just get a folder within my bucket called '$JOB_NAME-$BUILD_ID/'.
I have tried a few different syntax's included ${JOB_NAME}-${BUILD_ID} and also (${JOB_NAME})-(${BUILD_ID}) along with experimenting with double and single quotes.
I also have ensured that I added the step as part of my build phase in Jenkins as I do not believe the environment variables carry over to the post build phases.
Is there something simple I am doing wrong here?
Thank you in advance for your help!

The proper syntax to use would be "gs://bucket-name/${JOB_NAME}-${BUILD_ID}". See this Jenkinsfile for some examples of using environment variables in the pipeline with a ClassicUploadStep.
Environment variables that are used as part of a larger string use the ${ENV_VAR_NAME} syntax within the a double quoted string. Environment variables that are used directly as the entire argument use the env.ENV_VAR_NAME syntax without quotes.
Let me know if you need further help.

Yup, it was the double quotes around the bucket name ("gs://bucket) plus the brackets that fixed it.  Thank you so much for the help / example!


crash when creating new world

so i wanted to test this mod, but got this crash:
crash-2021-03-24_13.06.20-server.txt
any way to fix this?

update to last version? its not in curseforge buts it is on the discord server or jenkins
https://jenkins.daporkchop.net/job/OpenCubicChunks/

You are loading it with a lot of other mods. It must be conflicting with one or more of them.
I don't know what "Pulsar" is in the log but it seems to be causing the problem maybe. FarSeek seems like something that might be a problem, I'm not sure.
Galacticraft will cause shader-related problems but not usually crashes these days.
Best to do the half/method of troubleshooting where you keep the cc related mods in mods but only half of the other mods at a time until you narrow it down to the conflicting mod/s.

You are loading it with a lot of other mods. It must be conflicting with one or more of them.
I don't know what "Pulsar" is in the log but it seems to be causing the problem maybe. FarSeek seems like something that might be a problem, I'm not sure.
Galacticraft will cause shader-related problems but not usually crashes these days.
Best to do the half/method of troubleshooting where you keep the cc related mods in mods but only half of the other mods at a time until you narrow it down to the conflicting mod/s.

thats on them to config it correct or test if it works before trowing 100+ mods in and not testing them 1 by 1


SafeConfigParser is now called as ConfigParser in P3

Simple and straightforward import, 14 tests are passing before and after this commit under P2 and P3 respectively.

done


Don't hardcode port number on the server

I suggest not to hardcode the port number on the server because this will create a conflict when two different users connect to the same host at CC:
https://github.com/nicolaschotard/stackyter/blob/325e8daa7f56af28f8e8a71f0e05b1dd21b36a31/stackyter.py#L79
To avoid conflicts, I would suggest that each individual use a different port number (server side), for instance 20000 + the user id (361 in my personal case). The port number to use serverside could be specified in the configuration file.

This has been fixed in commit e3ce5b7198dd466d7929de616c0cf5421b24b78c. A random port number (between 1025 and 65635 included) is now selected each time the script is run. This should allow to avoid any conflict is several users are connected at the same time.


Not compiling on most recent Node.JS

Hi,
I have tried compiling on v0.11.13 and would not compile due to errors.
I then tried v0.8.7 which compiled fine without warnings.
I then tried v0.10.29 which compiled and worked with warnings.
Now using node v0.10.29
Error while using v0.11.13

ubuntu@ajw:~/fuseTest2$ npm install fuse4js
npm http GET https://registry.npmjs.org/fuse4js
npm http 304 https://registry.npmjs.org/fuse4js

><EMAIL_ADDRESS>install /home/ubuntu/fuseTest2/node_modules/fuse4js
> node-gyp rebuild

make: Entering directory `/home/ubuntu/fuseTest2/node_modules/fuse4js/build'
  CXX(target) Release/obj.target/fuse4js/fuse4js.o
../fuse4js.cc:60:3: error: ‘uv_async_t’ does not name a type
   uv_async_t async;
   ^
../fuse4js.cc: In function ‘int f4js_rpc(fuseop_t, const char*)’:
../fuse4js.cc:185:23: error: ‘struct’ has no member named ‘async’
   uv_async_send(&f4js.async);
                       ^
../fuse4js.cc:185:28: error: ‘uv_async_send’ was not declared in this scope
   uv_async_send(&f4js.async);
                            ^
../fuse4js.cc: In function ‘void* fuse_thread(void*)’:
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::readlink’ [-Wmissing-field-initializers]
   struct fuse_operations ops = { 0 };
                                    ^
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::getdir’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::mknod’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::mkdir’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::unlink’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::rmdir’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::symlink’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::rename’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::link’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::chmod’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::chown’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::truncate’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::utime’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::open’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::read’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::write’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::statfs’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::flush’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::release’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::fsync’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::setxattr’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::getxattr’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::listxattr’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::removexattr’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::opendir’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::readdir’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::releasedir’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::fsyncdir’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::init’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::destroy’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::access’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::create’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::ftruncate’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::fgetattr’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::lock’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::utimens’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::bmap’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::flag_nullpath_ok’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::flag_nopath’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::flag_utime_omit_ok’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::flag_reserved’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::ioctl’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::poll’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::write_buf’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::read_buf’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::flock’ [-Wmissing-field-initializers]
../fuse4js.cc:376:36: warning: missing initializer for member ‘fuse_operations::fallocate’ [-Wmissing-field-initializers]
../fuse4js.cc: In function ‘void ConvertDate(v8::Handle&, std::string, timespec*)’:
../fuse4js.cc:416:33: error: ‘NewSymbol’ is not a member of ‘v8::String’
   Local prop = stat->Get(String::NewSymbol(name.c_str()));
                                 ^
../fuse4js.cc: At global scope:
../fuse4js.cc:431:31: error: ‘Arguments’ does not name a type
 void ProcessReturnValue(const Arguments& args)
                               ^
../fuse4js.cc:431:42: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 void ProcessReturnValue(const Arguments& args)
                                          ^
../fuse4js.cc: In function ‘void ProcessReturnValue(const int&)’:
../fuse4js.cc:433:12: error: request for member ‘Length’ in ‘args’, which is of non-class type ‘const int’
   if (args.Length() >= 1 && args[0]->IsNumber()) {
            ^
../fuse4js.cc:433:35: error: invalid types ‘const int[int]’ for array subscript
   if (args.Length() >= 1 && args[0]->IsNumber()) {
                                   ^
../fuse4js.cc:434:54: error: invalid types ‘const int[int]’ for array subscript
     Local retval = Local::Cast(args[0]);
                                                      ^
../fuse4js.cc: At global scope:
../fuse4js.cc:441:39: error: ‘Arguments’ does not name a type
 Handle GetAttrCompletion(const Arguments& args)
                                       ^
../fuse4js.cc:441:50: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle GetAttrCompletion(const Arguments& args)
                                                  ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h: In function ‘v8::Handle GetAttrCompletion(const int&)’:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:845:13: error: ‘v8::HandleScope::HandleScope()’ is protected
   V8_INLINE HandleScope() {}
             ^
../fuse4js.cc:443:15: error: within this context
   HandleScope scope;
               ^
../fuse4js.cc:445:36: error: request for member ‘Length’ in ‘args’, which is of non-class type ‘const int’
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsObject()) {
                                    ^
../fuse4js.cc:445:59: error: invalid types ‘const int[int]’ for array subscript
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsObject()) {
                                                           ^
../fuse4js.cc:447:54: error: invalid types ‘const int[int]’ for array subscript
     Handle stat = Handle::Cast(args[1]);
                                                      ^
../fuse4js.cc:449:35: error: ‘NewSymbol’ is not a member of ‘v8::String’
     Local prop = stat->Get(String::NewSymbol("size"));
                                   ^
../fuse4js.cc:455:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("mode"));
                      ^
../fuse4js.cc:461:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("nlink"));
                      ^
../fuse4js.cc:467:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("uid"));
                      ^
../fuse4js.cc:473:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("gid"));
                      ^
../fuse4js.cc:492:16: error: ‘class v8::HandleScope’ has no member named ‘Close’
   return scope.Close(Undefined());
                ^
../fuse4js.cc:492:32: error: too few arguments to function ‘v8::Handle v8::Undefined(v8::Isolate*)’
   return scope.Close(Undefined());
                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:336:28: note: declared here
   friend Handle Undefined(Isolate* isolate);
                            ^
../fuse4js.cc: At global scope:
../fuse4js.cc:497:39: error: ‘Arguments’ does not name a type
 Handle ReadDirCompletion(const Arguments& args)
                                       ^
../fuse4js.cc:497:50: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle ReadDirCompletion(const Arguments& args)
                                                  ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h: In function ‘v8::Handle ReadDirCompletion(const int&)’:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:845:13: error: ‘v8::HandleScope::HandleScope()’ is protected
   V8_INLINE HandleScope() {}
             ^
../fuse4js.cc:499:15: error: within this context
   HandleScope scope;
               ^
../fuse4js.cc:501:36: error: request for member ‘Length’ in ‘args’, which is of non-class type ‘const int’
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsArray()) {
                                    ^
../fuse4js.cc:501:59: error: invalid types ‘const int[int]’ for array subscript
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsArray()) {
                                                           ^
../fuse4js.cc:502:50: error: invalid types ‘const int[int]’ for array subscript
     Handle ar = Handle::Cast(args[1]);
                                                  ^
../fuse4js.cc:516:16: error: ‘class v8::HandleScope’ has no member named ‘Close’
   return scope.Close(Undefined());
                ^
../fuse4js.cc:516:32: error: too few arguments to function ‘v8::Handle v8::Undefined(v8::Isolate*)’
   return scope.Close(Undefined());
                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:336:28: note: declared here
   friend Handle Undefined(Isolate* isolate);
                            ^
../fuse4js.cc: At global scope:
../fuse4js.cc:521:38: error: ‘Arguments’ does not name a type
 Handle StatfsCompletion(const Arguments& args)
                                      ^
../fuse4js.cc:521:49: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle StatfsCompletion(const Arguments& args)
                                                 ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h: In function ‘v8::Handle StatfsCompletion(const int&)’:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:845:13: error: ‘v8::HandleScope::HandleScope()’ is protected
   V8_INLINE HandleScope() {}
             ^
../fuse4js.cc:523:15: error: within this context
   HandleScope scope;
               ^
../fuse4js.cc:525:36: error: request for member ‘Length’ in ‘args’, which is of non-class type ‘const int’
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsObject()) {
                                    ^
../fuse4js.cc:525:59: error: invalid types ‘const int[int]’ for array subscript
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsObject()) {
                                                           ^
../fuse4js.cc:527:54: error: invalid types ‘const int[int]’ for array subscript
     Handle stat = Handle::Cast(args[1]);
                                                      ^
../fuse4js.cc:529:35: error: ‘NewSymbol’ is not a member of ‘v8::String’
     Local prop = stat->Get(String::NewSymbol("bsize"));
                                   ^
../fuse4js.cc:535:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("frsize"));
                      ^
../fuse4js.cc:541:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("blocks"));
                      ^
../fuse4js.cc:547:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("bfree"));
                      ^
../fuse4js.cc:553:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("bavail"));
                      ^
../fuse4js.cc:559:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("files"));
                      ^
../fuse4js.cc:565:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("ffree"));
                      ^
../fuse4js.cc:571:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("favail"));
                      ^
../fuse4js.cc:577:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("fsid"));
                      ^
../fuse4js.cc:583:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("flag"));
                      ^
../fuse4js.cc:589:22: error: ‘NewSymbol’ is not a member of ‘v8::String’
     prop = stat->Get(String::NewSymbol("namemax"));
                      ^
../fuse4js.cc:596:16: error: ‘class v8::HandleScope’ has no member named ‘Close’
   return scope.Close(Undefined());
                ^
../fuse4js.cc:596:32: error: too few arguments to function ‘v8::Handle v8::Undefined(v8::Isolate*)’
   return scope.Close(Undefined());
                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:336:28: note: declared here
   friend Handle Undefined(Isolate* isolate);
                            ^
../fuse4js.cc: At global scope:
../fuse4js.cc:601:40: error: ‘Arguments’ does not name a type
 Handle ReadLinkCompletion(const Arguments& args)
                                        ^
../fuse4js.cc:601:51: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle ReadLinkCompletion(const Arguments& args)
                                                   ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h: In function ‘v8::Handle ReadLinkCompletion(const int&)’:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:845:13: error: ‘v8::HandleScope::HandleScope()’ is protected
   V8_INLINE HandleScope() {}
             ^
../fuse4js.cc:603:15: error: within this context
   HandleScope scope;
               ^
../fuse4js.cc:605:36: error: request for member ‘Length’ in ‘args’, which is of non-class type ‘const int’
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsString()) {
                                    ^
../fuse4js.cc:605:59: error: invalid types ‘const int[int]’ for array subscript
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsString()) {
                                                           ^
../fuse4js.cc:606:32: error: invalid types ‘const int[int]’ for array subscript
     String::Utf8Value av(args[1]);
                                ^
../fuse4js.cc:613:16: error: ‘class v8::HandleScope’ has no member named ‘Close’
   return scope.Close(Undefined());
                ^
../fuse4js.cc:613:32: error: too few arguments to function ‘v8::Handle v8::Undefined(v8::Isolate*)’
   return scope.Close(Undefined());
                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:336:28: note: declared here
   friend Handle Undefined(Isolate* isolate);
                            ^
../fuse4js.cc: At global scope:
../fuse4js.cc:618:39: error: ‘Arguments’ does not name a type
 Handle GenericCompletion(const Arguments& args)
                                       ^
../fuse4js.cc:618:50: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle GenericCompletion(const Arguments& args)
                                                  ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h: In function ‘v8::Handle GenericCompletion(const int&)’:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:845:13: error: ‘v8::HandleScope::HandleScope()’ is protected
   V8_INLINE HandleScope() {}
             ^
../fuse4js.cc:620:15: error: within this context
   HandleScope scope;
               ^
../fuse4js.cc:627:15: error: ‘uv_handle_t’ was not declared in this scope
     uv_unref((uv_handle_t*) &f4js.async);
               ^
../fuse4js.cc:627:27: error: expected primary-expression before ‘)’ token
     uv_unref((uv_handle_t*) &f4js.async);
                           ^
../fuse4js.cc:627:35: error: ‘struct’ has no member named ‘async’
     uv_unref((uv_handle_t*) &f4js.async);
                                   ^
../fuse4js.cc:627:40: error: ‘uv_unref’ was not declared in this scope
     uv_unref((uv_handle_t*) &f4js.async);
                                        ^
../fuse4js.cc:631:16: error: ‘class v8::HandleScope’ has no member named ‘Close’
   return scope.Close(Undefined());
                ^
../fuse4js.cc:631:32: error: too few arguments to function ‘v8::Handle v8::Undefined(v8::Isolate*)’
   return scope.Close(Undefined());
                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:336:28: note: declared here
   friend Handle Undefined(Isolate* isolate);
                            ^
../fuse4js.cc: At global scope:
../fuse4js.cc:636:42: error: ‘Arguments’ does not name a type
 Handle OpenCreateCompletion(const Arguments& args)
                                          ^
../fuse4js.cc:636:53: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle OpenCreateCompletion(const Arguments& args)
                                                     ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h: In function ‘v8::Handle OpenCreateCompletion(const int&)’:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:845:13: error: ‘v8::HandleScope::HandleScope()’ is protected
   V8_INLINE HandleScope() {}
             ^
../fuse4js.cc:638:15: error: within this context
   HandleScope scope;
               ^
../fuse4js.cc:640:36: error: request for member ‘Length’ in ‘args’, which is of non-class type ‘const int’
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsNumber()) {
                                    ^
../fuse4js.cc:640:59: error: invalid types ‘const int[int]’ for array subscript
   if (f4js_cmd.retval == 0 && args.Length() >= 2 && args[1]->IsNumber()) {
                                                           ^
../fuse4js.cc:641:58: error: invalid types ‘const int[int]’ for array subscript
     Local fileHandle = Local::Cast(args[1]);
                                                          ^
../fuse4js.cc:647:16: error: ‘class v8::HandleScope’ has no member named ‘Close’
   return scope.Close(Undefined());
                ^
../fuse4js.cc:647:32: error: too few arguments to function ‘v8::Handle v8::Undefined(v8::Isolate*)’
   return scope.Close(Undefined());
                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:336:28: note: declared here
   friend Handle Undefined(Isolate* isolate);
                            ^
../fuse4js.cc: At global scope:
../fuse4js.cc:652:36: error: ‘Arguments’ does not name a type
 Handle ReadCompletion(const Arguments& args)
                                    ^
../fuse4js.cc:652:47: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle ReadCompletion(const Arguments& args)
                                               ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h: In function ‘v8::Handle ReadCompletion(const int&)’:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:845:13: error: ‘v8::HandleScope::HandleScope()’ is protected
   V8_INLINE HandleScope() {}
             ^
../fuse4js.cc:654:15: error: within this context
   HandleScope scope;
               ^
../fuse4js.cc:657:59: error: no matching function for call to ‘Data(v8::Persistent&)’
     char *buffer_data = node::Buffer::Data(f4js.nodeBuffer);
                                                           ^
../fuse4js.cc:657:59: note: candidates are:
In file included from ../fuse4js.cc:24:0:
/home/ubuntu/.node-gyp/0.11.13/src/node_buffer.h:40:19: note: char* node::Buffer::Data(v8::Handle)
 NODE_EXTERN char* Data(v8::Handle val);
                   ^
/home/ubuntu/.node-gyp/0.11.13/src/node_buffer.h:40:19: note:   no known conversion for argument 1 from ‘v8::Persistent’ to ‘v8::Handle’
/home/ubuntu/.node-gyp/0.11.13/src/node_buffer.h:41:19: note: char* node::Buffer::Data(v8::Handle)
 NODE_EXTERN char* Data(v8::Handle val);
                   ^
/home/ubuntu/.node-gyp/0.11.13/src/node_buffer.h:41:19: note:   no known conversion for argument 1 from ‘v8::Persistent’ to ‘v8::Handle’
../fuse4js.cc:663:19: error: ‘class v8::Persistent’ has no member named ‘Dispose’
   f4js.nodeBuffer.Dispose();
                   ^
../fuse4js.cc:665:16: error: ‘class v8::HandleScope’ has no member named ‘Close’
   return scope.Close(Undefined());
                ^
../fuse4js.cc:665:32: error: too few arguments to function ‘v8::Handle v8::Undefined(v8::Isolate*)’
   return scope.Close(Undefined());
                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:336:28: note: declared here
   friend Handle Undefined(Isolate* isolate);
                            ^
../fuse4js.cc: At global scope:
../fuse4js.cc:670:37: error: ‘Arguments’ does not name a type
 Handle WriteCompletion(const Arguments& args)
                                     ^
../fuse4js.cc:670:48: error: ISO C++ forbids declaration of ‘args’ with no type [-fpermissive]
 Handle WriteCompletion(const Arguments& args)
                                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h: In function ‘v8::Handle WriteCompletion(const int&)’:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:845:13: error: ‘v8::HandleScope::HandleScope()’ is protected
   V8_INLINE HandleScope() {}
             ^
../fuse4js.cc:672:15: error: within this context
   HandleScope scope;
               ^
../fuse4js.cc:674:19: error: ‘class v8::Persistent’ has no member named ‘Dispose’
   f4js.nodeBuffer.Dispose();
                   ^
../fuse4js.cc:676:16: error: ‘class v8::HandleScope’ has no member named ‘Close’
   return scope.Close(Undefined());
                ^
../fuse4js.cc:676:32: error: too few arguments to function ‘v8::Handle v8::Undefined(v8::Isolate*)’
   return scope.Close(Undefined());
                                ^
In file included from /home/ubuntu/.node-gyp/0.11.13/src/node.h:61:0,
                 from ../fuse4js.cc:23:
/home/ubuntu/.node-gyp/0.11.13/deps/v8/include/v8.h:336:28: note: declared here
   friend Handle Undefined(Isolate* isolate);
                            ^
../fuse4js.cc: At global scope:
../fuse4js.cc:682:24: error: variable or field ‘DispatchOp’ declared void
 static void DispatchOp(uv_async_t* handle, int status)
                        ^
../fuse4js.cc:682:24: error: ‘uv_async_t’ was not declared in this scope
../fuse4js.cc:682:36: error: ‘handle’ was not declared in this scope
 static void DispatchOp(uv_async_t* handle, int status)
                                    ^
../fuse4js.cc:682:44: error: expected primary-expression before ‘int’
 static void DispatchOp(uv_async_t* handle, int status)
                                            ^
../fuse4js.cc: In function ‘v8::Handle GetAttrCompletion(const int&)’:
../fuse4js.cc:493:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
../fuse4js.cc: In function ‘v8::Handle ReadDirCompletion(const int&)’:
../fuse4js.cc:517:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
../fuse4js.cc: In function ‘v8::Handle StatfsCompletion(const int&)’:
../fuse4js.cc:597:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
../fuse4js.cc: In function ‘v8::Handle ReadLinkCompletion(const int&)’:
../fuse4js.cc:614:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
../fuse4js.cc: In function ‘v8::Handle GenericCompletion(const int&)’:
../fuse4js.cc:632:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
../fuse4js.cc: In function ‘v8::Handle OpenCreateCompletion(const int&)’:
../fuse4js.cc:648:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
../fuse4js.cc: In function ‘v8::Handle ReadCompletion(const int&)’:
../fuse4js.cc:666:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
../fuse4js.cc: In function ‘v8::Handle WriteCompletion(const int&)’:
../fuse4js.cc:677:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make: *** [Release/obj.target/fuse4js/fuse4js.o] Error 1
make: Leaving directory `/home/ubuntu/fuseTest2/node_modules/fuse4js/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/home/ubuntu/.nvm/v0.11.13/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.EventEmitter.emit (events.js:110:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1046:12)
gyp ERR! System Linux 3.13.0-24-generic
gyp ERR! command "node" "/home/ubuntu/.nvm/v0.11.13/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/ubuntu/fuseTest2/node_modules/fuse4js
gyp ERR! node -v v0.11.13
gyp ERR! node-gyp -v v0.13.0
gyp ERR! not ok
npm ERR<EMAIL_ADDRESS>install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>install script.
npm ERR! This is most likely a problem with the fuse4js package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls fuse4js
npm ERR! There is likely additional logging output above.

npm ERR! System Linux 3.13.0-24-generic
npm ERR! command "/home/ubuntu/.nvm/v0.11.13/bin/node" "/home/ubuntu/.nvm/v0.11.13/bin/npm" "install" "fuse4js"
npm ERR! cwd /home/ubuntu/fuseTest2
npm ERR! node -v v0.11.13
npm ERR! npm -v 1.4.9
npm ERR! code ELIFECYCLE
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/ubuntu/fuseTest2/npm-debug.log
npm ERR! not ok code 0

I do not yet know enough about native node.js extensions to know where to even start.
Kind Regards
Adam

Any progress on this?  I'm not able to build against v0.11.14 on Arch Linux.  I can build against v0.10.29 and it seems to work.

thejinx0r's 0.11 branch builds fine for me on Arch Linux!
https://github.com/thejinx0r/fuse4js/tree/0.11
Try that one if you're having problems.
(Note: Once you've cloned the repo, you have to switch to the "0.11" branch by typing git checkout -b 0.11 origin/0.11)
Can this be merged?

Looks like somebody's already merged all the fixes into a single pull request! #31


Login Prompts for external user when people card is on page

Category

[ ] Question
[ ] Typo
[X] Bug
[ ] Additional article idea

Expected or Desired Behavior
This is not directly related to SPFX, but modern pages should work for external users without login prompts every time
Observed Behavior
Whenever there is a control that uses the new peoplecard, external users get login prompts on every page load.

E.g. when you have comments enabled on the page or when you are using the People webpart. Same happens on lists/libraries with a person column. So basically everywhere where a peoplecard is beeing used.
Steps to Reproduce
Create a site and share it with an external user. Add the people webpart to the homepage and add some people or just enable comments. Login as the external user and you will see prompts everywhere...

Sorry for leaving this open.  As you mention, this isn't related to spfx / development.  As such, I'm going to close this.


TestSynchronizer - Manual Sync

1) TestSynchronizer - Manual Sync
       "before each" hook for "conflicts: preview":

      Error: Timeout of 5000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
      + expected - actual

https://dev.azure.com/monacotools/a6d41577-0fa3-498e-af22-257312ff0545/_build/results?buildId=162312

It seems to be issue with the machine because the setUp of this test shall not take long. It involves initialising of files that uses in memory fsp.


Question about io_uring scheduler

Hi all,
I have a small question regarding the io_uring scheduler implementation. From skimming the implementation, I found it interesting that you use the kernel header directly instead of the much more high level one provided by liburing.
What is the rationale here? I found that a lot of the code is just replicating what liburing already does (setting up the memory mapped regions etc.).
The reason I am asking specifically is because I am experimenting with it and want to make use of registered buffers and file descriptors and I am shying away from reimplementing the required wrappers.

Hi Thomas,
I asked Eric in the beginning on what he prefers and we went with a header only solution for an easier build configuration. A production ready library should probably use liburing for all the details and incompatibilities that might exists. The work items land in a simple FIFO queue and only one thread is allowed to drive the execution context. At the moment it is really just a proof of concept implementation.
What I would like to look forward to, is to investigate how an API that uses io urings buffer pool looks like. Or its multshot jobs. I've made some progress in my I/O[1] repo where I try out a concepts based approach to I/O schedulers.
[1] https://github.com/maikel/senders-io

Hi Maikel,
Thanks for the clarifications! Makes total sense.