Not Authenticating with LDAP. Always return false

Hello Friends,
I am implementing Adldap2/Adldap2-Laravel package.
when I use
Adldap::getProvider('default')->auth()->attempt($username='xxxx', $password='xxxxx')
then it returns true if user exists in Active directory(AD) but when I use
Auth::attempt($credentials) with correct AD credentials then it returns false.
my config/adldap.php is following:
'connection_settings' => [
            /*
            |--------------------------------------------------------------------------
            | Account Prefix
            |--------------------------------------------------------------------------
            |
            | The account prefix option is the prefix of your user accounts in AD.
            |
            | For example, if you'd prefer your users to use only their username instead
            | of specifying a domain ('ACME\jdoe'), enter your domain name.
            |
            */

            'account_prefix' => '',

            /*
            |--------------------------------------------------------------------------
            | Account Suffix
            |--------------------------------------------------------------------------
            |
            | The account suffix option is the suffix of your user accounts in AD.
            |
            | For example, if your domain DN is DC=corp,DC=acme,DC=org, then your
            | account suffix would be @corp.acme.org. This is then appended to
            | then end of your user accounts on authentication.
            |
            */

            'account_suffix' => '',

            /*
            |--------------------------------------------------------------------------
            | Domain Controllers
            |--------------------------------------------------------------------------
            |
            | The domain controllers option is an array of servers located on your
            | network that serve Active Directory. You can insert as many servers or
            | as little as you'd like depending on your forest (with the
            | minimum of one of course).
            |
            */

            'domain_controllers' => ['xxx.xxx.x.x'],

            /*
            |--------------------------------------------------------------------------
            | Port
            |--------------------------------------------------------------------------
            |
            | The port option is used for authenticating and binding to your AD server.
            |
            */

            'port' => 389,

            /*
            |--------------------------------------------------------------------------
            | Base Distinguished Name
            |--------------------------------------------------------------------------
            |
            | The base distinguished name is the base distinguished name you'd like
            | to perform operations on. An example base DN would be DC=corp,DC=acme,DC=org.
            |
            | If one is not defined, then Adldap will try to find it automatically
            | by querying your server. It's recommended to include it to
            | limit queries executed per request.
            |
            */

            'base_dn' => 'OU=Managed Users, OU=xxxxx, DC=xxxxx',

            /*
            |--------------------------------------------------------------------------
            | Administrator Account Suffix
            |--------------------------------------------------------------------------
            |
            | This option allows you to set a different account suffix for your
            | configured administrator account upon binding.
            |
            | If left empty, your `account_suffix` option will be used.
            |
            */

            'admin_account_suffix' => '',

            /*
            |--------------------------------------------------------------------------
            | Administrator Username & Password
            |--------------------------------------------------------------------------
            |
            | When connecting to your AD server, an administrator username and
            | password is required to be able to query and run operations on
            | your server(s). You can use any user account that has
            | these permissions.
            |
            */

            'admin_username' => env('ADLDAP_ADMIN_USERNAME', 'xxxxxxxx'),
            'admin_password' => env('ADLDAP_ADMIN_PASSWORD', 'xxxxxxx'),

            /*
            |--------------------------------------------------------------------------
            | Follow Referrals
            |--------------------------------------------------------------------------
            |
            | The follow referrals option is a boolean to tell active directory
            | to follow a referral to another server on your network if the
            | server queried knows the information your asking for exists,
            | but does not yet contain a copy of it locally.
            |
            | This option is defaulted to false.
            |
            */

            'follow_referrals' => false,

            /*
            |--------------------------------------------------------------------------
            | SSL & TLS
            |--------------------------------------------------------------------------
            |
            | If you need to be able to change user passwords on your server, then an
            | SSL or TLS connection is required. All other operations are allowed
            | on unsecured protocols. One of these options are definitely recommended
            | if you have the ability to connect to your server securely.
            |
            */

            'use_ssl' => false,
            'use_tls' => false,

        ],

Please provide me a correct solution.
Thanks.

Can you post your config/auth.php file?

Hi Steve,
Thank you for replying. Please find the config/auth.php .
 [
        'guard' => 'web',
        'passwords' => 'users',
    ],
    /*
      |--------------------------------------------------------------------------
      | Authentication Guards
      |--------------------------------------------------------------------------
      |
      | Next, you may define every authentication guard for your application.
      | Of course, a great default configuration has been defined for you
      | here which uses session storage and the Eloquent user provider.
      |
      | All authentication drivers have a user provider. This defines how the
      | users are actually retrieved out of your database or other storage
      | mechanisms used by this application to persist your user's data.
      |
      | Supported: "session", "token"
      |
     */
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'adldap',
        ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],
    /*
      |--------------------------------------------------------------------------
      | User Providers
      |--------------------------------------------------------------------------
      |
      | All authentication drivers have a user provider. This defines how the
      | users are actually retrieved out of your database or other storage
      | mechanisms used by this application to persist your user's data.
      |
      | If you have multiple user tables or models you may configure multiple
      | sources which represent each model / table. These sources may then
      | be assigned to any extra authentication guards you have defined.
      |
      | Supported: "database", "eloquent"
      |
     */
    'providers' => [
        'adldap' => [
            'driver' => 'adldap',
            'model' => App\User::class,
        ],
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
    ],
    /*
      |--------------------------------------------------------------------------
      | Resetting Passwords
      |--------------------------------------------------------------------------
      |
      | Here you may set the options for resetting passwords including the view
      | that is your password reset e-mail. You may also set the name of the
      | table that maintains all of the reset tokens for your application.
      |
      | You may specify multiple password reset configurations if you have more
      | than one user table or model in the application and you want to have
      | separate password reset settings based on the specific user types.
      |
      | The expire time is the number of minutes that the reset token should be
      | considered valid. This security feature keeps tokens short-lived so
      | they have less time to be guessed. You may change this as needed.
      |
     */
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'email' => 'auth.emails.password',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],
];

Hmmm, not seeing any issues, can you post your AuthController code please?

Please find the AuthController.php as below:
middleware($this->guestMiddleware(), ['except' => 'logout']);
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|min:6|confirmed',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }

}

Are you allowing users to login using their email or username?
Can you also post your config/adldap_auth.php file?

I am llowing users to login with username.
Also, I am using  admin_username as the concatination of  "DC=CompanyName" and username of AD then it is connecting otherwise giving wrong credential error and for Authenticating with Adldap::getProvider('default')->auth()->attempt($username='xxxx', $password='xxxxx')
I also use the same thing.
For example my company name is "Ayur" and my username is "test" then we use "Ayur\test" as admin_user then it connecting otherwise giving wrong credential error.
The config/adldap_auth.php is following:
 'default',

    /*
    |--------------------------------------------------------------------------
    | Username Attribute
    |--------------------------------------------------------------------------
    |
    | The username attribute is an array of the html input name and the LDAP
    | attribute to discover the user by. The reason for this is to hide
    | the attribute that you're using to login users.
    |
    | For example, if your input name is `username` and you'd like users
    | to login by their `samaccountname` attribute, then keep the
    | configuration below. However, if you'd like to login users
    | by their emails, then change `samaccountname` to `mail`.
    | and `username` to `email`.
    |
    */

    'username_attribute' => ['username' => 'samaccountname'],

    /*
    |--------------------------------------------------------------------------
    | Limitation Filter
    |--------------------------------------------------------------------------
    |
    | The limitation filter allows you to enter a raw filter to only allow
    | specific users / groups / ous to authenticate.
    |
    | This should be a standard LDAP filter.
    |
    */

    'limitation_filter' => '',

    /*
    |--------------------------------------------------------------------------
    | Login Fallback
    |--------------------------------------------------------------------------
    |
    | The login fallback option allows you to login as a user located on the
    | local database if active directory authentication fails.
    |
    | Set this to true if you would like to enable it.
    |
    */

    'login_fallback' => false,

    /*
    |--------------------------------------------------------------------------
    | Password Key
    |--------------------------------------------------------------------------
    |
    | The password key is the name of the input array key located inside
    | the user input array given to the auth driver.
    |
    | Change this if you change your password fields input name.
    |
    */

    'password_key' => 'password',

    /*
    |--------------------------------------------------------------------------
    | Login Attribute
    |--------------------------------------------------------------------------
    |
    | The login attribute is the name of the active directory user property
    | that you use to log users in. For example, if your company uses
    | email, then insert `mail`.
    |
    */

    'login_attribute' => 'samaccountname',

    /*
    |--------------------------------------------------------------------------
    | Bind User to Model
    |--------------------------------------------------------------------------
    |
    | The bind User to Model option allows you to access the Adldap user model
    | instance on your laravel database model to be able run operations
    | or retrieve extra attributes on the Adldap user model instance.
    |
    | If this option is true, you must insert the trait:
    |
    |   `Adldap\Laravel\Traits\AdldapUserModelTrait`
    |
    | Onto your User model configured in `config/auth.php`.
    |
    | Then use `Auth::user()->adldapUser` to access.
    |
    */

    'bind_user_to_model' => false,

    /*
    |--------------------------------------------------------------------------
    | Sync Attributes
    |--------------------------------------------------------------------------
    |
    | Attributes specified here will be added / replaced on the user model
    | upon login, automatically synchronizing and keeping the attributes
    | up to date.
    |
    | The array key represents the Laravel model key, and the value
    | represents the Active Directory attribute to set it to.
    |
    | The users email is already synchronized and does not need to be
    | added to this array.
    |
    */

    'sync_attributes' => [

        'name' => 'cn',

    ],

    /*
    |--------------------------------------------------------------------------
    | Select Attributes
    |--------------------------------------------------------------------------
    |
    | Attributes to select upon the user on authentication and binding.
    |
    | If no attributes are given inside the array, all attributes on the
    | user are selected.
    |
    | ** Note ** : Keep in mind you must include attributes that you would
    | like to synchronize, as well as your login attribute.
    |
    */

    'select_attributes' => [

    ],

];

In your AuthController, you didn't specify the username string for authentication:
/**
 * The username string to use for authentication.
 *
 * @var string
 */
protected $username = 'username';

By default this is set to email. You also haven't changed your validator method to match:
return Validator::make($data, [
    'name' => 'required|max:255',
    'email' => 'required|max:255|unique:users', // Must switch to `username`
    'password' => 'required|min:6|confirmed',
]);

You also need to make sure you've changed your laravel migration to use username instead of email.

Hi Steve,
I have changed as you discussed above.which are:

inserting protected $username = 'username'; in AuthController

Change username instead of email in validation

And also I have a username field in my users table

But still when I using
$credentials = ['username' => 'xxxxxxxxx', 'password' => 'xxxxxxxx'];
$ff =\Auth::attempt($credentials);
var_dump($ff);
Then It returns false. The above credential is a correct credential.
By using this credential
Adldap::getProvider('default')->auth()->attempt($username='xxxx', $password='xxxxx') is working.

Strange, is your configuration cached by chance? Try clearing it using php artisan cache:clear.

Closing due to inactivity.


feat: add example store,  additional columns

Adding example store implemenation for everybody to follow, adding additional columns to the users table.

looks good to me!

In db/schema.sql line 14, for CreatedAt, would it be better to use standard library “time” instead of string to handle its data more smoothly?
Like the following:
import (
…
…
"time"
)
type User struct {
…
CreatedAt time.Time db:"created_at" json:"createdAt"
}

In db/schema.sql line 17, can we do “student_id INT NOT NULL CHECK (student_id >= 00000000 AND student_id <= 99999999)” to ensure we have the total 8 digits of student numbers?

Like GetAll() in db/schema.sql has the error handling, should we add error handling for the other getter functions?

In db/schema.sql line 14, for CreatedAt, would it be better to use standard library “time” instead of string to handle its data more smoothly?
Like the following:
import (
…
…
"time"
)
type User struct {
…
CreatedAt time.Time db:"created_at" json:"createdAt"
}
In db/schema.sql line 17, can we do “student_id INT NOT NULL CHECK (student_id >= 00000000 AND student_id <= 99999999)” to ensure we have the total 8 digits of student numbers?
Like GetAll() in db/schema.sql has the error handling, should we add error handling for the other getter functions?

Oop, that's 100% right, good catch.
I think if we store student_id as a number we won't be able to verify that it has 8 digits through that check, it would be better to check it on the application level (i.e. in the method for creating a new user). I think consistency checks would be a bigger concern if we used language without static types.
All the functions except GetAll() are currently not implemented as stated by the comment. So somebody else will get to implement all of the logic for other db methods, including error handling.


[hevce] Enabled LowPower mode on CNL

Signed-off-by: Denis Volkov<EMAIL_ADDRESS>

@onabiull , I will update this patch today

My original question was related to runtime behavior with API 1.27 or higher. Does HEVC Encoder return correct MFX_ERR_UNSUPPORTED on pre-CNL platforms with this change?

This patch doesn't change behavior of this function on pre-CNL platforms - in this case GetVAEntryPoint() returns  VAEntrypointEncSlice as previously. Or I miss something?
So, if we cannot get MFX_ERR_UNSUPPORTED on pre-CNL platforms for HEVC VDEnc, I think this is an incorrect behavior and it need to be fixed by another patches.


Individual vertexes do not need to be relocated to relocate a model

Instead one can use drawing transforms to relocate a model, as long as you do not clear the depth buffer.
I'll show an example:
struct model_info{
ALLEGRO_VERTEX* buffer = new ALLEGRO_VERTEX[8];// not gonnabother typing out the vertices for a standard cube;
int * indicies= new int[36] ;// not gonna bother with this either
int indicie_amount = 36;
ALLEGRO_BITMAP bmp;
vector3 scale;
vector3 rotation;
vector3 position;
};
struct camera_info {
vector3 position;
vector3 rotation;
};
void draw() {
ALLEGRO_TRANSFORM po;
al_identity_transform(&po);
al_perspective_transform(&po, -0.5f, -0.5f, 1.0f,
0.5f , 0.5f, 100.0f);
al_use_projection_transform(&po);
model_info model;
model.position = vector3(0,0,20);
model.scale = vector3(1,1,1);
model.rotation = vector3(0,0,M_PI/9);
camera_info camera;
camera.position = vector3(0,0,0);
camera.rotation = vector3(0,0,0);
al_set_render_state(ALLEGRO_DEPTH_TEST, true);
al_set_render_state(ALLEGRO_DEPTH_FUNCTION, ALLEGRO_RENDER_LESS_EQUAL);
al_clear_depth_buffer(1);
ALLEGRO_TRANSFORM transform;
al_identity_transform(&transform);
al_scale_transform_3d(&transform,model.scale.x,model.scale.y,model.scale.z);
al_rotate_transform_3d(&transform,1,0,0,model.rotation.x);
al_rotate_transform_3d(&transform,0,1,0,model.rotation.y);
al_rotate_transform_3d(&transform,0,0,1,model.rotation.z);
vector3 cam_offset = model.position - camera.position; // camera offset from the model
al_translate_transform_3d(&transform, cam_offset.x,cam_offset.y,cam_offset.z);
// Idk how camera rotation gets done by you, so this is just a placeholder
al_rotate_transform_3d(&transform,1,0,0,camera.rotation.x);
al_rotate_transform_3d(&transform,0,1,0,camera.rotation.y);
al_rotate_transform_3d(&transform,0,0,1,camera.rotation.z);
al_use_transform(&transform);
al_draw_indexed_prim(model.buffer, NULL,
model.bmp, model.indicies,
indicie_amount,
ALLEGRO_PRIM_TRIANGLE_LIST);
model_info model2;
model2.position = vector3(0,0,40);
model2.scale = vector3(3,3,1);
model2.rotation = vector3(0,0,M_PI/9);
al_identity_transform(&transform);
al_scale_transform_3d(&transform,model2.scale.x,model2.scale.y,model2.scale.z);
al_rotate_transform_3d(&transform,1,0,0,model2.rotation.x);
al_rotate_transform_3d(&transform,0,1,0,model2.rotation.y);
al_rotate_transform_3d(&transform,0,0,1,model2.rotation.z);
vector3 cam_offset = model2.position - camera.position;
al_translate_transform_3d(&transform, cam_offset.x,cam_offset.y,cam_offset.z);
al_rotate_transform_3d(&transform,1,0,0,camera.rotation.x);
al_rotate_transform_3d(&transform,0,1,0,camera.rotation.y);
al_rotate_transform_3d(&transform,0,0,1,camera.rotation.z);
al_use_transform(&transform);
al_draw_indexed_prim(model2.buffer, NULL,
model2.bmp, model2.indicies,
model2.indicie_amount,
ALLEGRO_PRIM_TRIANGLE_LIST);
}

I'm not sure I understand the comment.
For positioning, you'd typically use AllegroFlare::Placement3D.  There's a little discussion here on allegro.cc here.  The orientation and coordinate of the underlying model does not change.


ci: unblock

Signed-off-by: Lizan Zhou<EMAIL_ADDRESS>

@mattklein123 I can't fix clang-tidy without more disk space but this at least unblock release


Migration from internal repo to public one

Transferring all files as-is from the tip of the original master branch.
Original Git commit history is not preserved for the security reasons.

Checking if self-approvals are disabled...

👍

Indeed.

:+1:


Simplify @arborjs/react public API

Currently, the repository contains a few different experimental hooks such as useArborState, useArborValue, useArborNode, etc...
It would be ideal if we could make the public API as simple as possible in order to reduce the learning curve and keep the lib free of unnecessary boilerplate.
If we could stick to a single React hook to cover all use-cases then devs need to learn only one API. For instance, we could make useArbor flexible enough to take different arguments in order to achieve the various use cases. Example:
type Target<T extends object> = Arbor<T> | Node<T> | T
type Selector<T extends object, K extends object> = (state: T) => K

function useArbor<
 T extends object,
 K extends object = T,
>(target: Target<T>, selectorOrPath: Path | Selector<T, k>)

This would allow for use-cases like, the following:
Give the following store:
interface User {
  id: number
  name: string
}

const store = new Arbor<User[]>([
  { id: 1, name: "Alice" },
  { id: 2, name: "Bob" },
  { id: 3, name: "Carol" },
])

Then:

Subscribe to all mutations to the store, e.g.:

const users = useArbor(store)

Subscribe to mutations targeting a specific node within the store, e.g.:

const firstUser = useArbor(store.root[0])

Subscribe to mutations targeting a specific path within the store, e.g.:

const secondUser = useArbor<User>(store, Path.parse("/users/1"))

Subscribe to mutations targeting a path regex pattern, e.g.:

const anyUser = useArbor<User>(store, /\/users\/[0-9]+$/)

// Or

const anyUser = useArbor<User>(store, "/users/[0-9]+$")

Note that a path works similarly to an object dot notation: users.1 Is equivalent to /users/1
I’m still not sure if it’s worth keeping useArborState and useArborValue…

Resolved by https://github.com/drborges/arbor/pull/61


zsh: command not found: chunkc

I already spent at least 5 hours to made skhd work, but i stuck. I want to configure macbook m1 via yabai and skhd. Yabai is working, skhd too i suppose, but keymaps didn't work. I restarted skhd with verbose parameter and on keypress i'm getting error zsh: command not found: chunkc. I can't find any solution, i've reinstalled both applications many times. I was even reading source code, but there is no any quote about this binary. What can i do in this case?

I think the example config contains commands for chunkc, which I suspect is another program like yabai. You don't have that installed so that's why you get the error. Just change the commands to for example yabai -m space --focus next


Adding new F5 upgrade script from RPC10 to RPC 11

This script will generate tmsh commands to execute the necessary changes in order to migration to RPC11

@BjoernT you will need to rebase your PR so it will pass travis

recheck

Rebased and pushed as #827


feature request: allow providing "Max tokens" parameter in web UI

DIAL core (API) allows you to specify max_prompt_tokens parameters, but DIAL Chat (web UI) does not.
As a user of Web UI (DIAL Chat), I want to be able to specify that parameter.
This issue will collect user feedback to see if team needs to prioritize this feature. Currently we have a single request.

@justrp isn't the issue of https://github.com/epam/ai-dial-chat. I guess the Core has nothing to do here.

The issue doesn't relate to the Core but Chat UI.
closed as invalid.


add sdk/resourcemanager/maps/armmaps live test

operation coverage:0.88(14/16)

/azp run go - armmaps - ci


Fixed settings tabs from not unclicking (#4)

Prevents ED settings from being marked as selected when switching to a new tab.
Note: Navigating to the last, or should I say previous tab (excluding 'Plugins' and 'Settings') is still an on-going issue. You can read up on that here.

This pr does absolutely nothing related to the settings tab.


add dashboard modules

This moves modules in from https://github.com/chainguard-dev/terraform-cloudrun-dashboard -- after this is merged we can archive that repo.
The new directory ./dashboard includes:

service and job, which take a multi-regional Cloud Run Service or Job name and presents common metrics for them
topic, which takes a Pub/Sub topic prefix and presents common metrics for its subscribers, assuming they have that topic name as their subscription name prefix
tiles, which provide reusable dashboard tile definitions, which we can extend over time.

It also defines dashboards for the ingress and recorder services, and broker topics.

Dropped alert policies for now, I'll readd it later. Also dropped the project_id variable, which was only used to power the url output, which I've also removed.


Update cloud-setup-databases.in - help message fix

Description
"cloud-setup-database" to "cloudstack-setup-databases" in the help section of the script

Types of changes

[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

How Has This Been Tested?
No need to?

@blueorangutan package

@shwstppr a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: ✔centos7 ✖centos8 ✔debian. JID-2651


-transparent failure with opengl renderer

This is the issue discussed in #207, but I'd like to query the conclusion that it arises from an internal Matlab bug in 'print'.  I'm running Matlab 2018a on Mac OS 10.13.6
As previously reported, this usage fails to give a transparent background:
surf(peaks)
export_fig pekes_ef -eps -transparent -opengl
However, if I use 'print' directly with -opengl, it works OK:
print -opengl -depsc pekes_p

See the note I left in issue #207.


Corrupt xvgs check slows down gromacs parser and makes unnecessary backups

The addition of checking for corrupt xvgs slows down the gromacs parser quite a bit which may or may not be related to the use of numpy.genfromtxt? It might be better/faster to iterate over the lines and check for lines with different numbers of elements.
In the gromacs parser, prior to the call removeCorruptLines(), I had it make a backup of the xvgs in a separate folder. This is not always totally necessary in the case where there are no corrupt lines in the xvgs. Instead, it should only make backups of offending xvgs.

Maybe run a bit of benchmarking?
Also, one fix could be to make the handling of corrupt xvgs be optional, or possible to be bypassed... In some applications speed will be important.

I'm not sure how best to handle this, since this feature is currently gromacs specific which would make adding something like a feature flag...maybe a bit unnecessary? Could be the best way to handle this is to generalize the corruption check and then add a feature flag for it.

Hannes has been arguing that we ought to have a way to pass parser-specific
options (he has a proposal for how to do it). This is another good argument
for that. Generalizing the corruption check to other data formats would be
a pain.
I'd fix the backup issue at this point, and then do the benchmarking to see
how much of a speed hit this is versus sensible alternatives. We can leave
the "making it optional" aspect for later.
On Wed, Feb 24, 2016 at 4:39 PM, Nathan Lim<EMAIL_ADDRESS>wrote:

I'm not sure how best to handle this, since this feature is currently
gromacs specific which would make adding something like a feature
flag...maybe a bit unnecessary? Could be the best way to handle this is to
generalize the corruption check and then add a feature flag for it.
—
Reply to this email directly or view it on GitHub
https://github.com/MobleyLab/alchemical-analysis/issues/81#issuecomment-188535633
.

--
David Mobley
<EMAIL_ADDRESS>949-385-2436


MWPW-132031

Resolves: MWPW-132031
Before: https://main--dc--adobecom.hlx.page/de/drafts/rivero/credit-cards
After: https://mwpw-132031--dc--adobecom.hlx.page/de/drafts/rivero/credit-cards

Codecov Report

Merging #424 (d4a87e7) into stage (934d55e) will increase coverage by 3.09%.
Report is 26 commits behind head on stage.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##            stage     #424      +/-   ##
==========================================
+ Coverage   93.50%   96.59%   +3.09%
==========================================
  Files          26       26
  Lines        2987     2970      -17
==========================================
+ Hits         2793     2869      +76
+ Misses        194      101      -93

Files
Coverage Δ

acrobat/scripts/imageReplacer.js
100.00% <100.00%> (ø)

acrobat/scripts/scripts.js
96.91% <100.00%> (ø)

... and 3 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Feature request: Set multiple Set-Cookie headers

Issue
Looking through the source code of @elysiajs/cookie, the only way to set multiple Set-Cookie headers currently is to pass any array to context.set.headers["Set-Cookie"]. An obvious issue is that you have to ignore TS errors, but another issue is that you can override existing Set-Cookie headers.
I'm aware I can just use @elysiajs/cookie, but not having a native way to handle it (without TS errors) is an issue IMO. Personally, I'm creating a library API that works with cookies and not having a solution natively sucks.
Possible solutions
Context.set.cookie()
This similar to res.cookie() in Express. I'm not sure if it's better to accept raw Set-Cookie header or use a similar syntax to @elysiajs/cookie where it takes a name, value, and attributes. Either way, it will create a new Set-Cookie header rather than overriding the existing value.
const serializedCookie = cookie.serialize(name, value, attributes);
context.set.cookie(serializedCookie);

Replace Context.set with Context.response
You still can keep the set name but I don't think set.setHeaders or set.appendHeaders() makes sense. Both of these proposal uses a similar API to native Headers.
context.response.headers.set(name, value);
context.response.headers.append(name, value);

context.response.setHeaders(name, value);
context.response.appendHeaders(name, value);

Also, it makes more sense to get response header values from context.response compared to context.set.
Update type of Context.set.headers to Record<string, string | string[]>
The same API and implementation but just updated types.
const responseSetCookieHeader = response.set.headers["Set-Cookie"];
context.set.headers["Set-Cookie"] = Array.isArray(responseSetCookieHeader) ? responseSetCookieHeader : [responseSetCookieHeader];

We are planning to merge cookie plugin into Elysia core to resolve the TypeScript error, but we are still deciding on the syntax of it.
In the meantime, I added a set.headers to accept Set-Cookie to be string | string[] to handle TypeScript error which is available in 0.6.17.

Sweet! Is there an issue for tracking that merge?

Likely going to be under miyu branch, a candidate for the next release.
Currently, I'm implementing tracing and adding unit tests, so it might take some time until the cookie is properly done, I'll let you know once the cookie is ready to be tested.

This should be fixed with Reactive Cookie in 0.7 #103
Or you can either use set.cookie like this:


UI: Check status api to verify if airflow is setup

Check status api to notify user about airflow setup before allowing them to create ingestion pipelines

@darth-coder00 status API check should be a silent check. if there is any error i.e status other than 200 we should show the helpful message to the users similar to Explore page when the ElasticSearch server is not available.
cc @vivekratnavel @shahsank3t

@harshach, Yes we will not throw any toast notification for any errors in status api, provide some message on UI that is highlighted to grab user's attention.


Eager Loading a relation that calls another relation returns incorrect results

Laravel Version
11.7.0
PHP Version
8.3.7
Database Driver & Version
PostgreSQL 15.7 and MySQL 8.0.37
Description
When eager loading a model relationships, the results differ from when they are lazy loaded.
This issue occurs whenever a Relation is called inside the definition of another Relation, but only when eager loading is used on the main one.
After investigation I realized that the cause lies in Illuminate\Database\Eloquent\Builder@eagerLoadRelation:
 // First we will "back up" the existing where conditions on the query so we can
 // add our eager constraints.
 $relation = $this->getRelation($name);
 $relation->addEagerConstraints($models);

 // Then we will merge the wheres that were on the
 // query back to it in order that any where conditions might be specified.
 $constraints($relation);

Which calls the Illuminate\Database\Eloquent\Builder@getRelation method:
 // We want to run a relationship query without any constraints so that we will
 // not have to remove these where clauses manually which gets really hacky
 // and error prone. We don't want constraints because we add eager ones.
 $relation = Relation::noConstraints(function () use ($name) {
     try {
         return $this->getModel()->newInstance()->$name();
     } catch (BadMethodCallException) {
         throw RelationNotFoundException::make($this->getModel(), $name);
     }
 });

Which gets to the root cause of the problem in Illuminate\Database\Eloquent\Relations\Relation@noConstraints:
$previous = static::$constraints;

 static::$constraints = false;

 // When resetting the relation where clause, we want to shift the first element
 // off of the bindings, leaving only the constraints that the developers put
 // as "extra" on the relationships, and not original relation constraints.
 try {
 return $callback();
 } finally {
 static::$constraints = $previous;
 }

The method Illuminate\Database\Eloquent\Relations\Relation@noConstraints is called during eager loading and uses a boolean attribute to manage the constraints. However, this flag is static and seems to be causing the where clauses of other relations to be omitted, leading to incorrect results.
Steps To Reproduce

Create the following schema

        // 0001_01_01_000000_create_users_table.php
        Schema::create('categories', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('user_id');
            $table->foreign('user_id')->references('id')->on('users');
            $table->text('name');
            $table->timestamps();
        });
        Schema::create('examples', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('category_id');
            $table->foreign('category_id')->references('id')->on('categories');
            $table->text('name');
            $table->boolean('restricted');
            $table->timestamps();
        });

Create the following seeder:

        $user = User::factory()->create();

        $categories = [
            Category::query()->create(['user_id' => $user->id, 'name' => 'Category 1']),
            Category::query()->create(['user_id' => $user->id, 'name' => 'Category 2']),
            Category::query()->create(['user_id' => $user->id, 'name' => 'Category 3']),
        ];

        Example::insert([
            ['category_id' => $categories[0]->id, 'name' => 'Example 1', 'restricted' => false],
            ['category_id' => $categories[1]->id, 'name' => 'Example 2', 'restricted' => true],
            ['category_id' => $categories[2]->id, 'name' => 'Example 3', 'restricted' => false],
            ['category_id' => $categories[2]->id, 'name' => 'Example 4', 'restricted' => false],
            ['category_id' => $categories[2]->id, 'name' => 'Example 5', 'restricted' => true],
        ]);

        User::factory()->create(); // another user just for demonstration

Create a scope in the Example model:

class Example extends Model
{
    // ...
    /**
     * The authenticated user should only have access to not restricted Examples
     * or to the examples he owns.
     */
    public function scopeHasAccess(Builder $query, ?User $user = null): Builder
    {
        return $query->where(
            fn ($query) => $query->where('restricted', false)
                ->when(
                    $user !== null,
                    fn($query) => $query->orWhereIn('category_id', $user->categories->pluck('id'))
                )
        );
    }
}

Add the following relations to the models:

class User extends Authenticatable
{
    // ...
    public function categories(): HasMany
    {
        return $this->hasMany(Category::class);
    }
}

class Category extends Model
{
    // ...
    public function examples(): HasMany
    {
        return $this->hasMany(Example::class);
            ->hasAccess(Auth::user());
     }
}

Authenticate:

    Auth::login(User::find(1));
    // Auth::login(User::find(2));

Fetch all categories with their respective examples

        dump('Authenticated user: '.Auth::user()->id);
        Category::get()->each(
            fn(Category $category) => dump(sprintf('- %s: %d examples', $category->name, $category->examples->count()))
        );

// Authenticated user: 1
// - Category 1: 1 examples"
// - Category 2: 1 examples"
// - Category 3: 3 examples"
// ----------------------------
// Authenticated user: 2"
// - Category 1: 1 examples"
// - Category 2: 0 examples"
// - Category 3: 2 examples"

Execute the code again but eager loading the examples relation:

        dump('Authenticated user: '.Auth::user()->id);
        Category::with('examples')->get()->each(
            fn(Category $category) => dump(sprintf('- %s: %d examples', $category->name, $category->examples->count()))
        );

// Authenticated user: 1
// - Category 1: 1 examples"
// - Category 2: 1 examples"
// - Category 3: 3 examples"
// ----------------------------
// Authenticated user: 2"
// - Category 1: 1 examples"
// - Category 2: 1 examples"
// - Category 3: 3 examples"

Expected behavior:
The fetched relations should be consistent regardless of whether they are lazy or eager loaded.

Actual behavior:

Without eager loading: The user of id 2 has access to 3 examples (correct)
With eager loading: The user of id 2 has access to 5 examples (wrong)

Hey there, thanks for reporting this issue.
We'll need more info and/or code to debug this further. Can you please create a repository with the command below, commit the code that reproduces the issue as one separate commit on the main/master branch and share the repository here?
Please make sure that you have the latest version of the Laravel installer in order to run this command. Please also make sure you have both Git & the GitHub CLI tool properly set up.
laravel new bug-report --github="--public"

Do not amend and create a separate commit with your custom changes. After you've posted the repository, we'll try to reproduce the issue.
Thanks!

Here it is: https://github.com/allandantasdev/laravel-bug-report-51825/commit/52ef81453e15262dea387d65584968ed6ace3aa0

Additional info:

This is the query generated by Auth::user()->categories->pluck('id') at Example@scopeHasAccess:24 while lazy loading

And is the same query generated after trying to eagerloading Category::with('examples'):

I found a quick and dirty solution, in the constructor of Relation
   public function __construct(Builder $query, Model $parent)
    {
        $this->query = $query;
        $this->parent = $parent;
        $this->related = $query->getModel();

        $this->addConstraints();

        static::$constraints = true; // This
    }

Probably working from that, we can create a viable fix

Here is my patch so far
Subject: [PATCH] Fix relationship constraint
---
Index: src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php b/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php
--- a/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php	(revision 9b9e8620ab5805392ec6935ff29d3899fc96e053)
+++ b/src/Illuminate/Database/Eloquent/Concerns/QueriesRelationships.php	(date<PHONE_NUMBER>341)
@@ -872,9 +872,8 @@
      */
     protected function getRelationWithoutConstraints($relation)
     {
-        return Relation::noConstraints(function () use ($relation) {
-            return $this->getModel()->{$relation}();
-        });
+        Relation::noConstraintsForNextRelation();
+        return $this->getModel()->{$relation}();
     }

     /**
Index: src/Illuminate/Database/Eloquent/Relations/Relation.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/Illuminate/Database/Eloquent/Relations/Relation.php b/src/Illuminate/Database/Eloquent/Relations/Relation.php
--- a/src/Illuminate/Database/Eloquent/Relations/Relation.php	(revision 9b9e8620ab5805392ec6935ff29d3899fc96e053)
+++ b/src/Illuminate/Database/Eloquent/Relations/Relation.php	(date<PHONE_NUMBER>361)
@@ -54,6 +54,8 @@
      */
     protected static $constraints = true;

+    protected static bool $shouldRestoreConstraints = false;
+
     /**
      * An array to map class names to their morph names in the database.
      *
@@ -89,6 +91,10 @@
         $this->related = $query->getModel();

         $this->addConstraints();
+
+        if (static::$shouldRestoreConstraints) {
+            static::$constraints = true;
+        }
     }

     /**
@@ -113,6 +119,12 @@
         }
     }

+    public static function noConstraintsForNextRelation(): void
+    {
+        static::$shouldRestoreConstraints = static::$constraints;
+        static::$constraints = false;
+    }
+
     /**
      * Set the base constraints on the relation query.
      *
@@ -162,8 +174,8 @@
     public function getEager()
     {
         return $this->eagerKeysWereEmpty
-                    ? $this->query->getModel()->newCollection()
-                    : $this->get();
+            ? $this->query->getModel()->newCollection()
+            : $this->get();
     }

     /**
@@ -414,9 +426,9 @@
     protected function whereInMethod(Model $model, $key)
     {
         return $model->getKeyName() === last(explode('.', $key))
-                    && in_array($model->getKeyType(), ['int', 'integer'])
-                        ? 'whereIntegerInRaw'
-                        : 'whereIn';
+        && in_array($model->getKeyType(), ['int', 'integer'])
+            ? 'whereIntegerInRaw'
+            : 'whereIn';
     }

     /**
@@ -467,7 +479,7 @@

         if (is_array($map)) {
             static::$morphMap = $merge && static::$morphMap
-                            ? $map + static::$morphMap : $map;
+                ? $map + static::$morphMap : $map;
         }

         return static::$morphMap;
@@ -501,17 +513,6 @@
         return static::$morphMap[$alias] ?? null;
     }

-    /**
-     * Get the alias associated with a custom polymorphic class.
-     *
-     * @param  string  $className
-     * @return int|string|null
-     */
-    public static function getMorphAlias(string $className)
-    {
-        return array_flip(static::$morphMap)[$className] ?? null;
-    }
-
     /**
      * Handle dynamic method calls to the relationship.
      *
Index: src/Illuminate/Database/Eloquent/Builder.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/Illuminate/Database/Eloquent/Builder.php b/src/Illuminate/Database/Eloquent/Builder.php
--- a/src/Illuminate/Database/Eloquent/Builder.php	(revision 9b9e8620ab5805392ec6935ff29d3899fc96e053)
+++ b/src/Illuminate/Database/Eloquent/Builder.php	(date<PHONE_NUMBER>321)
@@ -808,13 +808,11 @@
         // We want to run a relationship query without any constrains so that we will
         // not have to remove these where clauses manually which gets really hacky
         // and error prone. We don't want constraints because we add eager ones.
-        $relation = Relation::noConstraints(function () use ($name) {
-            try {
-                return $this->getModel()->newInstance()->$name();
-            } catch (BadMethodCallException) {
-                throw RelationNotFoundException::make($this->getModel(), $name);
-            }
-        });
+        try {
+            $relation = $this->getRelationWithoutConstraints($name);
+        } catch (BadMethodCallException) {
+            throw RelationNotFoundException::make($this->getModel(), $name);
+        }

         $nested = $this->relationsNestedUnder($name);

While digging up on the issue, I found that Relation::noConstraints has an issue, because of the try { } finally {} exceptions are not thrown and simply don't propagate further up

I believe https://github.com/laravel/framework/pull/52461 have fixed this issue, please open a new issue if you still face the problem

Sorry, that PR doesn't address this issue at all, I was only talking about how using static causes this kind of issues
You can reopen it

        // We want to run a relationship query without any constrains so that we will
        // not have to remove these where clauses manually which gets really hacky
        // and error prone. We don't want constraints because we add eager ones.
        $relation = Relation::noConstraints(function () use ($name) {
            try {
                return $this->getModel()->newInstance()->$name();
            } catch (BadMethodCallException $e) {
                throw RelationNotFoundException::make($this->getModel(), $name);
            }
        });

@allandantasdev this makes sense because the conditions might imply columns from the model (other that the foreign key), that will not be in the query for the related model.
the solution might be to add the constraints on the collection of related models based on each model

    protected function eagerLoadRelation(array $models, $name, Closure $constraints)
    {
        // First we will "back up" the existing where conditions on the query so we can
        // add our eager constraints. Then we will merge the wheres that were on the
        // query back to it in order that any where conditions might be specified.
        $relation = $this->getRelation($name);

        $relation->addEagerConstraints($models);

        $constraints($relation);
///////////////////////////////////////////////// HERE
        // Once we have the results, we just match those back up to their parent models
        // using the relationship instance. Then we just return the finished arrays
        // of models which have been eagerly hydrated and are readied for return.
        return $relation->match(
            $relation->initRelation($models, $name),
            $relation->getEager(), $name
        );
    }

@Tofandel can you please share those special cases?

It will fail on those kind of relations
    public function price_without_key_in_aggregates()
    {
        return $this->hasOne(HasOneOfManyTestPrice::class, 'user_id')->ofMany(['published_at' => 'MAX']);
    }

    public function price_with_shortcut()
    {
        return $this->hasOne(HasOneOfManyTestPrice::class, 'user_id')->latestOfMany(['published_at', 'id']);
    }

Just run the vendor/bin/phpunit tests on the repo with your changes and see how it goes, likely it will be very unreliable

@Tofandel @macropay-solutions There is another case that would be uncovered:
public function relationName(): HasMany|HasManyThrough
{
    if ($this->exists && $this->children()->exist()) { // construct of Relation is called on eager loading relations in an existing model which I remember had issues also
        return $this->hasManyThrough...; // construct of Relation is called
    }

    return $this->hasMany...; // construct of Relation is called
}

@macropay-solutions

Another solution that sadly can't be implemented via macros for older versions:

The good thing is that if the relations are defined with
if ($this->exists && {{other relations calls}}) {

or no other relations are called after the relation is instantiated, then this bug is not affecting older versions.
So there is a way of avoiding it.

@allandantasdev Hello
Are you sure this code is correct ?
class Category extends Model {     // ...     public function examples(): HasMany     {         return $this->hasMany(Example::class);  // this ends by a semicolon , so how the ->hasAccess() will work ?             ->hasAccess(Auth::user());        } }

@jkpeyi that is just a typo.

@macropay-solutions Why exactly would you not be issuing a PR? This seems very "here is a 'solution'" have fun actually implementing and then fixing when it doesn't work
Sorry but I'm not being paid to work on this kind of issues and do it of my own volition and free time, which I do not have any right now to take this on. If you want it fixed, you should really submit that PR yourself

We spent 2 days (also not paid, and we are a team not just a dev) figuring out this solution after several months in which no one bothered to find one

I did and simply dropped out when I got caught by the edge cases I mentionned which pushed my PR into too time consuming
I would like to point out that you are a company using an open source software, so while you might not be paid to fix bug in said software, you do have the resources to take on a small PR if you have the resources to spend 2 days writing a solution for yourself.
If you want a bug fixed in OSS you usually have to open a PR, that is how it has always worked in open source, because devs simply don't have time to fix every niche bug anyone finds. It is simply good etiquette for a company to do so and as MIT licensed you are under no obligation to do so as well but you also cannot expect anyone else to do that if you do not do so (different story for GPL though where it's required by the license that you have to contribute your fixes)

The process of submitting PRs is way too complicated, we have to fork the repository and so on. Not to mention that we must follow the laravel community's codding standards which differ almost 180 degrees from ours.

It's not that complicated

you just fork via github
clone your fork
apply your patch and run the test suite to make sure that nothing breaks (this is the hard part of the PR which you just cannot put on someone else)
for the coding standard I believe you just have vendor/bin/pint and it's automatic
Commit and push
Open a PR via github

Maybe this can help users that are in this edge case situation: https://github.com/cweagans/composer-patches that need to fix this issue.


Development: Add Postgres Docker Compose Setup

Checklist
General

[ ] I tested all changes and their related features with all corresponding user types on a test server.
[x] This is a small issue that I tested locally and was confirmed by another developer on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Motivation and Context

As we want to move towards Postgres, we already implemented a Docker container. We also add support for Docker Compose Setups to enable developers to try Postgres with Artemis quickly.
Description

We streamlined the official naming of PostgreSQL to Postgres as this informal naming is used in the rest of the project, apparently.
We streamlined the common cypress configurations into a common .env file.
We added Artemis Docker Compose Setups for Postgres and updated the Docs.
Therefore we introduced a new Docker Compose section in the administrator section of the Docs.
Steps for Testing

Artemis Postgres Prod Setup

change the permissions in your repository according to the administrator documentation for the prod setup
run the Artemis Postgres Prod Setup: docker compose -f docker/artemis-prod-postgres.yml up
check Artemis
shutdown Artemis Postgres Prod Setup: docker compose -f docker/artemis-prod-postgres.yml down and optionally delete the contents of ./docker/.docker-data/artemis-postgres-data

Artemis Postgres Dev Setup

run the Artemis Postgres Dev Setup: docker compose -f docker/artemis-dev-postgres.yml up
check Artemis
shutdown and delete the volumes of Artemis Postgres Prod Setup: docker compose -f docker/artemis-dev-postgres.yml down -v

Check that the other Docker Compose setups you are using still work.
Review Progress

Code Review

[x] Code Review 1
[ ] Code Review 2

Manual Tests

[x] Test 1
[ ] Test 2

I think merge should be synchronised with #6443.

@jakubriegel What do you mean with "synchronized"? There shouldn't be any conflicts between the two PRs.

#6443

Just to make sure that this change also supports arm. It is does, then nothing to be done here

I think merge should be synchronised with #6443.

@jakubriegel What do you mean with "synchronized"? There shouldn't be any conflicts between the two PRs.

Just to make sure that this change also supports arm. It is does, then nothing more to be done here

@jakubriegel @TheZoker can you please re-approve if my commit to fix the merge conflicts looks good?

Please fix the merge conflicts first ;)

@Mtze I solved the conflicts and also added common cypress environment settings into one common file.
@TheZoker @Hialus could you please re-review the changes?! Thanks in advance.

Step 2 (docker compose -f docker/artemis-prod-postgres.yml up) starts artemis-app without any port exposed, so it is impossible to reach the app from web browser. Most like some config is missing here: https://github.com/ls1intum/Artemis/pull/6759/files#diff-ba5a738c18007d79118321b9c8bf8ac4fe0d466e59605735174862c97d8bf5c5R6

Mhh maybe I should add in the docs that the prod setups are served via nginx on Port 80/443 and the dev setups are served without a reverse proxy on Port 8080?
Port 8080 is exposed in the inherited artemis.yml.

Fixed the merge conflicts again.

Fixed the merge conflicts again.


TypeError: headers.all is not a function

TypeError: headers.all is not a function
how do i get all headers as json?

0.27.4 added request.headers.json(), can you confirm this works for you?


Store: the series limit should count the number of unique series across the different blocks

Thanos, Prometheus and Golang version used:
Main Branch
Anything else we need to know:
The current series limit simply takes the sum of matched postings counts from blocks. Maybe we should count unique series for a better user experience
Thanos implementaion:
https://github.com/thanos-io/thanos/blob/4a847851e4a75e77bc5e7a272fb31090672339a5/pkg/store/bucket.go#L1179-L1182
Cortex implementation:
https://github.com/cortexproject/cortex/blob/bb59466bcc2e4967c6b245407c539512e009e066/pkg/util/limiter/query_limiter.go#L69-L90

+1 to the proposal. The implementation doesn't look like too hard but need proper benchmark to understand the performance impact.


Support for multiple RabbitMQ clients

Add benchmark-worker service
Mount and use the same SSD as in other benchmarks
Remove useless java installation on RabbitMQ nodes
Setup chrony on clients

Added a fix to the cluster setup.
Currently the nodes are not setup in a cluster because the node names are incorrect.
This fix uses the IP as node name which also has the advantage that the cluster can be any size and not just 3 nodes.

Hi. Can this be reviewed ? I have another PR in the pipe that depends on this one.

Pls go ahead.


@else if this or that

I'm curious if this is just user error, or unexpected behavior of this plugin. I'm trying to keep my mixin dry by repeating some rules in a multi-conditional @else if. This doesn't actually compile the last 2 @else ifs, just the first 4. Thanks

It's a logic error on your part. You can never trigger the last two @else ifs because their conditions are already covered by the preceding statements. This is how conditional statements work.
The plugin is working as intended.

@andyjansson Thanks for the clarification and reference! 👍


Provide Hazelcast with orient-distributed bundle classloader.

Provide Hazelcast with orient-distributed bundle classloader, which is aware of ODocument class.

Thanks!


uprobes: automatic resolution of library paths

This introduces an option to attach to library functions by specifying just the library name instead of a full path. For example:
# bpftrace -e 'uprobe:libc:malloc { printf("Allocated %d bytes\n", arg0); }'
Allocated 4 bytes
...

One of the use-cases is a better portability of scripts that attach to library functions (as the full library paths may differ across systems). For example, the current tools/gethostlatency.bt doesn't work on Fedora.
Unfortunately, our shipped tools cannot be updated right away since this feature relies on BCC's bcc_procutils_which_so which is not available on old BCC versions, especially not those used in the CI. If #1933 was resolved, it would be possible.
Checklist

[x] Language changes are updated in man/adoc/bpftrace.adoc and if needed in docs/reference_guide.md
[ ] User-visible and non-trivial changes updated in CHANGELOG.md
[x] The new behaviour is covered by tests

Does this also work for libraries that are dlopened?

Does this also work for libraries that are dlopened?

The library paths are searched for in /etc/ld.so.cache so it depends whether the dlopen'ed library's there. According to the man page, the cache should contain libraries from standard paths and from directories listed in /etc/ld.so.conf.


Ability to modify Graphite metric path

Hi,
Is there an ability to modify Graphite metric path? I'm running several Gatling processes in parallel and due to that my results are being overwritten. I'd like to add some unique value for each process.
Thanks.

Hi,
Please use our community google group for such questions, not the bug tracker.
Thanks


Add minimap

A minimap in multiogar would be better than other forms of current minimaps because:

Player location can't be faked
It can load banned ips from multiogar server
It uses the existing websocket server

This added along with tags could create a minimap that could be used to play with friends without needing to use a separate minimap service.

You mean as in client sided files for a minimap?

@MastaCoder Not really, the idea is that we could add a config option to enable minimap and that minimap would be hosted on the multiogar server itself.

Player location makes easy target for minion DDoS attack.


Planningcenter Live Time

Hey, at first: very nice and helpful tool!
We are displaying next to the current slide the timer (live time) of Planning Center Online, but in ProWebStage the field is marked as unknown and no time is listed (even in the console logs).
Do you know how we can fix this? Is this a problem of the web page or of the ProPresenter API?

Hi, thanks for the encouraging feedback! :)
I've not used PCO before with PP7, though if there's no time listed in the console logs it's possible that the PCO integration with stage displays (the PP7 Stage API probably) is broken for now.  There are also a couple of other things that were broken at the time of creating this project, primarily the live slide abilities.
I'll do some testing with PCO and PP7 to see that it's not an issue with ProWebStage but my thoughts are right now that it likely is not fixable on this end at the moment.  Hopefully Renewed Vision fix the problems within PP7 soon!


[FEATURE] - Packages for creating information marts

Is your feature request related to a problem? Please describe.
Not, not a problem but a good enhancement IMO.
I am not seeing packages to help with creating information marts.
Describe the solution you'd like
Packages to assist with information marts resulting in outcomes as described at:
https://www.vertabelo.com/blog/data-vault-series-building-an-information-mart-with-your-data-vault/
Describe alternatives you've considered
DIY using SQL
Additional context
Great work this BTW.

Hi, welcome to the community and thanks for the suggestion! This is planned and on our roadmap; we're looking to get more features in to the Raw Vault layer and general quality of life improvements before we look at providing helper functions for downstream layers.
The thing to remember is that in most cases, the presentation layer is highly bespoke and depends on the organisation , however there are certainly some re-usable macros and standard functionality that we have thought about and found we need in our own AutomateDV projects.


Solved Questions not showing up in Repo Recently. Is there a maximum limit of questions supported by Leethub?

Please review previous closed issues before filling out a new one! Duplicate issues will be closed without comment.
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.

perhaps it was because u were using the latest version of Leetcode. try switching to an older version. See this #366


Optional completion handler send and sendMessage without reply

Fixes #17
All send and sendMessage functions now take in a XPCResponseHandler (renamed from XPCReplyHandler). For those that require a reply, the response handler is non-optional. For those that can't have a reply, they can optionally provide a XPCResponseHandler<Void> which will get called upon successful completion or be provided an XPCError on failure.
In all cases, none of the functions now throw - all errors generated are provided to their handlers (or ignored if no handler is provided).
Three existing tests were modified and two new tests have been added.

This has been designed in a way which should make it relatively straightforward to address #19.

@amomchilov for your review. The significant changes are all in XPCClient, although a few other files were lightly touched as well.


it occurs error when I install xformers in third_party

thanks for your work!
when I install xformers in third_party by using "pip install .", find error:

if I update code in /opt/conda/lib/python3.7/subprocess.py, xformers is not work:
packaging.version.InvalidVersion: Invalid version: '0.0.19xxx'

I guess you download the zip rather than clone the repo.
Change this function to return an empty string (like doing nothing) and re-install xformers. It should fix the error.

I guess you download the zip rather than clone the repo.
Change this function to return an empty string (like doing nothing) and re-install xformers. It should fix the error.

yes, I resolved the problem by using a occupy string. Thanks for your reply.


Added file for profile addition

Changes Made
Added profile in people.json and created a new json file for profile addition.
Related Issues
#2
Checklist

[x] I have read the CONTRIBUTING document.
[x] I have read the CODE_OF_CONDUCT document.

Awesome 👍

Your changes will be reflected in the production build within a few days, and you can add your profile as a collaborator in README.
And thank you very much for contributing 😇


youtube and stackOverflow hides when making the whole windows smaller

Issue is not longer occurring. The youtube and stackoverflow components are responsive with the resizing window.


[IOTDB-28] Calcite Integration for IoTDB

IoTDB-Calcite Adapter.

@Alima777  Thanks for your contribution, I will have a review this month.

@Alima777 Thanks for your contribution, I will have a review this month.

Thank you. Wait for your review.

Hi, @yuqi1129 would you like to have a review of this PR? :D

@Test
public void testFilter7() {
CalciteAssert.that()
.with(MODEL)
.with("UnQuotedCasing", IoTDBConstant.UnQuotedCasing)
.query("select * from "root.vehicle" " +
"where (device = 'root.vehicle.d0' AND "time" <= 1) OR s2 = 2.22 and 1 = 1")
.returns("time=1; device=root.vehicle.d0; s0=101; s1=1101; s2=null; s3=null; s4=null\n" +
"time=2; device=root.vehicle.d0; s0=10000; s1=40000; s2=2.22; s3=null; s4=null\n" +
"time=2222; device=root.vehicle.d1; s0=null; s1=null; s2=2.22; s3=null; s4=null\n")
.explainContains("PLAN=IoTDBToEnumerableConverter\n" +
"  IoTDBFilter(condition=[OR(AND(=($1, 'root.vehicle.d0'), <=($0, 1)), =(CAST($4):DOUBLE NOT NULL, 2.22))])\n" +
"    IoTDBTableScan(table=[[IoTDBSchema, root.vehicle]])");
}
Should add rules to reduce constant value
like where 1 = 1 and a = 1 should be folded as where a = 1, see above

@yuqi1129 Hi, thank you very much for your patient review!
Since it's my first large implemented module, I ignored lots of code standards, like: exception processing, standard code style and something else... And It has not been maintained for a long time.
So Thanks again! I've fixed it and please have a check.

hi all, The project was developed based on calcite and avatica. calcite has some problems:

For simple query optimization, using calcite is too heavy.
When calcite generates the execution plan tree, some class files are generated, which may cause memory overflow. This is because there are too many fields in the search criteria.
For example, slelect * from a in (1, 2, 3, 4.....500),
This will cause oom.

@wangchao316 , Hi, about your problem, we may do the following as far as i known

Skip the optimization stage, that is, we only use the parser to convert sql to ast then validate and transfer the ast to logical RelNode, avatica builtin logical indeed is heavy for simple query, especially for time scales sql, this may need to change the calcite source code and maintain our own version if we want to solve this.
this problem seems the problem the SQL itself , we do not recommend too many values in in clause,  due to the limit about the field in java language, we can't solve it well.

The above is a personal point of view, discussion is wanted

Coverage increased (+0.005%) to 67.367% when pulling 77eede7d4914017a27d33652d49ec66cc7a4fffe on Alima777:dev_calcite1 into fb18357edee14e60893e968aeddc3177fba868bc on apache:master.


Update semantic_versioning.md

Better outline semantic versioning, and try to persuade users to bump major versions when they should.
@netlify /docs/guidelines/pipelines/requirements/semantic_versioning

Can you link to this page on the release docs too @pinin4fjords ?

@nf-core-bot fix linting

I like this. I also asked Seqera AI and here's what it gave:

    Patch Release (1.4.4):
        Fixing a typo in the pipeline documentation or help messages
        Updating a dependency to patch a security vulnerability without changing functionality
        Correcting a minor bug in result reporting that doesn't affect the actual analysis results
        Optimizing a process to use less memory or run faster without changing its inputs or outputs
        Fixing a minor issue in the pipeline's error handling or logging

    Minor Release (1.5):
        Adding support for a new input file format without changing existing format support
        Introducing a new optional quality control step that doesn't affect the main analysis
        Adding a new visualization option for existing results
        Implementing a new caching strategy that improves performance but doesn't change results
        Adding support for a new cloud computing platform without affecting existing platform support

    Major Release (2.0):
        Changing the default behavior of a core analysis step
        Removing support for an outdated file format or tool
        Restructuring the pipeline's output directory organization
        Implementing a new parallelization strategy that requires users to specify different resource allocations
        Changing the pipeline's command-line interface structure
        Modifying how configuration files are structured and processed
        Upgrading to a new major version of Nextflow that requires changes in how users interact with the pipeline

This is good for extra examples, but IMO some the examples are maybe too generic: e.g.

    Changing the pipeline's command-line interface structure

I think we should make it more explitily/modular using our language (like as I've suggested) as it'll be more likely be picked up by a developer when skimming the text.
Sort of like 'Have you changed a parameter name?' is going to be more eye catching 'yes I did that' than just 'did an interface change'.
What do others think?

Having it more tuned to our use case is definitely going to help. It's not an easy task though because words can mean different things to different people resulting in some being confused and others going "yeah, that's clear as day - I did that".

@nf-core-bot fix linting

@nf-core-bot fix linting

@nf-core-bot fix linting


feat: Typescript rewrite

Hey,
I saw your amazing project on twitter today ! ❤ (well it was today few hours ago)
I wanted to contribute, especially for the screenshot loading but I found it a bit complicated to contribute with the codebase in this current shape.
 It's just a more modern way to write it, but nothing against your way of doing it ☺
I just wanted to share this with you, I don't expect this PR to be "reviewable" as it is a complete rewrite to Typescript + npm. If you are interested to know more or even want to merge, I'll be happy to this discuss. Otherwise feel free to entirely dismiss this PR 👍
Right now, I only put 3hours of work so it's not yet complete. There is a few gotchas, especially when executing paperjs outside of their controlled environnement (e.g: some automatic functions are not there like math between point, global variables etc...)
But I made it run almost entirely 🤩

Running
# install the dependencies
yarn

# launch the dev server with hot reload
yarn dev

go to: http://localhost:8080/

wow if you could get this to completely work it would be a real life saver in terms of project organization. I keep pushing off switching to a real development environment and it only keeps becoming an increasingly daunting task to do, but it looks like you've done all of the heavy lifting here!
I've had bad times setting up yarn/npm for projects which is why I was so hesitant here

Also are you the one who DMed me on reddit about working on the screenshot conversion feature?

I've had bad times setting up yarn/npm for projects which is why I was so hesitant here

Maybe I can help answer your question if you have any ☺

Also are you the one who DMed me on reddit about working on the screenshot conversion feature?

Nope, but I guess many people would love this 👍

If you are interested in merging, then I can continue to update this PR. That would make merging a bit complicated with other PRs though.

The other PRs that are coming in shouldn't be too hard to redo

@bodinsamuel as the tool doesn't work in some browsers, could you add the browser-update script maybe? And could you add templates. I'm also currently working on an Android application for the tool and I want to merge a island name generator tool that I forked too.

I'm in the process of solving the last few issues. I should have done it in multiple steps but got carried away :3 I hope to be done by the end of the day, hopefully 🤞

Also I should say we need you to add some assets like in #21

This is what my repo looks like rn

Gonna add a link to my island name generator soon to mine.

I think we would work good together but problem is I've never used typescript...

Hey FlynnFarrow, the features you mentioned shouldn't be tacked onto this commit, they should be committed as commits on top of this. Adding too much into one commit makes history messy. Also, typescript is a superset of javascript, so if you can write javascript you can write typescript.
The browser update script also only affects index.html so it shouldn't conflict (much) with this commit.

Adding too much into one commit makes history messy.

Yeah I get ya @eugeneration and the script only affects that, and you don't have to put the features in the whole thing, you could link to them like you link to your Twitter.

@bodinsamuel  btw I will be landing another major change to the site, but don't let that stop you from working on this. I can redo my work on top of this commit (I would probably merge it into a separate branch that I can later merge into master once it reaches feature parity)

@eugeneration Thanks for letting me know (and congrats on shipping this !).
I got hit by a few blockers than I can not fix right now:

Drawing pixels are not correct, not sure why
Can not paint over layers that are above (e.g: picking sand can no longer paint over layer1)
Can not place item in the map

I'm happy that I managed to fix most of the remaining bugs this weekend, it was challenging but learn a lot. Unfortunately the remaining ones are quite important 🙇♂
If you want to help, please feel free to edit the branch as you should be able to do (I think).

🤯you are a beast

Haha here goes nothing

❤


Support external services in the service map

Is your feature request related to a problem? Please describe.
Some services call external services which are not annotated. Data Prepper users still want to see these external services in the service map.
Describe the solution you'd like
Include external service calls in the service map. This issue still needs additional analysis for the solution.
Additional context
Related issue in the OpenSearch Observability plugin: https://github.com/opensearch-project/dashboards-observability/issues/90
Also, see opensearch-project/observability#628 for a related Data Prepper issue which is somewhat the opposite problem.

The problem for this issue is that we have spans for an un-instrumented service. Data Prepper should be able to output a service map document which has the external un-instrumented service.

Utilizing the peer.service might be appropriate here.
https://opentelemetry.io/docs/specs/otel/trace/semantic_conventions/span-general/#general-remote-service-attributes
We've seen some spans that have the following where an external system is used and not included in the service map.
"span.attributes.peer@service": "externalSystem"


allow override of local uid

allow override of local uid, to allow running on OSX with docker-machine, where local uid != host uid.
example usage: LOCAL_USER_ID=1000 make test-containerized

Semaphore build breaks on this:
id: SER: no such user
# To build without Docker just run "glide install -strip-vendor"
docker run --rm \
		-v /home/runner/libnetwork-plugin:/go/src/github.com/projectcalico/libnetwork-plugin:rw \
		-v /home/runner/.glide:/home/user/.glide:rw \
		-e LOCAL_USER_ID= \
		calico/go-build /bin/sh -c ' \
			cd /go/src/github.com/projectcalico/libnetwork-plugin && \
			glide install -strip-vendor'
Unable to find image 'calico/go-build:latest' locally
latest: Pulling from calico/go-build
...
...
048482466b46: Extracting 61.28 MB/61.36 MB

048482466b46: Extracting 61.36 MB/61.36 MB

048482466b46: Pull complete

bf51d38da2ea: Extracting    513 B/513 B

bf51d38da2ea: Extracting    513 B/513 B

bf51d38da2ea: Pull complete
Digest: sha256:1b23b6b7fca2e315100bc9c8e6467fc6add76f1f6f8483d2264152834ac0e669
Status: Downloaded newer image for calico/go-build:latest
Starting with UID : 9001
[ERROR]	Could not create vendor: mkdir vendor: permission denied
make: *** [vendor] Error 1

I saw this locally and bypassed it using glide install -strip-vendor - bycatch?


core-react Dialog deprecation

Changes
Deprecated core-react Dialog and GlobalDialog as well as appui-react ModelessDialog (weird that it was there and not in core-react). Suppressed relevant  deprecation linting errors.
Testing
N/A

Given the issues with iTwinUI dialog for resize and dragging, let's hold on this for now.

Review issue like #662 before closing/continuing.

Closing until we decide to continue with Dialog deprecation. Seems like iTwinUI 3.x is a prereq for this: https://github.com/iTwin/appui/pull/666


Switch to FastAPI

I've swapped target branch here to rework-fastapi. Let's use that branch as target branch for all the PRs that are needed to do the framework switch. When everything is ready we make a big PR from rework-fastapi to master.

ok

I changed back target branch to master branch since this should be ready already now.

Should we merge it now?

I haven't tested it yet in the browser. If we do that I think we can merge.