Introduce Enum for setting the Isolation Level

Summary
kafkaConfig::setIsolationLevel(String) is hard to use, as the user has to know which values are legal here. An additional class IsolationLevel implementing an Enum might especially help people new to Kafka. It also shows, which level are supported by 7Facette.
With the additional class, the old method can be deprecated in order to move users to the newer version kafkaConfig::setIsolationLevel(IsolationLevel).
Motivation
kafkaConfig.setIsolationLevel("read_committed"); requires the programmer to read the Kafka documentation in order to understand which values are viable here.
kafkaConfig.setIsolationLevel(IsolationLevel.xxx); enables the user to use the IDE's auto-completion feature.
Describe alternatives you've considered
Reading https://kafka.apache.org/0110/javadoc/index.html?org/apache/kafka/clients/consumer/KafkaConsumer.html and then reverse engineering how 7Facette uses this Kafka feature.
Additional context
(none)

Done with release 0.6.5


Added rexs 1.5 model database version

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.002%) to 95.731%

Totals

Change from base Build<PHONE_NUMBER>:
0.002%

Covered Lines:
3453

Relevant Lines:
3607

💛  - Coveralls


BKTree | Identifying similar images from a database

Hello:
I am fairly new to python, but I found your article very informative and easy to follow. I believe I have the script working for my needs, however as you mention at the bottom of the article the larger the database the slower the comparisons.
I have a script with watchdog that waits for changes on a directory of images. When an image is uploaded, the file is processed, a dhash is generated, and then passed to a SQL database.
I've been experimenting with BKTrees. If I understand them correctly the entire tree is stored in memory at script runtime. My question is how do I identify which image is the actual duplicate from the tree? How can I store a primary key or some unique value in the tree so I can later identify which images are similar to each other?
Thank you!

Good question. You do this by using a tuple or namedtuple of (hash, id) for your items. See the example I just added to the README under "If you need to track the ID, key, or filename of the original item, use a tuple or namedtuple. Repeating the above example with an Item namedtuple:"


get_output not working

calls to get output causing error seen below
Feedback: Internal Error
Internal Error
Error in instructor feedback. Please show the following to an instructor:
AttributeError: '' object has no attribute 'output'
File "src/lib/pedal/sandbox/compatibility.py", line 48
File "_instructor.on_run.py", line 56

see problem 8.5, problem is not across all problems

Oh man, this one was crazy. I've been on it for the past few hours, and it's my own fault. Basically, it's not what you'd probably think.
First, the get_output function works just fine. Or rather, when the system properly patches Sandbox's get_output function, things work just fine. In this case, the system patched it, but it got overwritten when the following code was run in 8.5:
from pedal.mistakes.iteration_context import *

Inside the iteration_context module, the following line of code managed to dig up an unpatched copy of get_output, and the import star brought it into the instructor's on_run namespace:
from pedal.sandbox.compatibility import get_output

Now, the question became where did that unpatched get_output come from? The way I patched things, a regular Python installation wouldn't have any issues. Initially, I thought Skulpt wasn't doing the right thing, but after downloading a fresh copy I was able to verify I had broken something. Turns out some of the modifications I made for Python 3 compatibility stuff were faulty and did the wrong thing. Long story short, I was preventing the system from noticing that it had already loaded the module. I believe I have it fixed and live on the server - I think the right feedback shows now.
That was awful, lost an entire afternoon to 5 lines of code that I wrote :P


added conditional to remove PR section if empty

PR for #5 @adeora7

Hey, I merged your PR but you are not coming as a Contributor. I think it is because while resolving the conflicts of some other PR, I had to copy paste your piece of code at a different line.


Fix HMR after adding RA-Bundle groups

The introduction of groups for random access bundles broke hot module reloading, because HMR uses a different Bundle class. And that didn’t have the setRamGroups() method.
This just adds an empty method on the base class.
Test plan (required)
I ran node scripts/run-ci-e2e-tests.js --android

By analyzing the blame information on this pull request, we identified @martinbigio and @Kerumen to be potential reviewers.

@facebook-github-bot shipit

Thanks for importing. If you are an FB employee go to Phabricator to review internal test results.


Looking for project maintainer

If anyone wants to take over maintenance of the project, please reach out.

@arvidkahl I'd be interested. This component has come in handy for me a fair few times.

Wonderful. I've given you collaborator for now. I will transfer ownership of the repo whenever you're ready.

Ready 😄

@arvidkahl I seem to be having issues publishing updates to this repo on npm.

Could you give me publish rights? Thanks!

Done. Let me know if it doesn't work please :)

I created a component inspired by this one at https://github.com/tylerkrupicka/vue-json-component
I tried to do it without any dependencies to reduce bundle size, add typescript support, and increase performance.
If you guys need any help on this one down the road let me know.


Create Build issue.

e: file:///E:/composesamples/pokedex-compose-main/build-logic/convention/src/main/kotlin/com/skydoves/pokedex/compose/AndroidCompose.kt:13:35 5 type arguments expected for interface CommonExtension<BuildFeaturesT : BuildFeatures, BuildTypeT : BuildType, DefaultConfigT : DefaultConfig, ProductFlavorT : ProductFlavor, AndroidResourcesT : AndroidResources>
e: file:///E:/composesamples/pokedex-compose-main/build-logic/convention/src/main/kotlin/com/skydoves/pokedex/compose/AndroidCompose.kt:18:5 Unresolved reference: buildFeatures
e: file:///E:/composesamples/pokedex-compose-main/build-logic/convention/src/main/kotlin/com/skydoves/pokedex/compose/AndroidCompose.kt:19:7 Unresolved reference: compose
using android studio version
Android Studio Hedgehog | 2023.1.1
Build #AI-231.9392.1.2311.11076708, built on November 9, 2023
Runtime version: 17.0.7+0-b2043.56-10550314 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10.0

Hey @Office-Murtaza, you should use at least Android Studio Iguana instead of the Hedgehog.
If you still face the same issue after installing Android Studio Iguana, please reopen it. Thank you!


What are the implications of allowing more documents as context?

Let's talk about this method:
def query(self, input_query):
        """
        Queries the vector database based on the given input query.
        Gets relevant doc based on the query and then passes it to an
        LLM as context to get the answer.

        :param input_query: The query to use.
        :return: The answer to the query.
        """
        result = self.collection.query(
            query_texts=[input_query,],
            n_results=1,
        )
        result_formatted = self._format_result(result)
        answer = self.get_answer_from_llm(input_query, result_formatted[0][0].page_content)
        return answer

As far as I can tell, (and I'm just reading, not necessarily understanding, correct me if I'm wrong), it will return the one single closest document. n_results=1
What if we have a more granular database, cut into smaller pieces?
E.g. the webpages and documents we added are only a paragraph long. Then it will only return that one paragraph. So let's keep imagining that a user asks a complex question for which the correct answer is stored in more than one document. Then it would only answer part of the question with limited knowledge.
Here's a simple example. Let's say we are in the car business and feed our database information about the Corvette, one page for each generation. Then a user asks how much does horsepower does the current Corvette make and how much did the first one make?. If my understanding is correct, it could not answer that question (for this specific question, ChatGPT knows the answer out of the box, but you get the point).
For these kinds of use cases I'm proposing to allow the retrieval of more than one document, configurable by the user. 1 can stay as the default. These are then all passed as context so a LLM can do it's magic and process the information.
The downside I can see is that it will require more tokens, and thus cost more. This is a compromise the user has to make for better results. The max token limit should also be considered, especially in cases where the database contains short and long text, for this edge case, max tokens should be configurable by the user, and in case a limit is set, the tokens of the prompt should be counted and cut off if necessary.
P.S. Why are we prompting with prompt = f"""Use the following pieces of context to answer the query at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer.         {context} if we just use one piece of context.
I will propose a PR for his.

Hey, thanks for opening the issue. Let me think more and get back to you on this.

closed with #63


Logitech G700: "no profile set as active profile"

Connecting my G700 to my computer with its cable produces this output from ratbagd 0.9.906:
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: libratbag bug: Logitech G700 Laser Mouse: no profile set as active profile

The mouse doesn't show up in ratbagctl, but functions normally as a regular mouse, and the default buttons to control DPI (G9 and G10) work.
This mouse is very old and quite well-used (and now quite disused), so it's possible it's broken in a strange way. I seem to remember having stored profiles on the mouse itself using the Windows drivers years ago, but the G11 profile switch button I had configured doesn't switch profiles now (xev reports it as button 15 when pressing it at least), and everything else seems the default. I'm new to this project, so I don't know if ratbag deals with mouse-memory profiles or keeps local ones like the Logitech utilities let you do.
Regardless, happy to assist with troubleshooting however I can.

Can you send the full verbose log?

ratbag debug: New device: Logitech G700 Laser Mouse
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: device assigned driver hidpp10
ratbag debug: hidraw info: bus 0x03 vendor 0x46d product 0xffffc06b
ratbag debug: Logitech G700 Laser Mouse is device '/dev/hidraw2'.
ratbag debug: hidraw info: bus 0x03 vendor 0x46d product 0xffffc06b
ratbag debug: Logitech G700 Laser Mouse is device '/dev/hidraw4'.
ratbag debug: HID report ID 01
ratbag debug: HID report ID 03
ratbag debug: HID report ID 10
ratbag debug: HID report ID 11
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: libratbag bug: Logitech G700 Laser Mouse: no profile set as active profile
ratbag debug: New device: Logitech G700 Laser Mouse
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: device assigned driver hidpp10
ratbag debug: hidraw info: bus 0x03 vendor 0x46d product 0xffffc06b
ratbag debug: Logitech G700 Laser Mouse is device '/dev/hidraw2'.
ratbag debug: hidraw info: bus 0x03 vendor 0x46d product 0xffffc06b
ratbag debug: Logitech G700 Laser Mouse is device '/dev/hidraw4'.
ratbag debug: HID report ID 01
ratbag debug: HID report ID 03
ratbag debug: HID report ID 10
ratbag debug: HID report ID 11
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: Unexpected value: ff
ratbag error: libratbag bug: Logitech G700 Laser Mouse: no profile set as active profile

Connecting the wireless receiver lacks the Unexpected value: ff output, but otherwise looks similiar:
ratbag debug: New device: Logitech USB Receiver
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: device assigned driver hidpp10
ratbag debug: hidraw info: bus 0x03 vendor 0x46d product 0xffffc531
ratbag debug: Logitech USB Receiver is device '/dev/hidraw0'.
ratbag debug: hidraw info: bus 0x03 vendor 0x46d product 0xffffc531
ratbag debug: Logitech USB Receiver is device '/dev/hidraw1'.
ratbag debug: HID report ID 01
ratbag debug: HID report ID 03
ratbag debug: HID report ID 04
ratbag debug: HID report ID 10
ratbag debug: HID report ID 11
ratbag error: libratbag bug: Logitech USB Receiver: no profile set as active profile
ratbag debug: New device: Logitech USB Receiver
ratbag debug: Using data directory '/usr/share/libratbag'
ratbag debug: device assigned driver hidpp10
ratbag debug: hidraw info: bus 0x03 vendor 0x46d product 0xffffc531
ratbag debug: Logitech USB Receiver is device '/dev/hidraw0'.
ratbag debug: hidraw info: bus 0x03 vendor 0x46d product 0xffffc531
ratbag debug: Logitech USB Receiver is device '/dev/hidraw1'.
ratbag debug: HID report ID 01
ratbag debug: HID report ID 03
ratbag debug: HID report ID 04
ratbag debug: HID report ID 10
ratbag debug: HID report ID 11
ratbag error: libratbag bug: Logitech USB Receiver: no profile set as active profile

Ugh, weird. I have no idea.

Running with --verbose=raw may have some extra hints, can you show that please?

Ooh, undocumented features!
It's quite long, so here's the full log: https://skirmisher.keybase.pub/g700-ratbagd.log
The relevant area around the "unexpected value" errors:
ratbag raw: Fetching current profile
ratbag raw:   expected_header:                ?? 00 81 0f
ratbag raw:   expected_error_dev:        10 00 8f 81 0f 00 00
ratbag raw: hidpp write: 10 00 81 0f 00 00 00
ratbag raw: hidpp read:  10 00 81 0f ff 00 00
ratbag raw:   received: 10 00 81 0f ff 00 00
ratbag error: Unexpected value: ff
ratbag raw: Fetching current resolution
ratbag raw:   expected_header:                ?? 00 83 63
ratbag raw:   expected_error_dev:        10 00 8f 83 63 00 00
ratbag raw: hidpp write: 10 00 83 63 00 00 00
ratbag raw: hidpp read:  11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw:   received: 11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw: Fetching current profile
ratbag raw:   expected_header:                ?? 00 81 0f
ratbag raw:   expected_error_dev:        10 00 8f 81 0f 00 00
ratbag raw: hidpp write: 10 00 81 0f 00 00 00
ratbag raw: hidpp read:  10 00 81 0f ff 00 00
ratbag raw:   received: 10 00 81 0f ff 00 00
ratbag error: Unexpected value: ff
ratbag raw: Fetching current resolution
ratbag raw:   expected_header:                ?? 00 83 63
ratbag raw:   expected_error_dev:        10 00 8f 83 63 00 00
ratbag raw: hidpp write: 10 00 83 63 00 00 00
ratbag raw: hidpp read:  11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw:   received: 11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw: Fetching current profile
ratbag raw:   expected_header:                ?? 00 81 0f
ratbag raw:   expected_error_dev:        10 00 8f 81 0f 00 00
ratbag raw: hidpp write: 10 00 81 0f 00 00 00
ratbag raw: hidpp read:  10 00 81 0f ff 00 00
ratbag raw:   received: 10 00 81 0f ff 00 00
ratbag error: Unexpected value: ff
ratbag raw: Fetching current resolution
ratbag raw:   expected_header:                ?? 00 83 63
ratbag raw:   expected_error_dev:        10 00 8f 83 63 00 00
ratbag raw: hidpp write: 10 00 83 63 00 00 00
ratbag raw: hidpp read:  11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw:   received: 11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw: Fetching current profile
ratbag raw:   expected_header:                ?? 00 81 0f
ratbag raw:   expected_error_dev:        10 00 8f 81 0f 00 00
ratbag raw: hidpp write: 10 00 81 0f 00 00 00
ratbag raw: hidpp read:  10 00 81 0f ff 00 00
ratbag raw:   received: 10 00 81 0f ff 00 00
ratbag error: Unexpected value: ff
ratbag raw: Fetching current resolution
ratbag raw:   expected_header:                ?? 00 83 63
ratbag raw:   expected_error_dev:        10 00 8f 83 63 00 00
ratbag raw: hidpp write: 10 00 83 63 00 00 00
ratbag raw: hidpp read:  11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw:   received: 11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw: Fetching current profile
ratbag raw:   expected_header:                ?? 00 81 0f
ratbag raw:   expected_error_dev:        10 00 8f 81 0f 00 00
ratbag raw: hidpp write: 10 00 81 0f 00 00 00
ratbag raw: hidpp read:  10 00 81 0f ff 00 00
ratbag raw:   received: 10 00 81 0f ff 00 00
ratbag error: Unexpected value: ff
ratbag raw: Fetching current resolution
ratbag raw:   expected_header:                ?? 00 83 63
ratbag raw:   expected_error_dev:        10 00 8f 83 63 00 00
ratbag raw: hidpp write: 10 00 83 63 00 00 00
ratbag raw: hidpp read:  11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag raw:   received: 11 00 83 63 11 00 1a 00 80 01 01 00 00 00 00 00 00 00 00 00
ratbag error: libratbag bug: Logitech G700 Laser Mouse: no profile set as active profile

Ooh, undocumented features!

well, it is in the --help output for ratbagd. But I've added this to the man page too now. Hard to keep track of all the places...
Give #783 a test please, no idea if that will work but it may.

well, it is in the --help output for ratbagd. But I've added this to the man page too now. Hard to keep track of all the places...

Haha, that's understandable. No worries.

Give #783 a test please, no idea if that will work but it may.

It functions, thank you! All the profiles I had before showed up as disabled, so I enabled them through ratbagctl and now I can cycle through them on the mouse like before.
However, although my existing macros function, ratbag doesn't seem to recognize them. I can't make new ones, either; I can only assign buttons to a special function or a standard button click. Shall I make a new issue or use this one?

definitely new bug, ideally with the new  --verbose=raw output please so we can debug the rest.


[Bug]: MacOSX - App icon shows in Dock's recent apps area

Version

[X] I'm using version 1.7.0

Known issues

[X] I've checked Known issues

Existing issues

[X] I've checked Existing issues

What operating system are you using?
macOS
Operating System Version
macOS Catalina 10.15.7
Reproduction steps

Dock option "show recent applications" must be checked.
When a break happens, Stretchly icon appears in the recent apps area.

...
Reproduces how often: 100%
Expected Behavior
It may not be a bug, but it would be better not adding the icon to the Dock.
For example, the preferences window doesn't add the icon to the Dock.
Actual Behavior
The icon remains in the recent apps area of the Dock.
Relevant log output
No response
Preferences
No response
Additional information
No response
Code of Conduct

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

Can you show me screenshot of reproduction? I am not using macOS day to day so not sure what you mean by "show recent applications" and where the icon appears :)

Sure, here it is

Hi, so I have that checked in macOS preferences but can't reproduce :(
Are you really on Stretchly 1.7? Because I am disabling dock icon in the code (since version 1.2). If you have 1.7, the only thing I can think of is trying to fully remove Stretchly (let's say wit appcleaner https://freemacsoft.net/appcleaner/) and then installing it again. (I have seen cases when upgrading app did not  work correctly for some people and they seen old behaviour)

I removed the app and also removed settings from "Application Support" and started over.
Version is 1.7 latest one.
The icon still appears in the dock recent apps area.

Hi, is this still an issue? Let me know if I should reopen.


At high concurrency, jedis is significantly slower.

Recently using jedis, jedis processing speed is very slow when high concurrency.
I added the debug code with stopwatch.

/src/main/java/redis/clients/jedis/Protocol.java

private static byte[] processBulkReply(final RedisInputStream is) {
  StopWatch stopwatch = new StopWatch();
  StopWatch stopwatch2 = new StopWatch();

  stopwatch2.start();
  final int len = is.readIntCrLf();
  if (len == -1) {
    return null;
  }

  final byte[] read = new byte[len];
  int offset = 0;
  while (offset < len) {
    stopwatch.start();
    final int size = is.read(read, offset, (len - offset));     // it takes about 50+-ms, at the time of high concurrency.
    stopwatchLogger.info(stopwatch.getTime());
    if (size == -1) throw new JedisConnectionException(
        "It seems like server has closed the connection.");
    offset += size;
    stopwatch.stop();
    stopwatchLogger.info(stopwatch.getTime());
    stopwatch.reset();
  }
  stopwatch2.stop();
  stopwatchLogger.info(stopwatch2.getTime());    // it takes about 1000+ms
  // read 2 more bytes for the command delimiter
  is.readByte();
  is.readByte();

  return read;
}

jdk : 1.6
jedis : 2.9.0
How can i solve it?

This could be due to many factors like networking or machine resources causing bottleneck. Please provide more info with a reproducible test case if possible to check what might be happening.

Recently using jedis, jedis processing speed is very slow when high concurrency.
I added the debug code with stopwatch.

/src/main/java/redis/clients/jedis/Protocol.java

private static byte[] processBulkReply(final RedisInputStream is) {
  StopWatch stopwatch = new StopWatch();
  StopWatch stopwatch2 = new StopWatch();

  stopwatch2.start();
  final int len = is.readIntCrLf();
  if (len == -1) {
    return null;
  }

  final byte[] read = new byte[len];
  int offset = 0;
  while (offset < len) {
    stopwatch.start();
    final int size = is.read(read, offset, (len - offset));     // it takes about 50+-ms, at the time of high concurrency.
    stopwatchLogger.info(stopwatch.getTime());
    if (size == -1) throw new JedisConnectionException(
        "It seems like server has closed the connection.");
    offset += size;
    stopwatch.stop();
    stopwatchLogger.info(stopwatch.getTime());
    stopwatch.reset();
  }
  stopwatch2.stop();
  stopwatchLogger.info(stopwatch2.getTime());    // it takes about 1000+ms
  // read 2 more bytes for the command delimiter
  is.readByte();
  is.readByte();

  return read;
}

jdk : 1.6
jedis : 2.9.0
How can i solve it?
I have got this bug too.
Now i use 2.7.3 to avoid this.

@basion There is no change between implementation of 2.7.3 and 2.9.0 in concerned method.
@kimsung604 @basion Please refer to @marcosnils' comment


How to get web push notifications?

Hi,
php-flasher documentation says that I can send desktop notification for all the OSs, but does not explain how I can do it. Can you explain it here?
Thanks

Hello @rirri93,
Yes, you are right, the documentation is not complete yet, and the development is still in progress.
You could check the code in GitHub here: https://github.com/php-flasher/php-flasher/tree/main/src/Cli (READ ONLY)
Or in theirs respective repositories:

https://github.com/php-flasher/flasher-cli
https://github.com/php-flasher/flasher-cli-laravel
https://github.com/php-flasher/flasher-cli-symfony

The notifications are sent from the terminal, inject the CliFlasherInterface service in your commands and call the render method on it, and that's it.
I hope someone could help with a PR on the documentation for this part


Update pt-BR.coffee

Coverage decreased (-0.007%) to 62.087% when pulling 8803240ae97515cf9501a9fb6abd3e8442b284c1 on traducaoenlix:patch-9 into 65641ed6f4c61668696e7f538807ed1ded522da0 on codecombat:master.

I don't see any problems in the locale file. Merged. Thanks!


apache-ant still unavailable for osx/arm64

Comment:
Everything is in the title !

Be the change you want to see in the world. Here are the instructions to make it happen.

Ah, nevermind, I see you have opened a PR already, and one from the migrator too. My apologies. I even checked the migrator status but looked only for those that weren't opened yet.
I'll try to have a look, but the main point still stands: the best way to get it done is for you to get your PR to the point where it's green.


Tabular: Cache AG version

Issue #, if available:
Description of changes:

Added caching of AG version during save of predictor.
Adding comparison of cached AG version during load of predictor prior to loading the actual predictor itself.
This avoids errors when there is a version mismatch that could occur before the actual warning of version incompatibility was triggered, leading to a lot of confusion from users.
Added error-by-default when versions are incompatible. This should reduce the chances of users missing the warning message.
Added Python Version and Operating System to the Learner logs at start of fit.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Job PR-1369-1 is done.
Docs are uploaded to http://autogluon-staging.s3-website-us-west-2.amazonaws.com/PR-1369/1/index.html

LGTM! We may want to add similar check in TextPredictor as well.

Definitely, this is easiest achieved by having TextPredictor directly re-use the Predictor code by creating an AbstractPredictor class, which is planned potentially for v0.4.


Fixed issue 1164 - only checking that source exists

Command make unit-test passes, the volume subsystem should validate the checks.

Can you please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "master" git@github.com:PaulSec/docker.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

This will update the existing PR, so you do not need to open a new one.

@PaulSec Could you pls move info about issue number to body of commit message instead of title as Fix #1164, also seems as #1164 is wrong number.

It should be alright now, thanks @LK4D4

@PaulSec Look https://help.github.com/articles/closing-issues-via-commit-messages/ for reserved keywords which should be used in comments for github handle them.
So it shoud be like Fix #11644 or Resolves #11644

Closing since this was resolved in another PR.
Thanks for the contribution!


chore: track analytics for all buyer guarantee clicks (px-4631)

Addresses PX-4631.
This is more follow-up work to the tracking changes we made right before launching ARTA. We were tracking clicks on the BuyerGuarantee component when it was rendered from the Order app's Shipping route, but only that route. This PR updates the Order app to track those clicks from every route.

👍


If a Job.env{} var is empty, it will cause a Kubernetes error

Consider this:
j = new Job("foo", "alpine:3.7")
j.env = {
  foo: null
}

The above will create a Kubernetes pod with this in the env section:
          {
            "name": "foo",
            "valueFrom": {}
          }

The above is invalid. It should be:
          {
            "name": "foo",
            "value": ""
          }

Or something else that is structurally allowed.
The code that generates this is in the worker's k8s.ts file somewhere.

This one's my fault.  It's these lines:
https://github.com/Azure/brigade/blob/a2646de88d941a4921b0cf805d108fe4a2f6f8f1/brigade-worker/src/k8s.ts#L216-L243
This could be fixed by adding another part to the if-statement at line 234, something like:
} else if (val === null) {
   envVars.push({
     name: key,
     valueFrom: {
       secretKeyRef: {
         name: secName,
         key: ""
       }
     }
  } as kubernetes.V1EnvVar);
} else {
// ...

I can pick this up!

@shubheksha excellent! Thanks!

@biskit1, I'm on the move for a bit, so I won't be able to, you can pick it up!

Thanks @shubheksha! Will try to get this done over the weekend. Will keep you posted!

Just to update anyone who comes around: I'm trying to figure out how to set up the dev environment so I can run/implement the appropriate tests once I make the small change suggested above.
I had to prioritize some other things given the time I estimated setting this up/figuring it out would take, so I just want you to know that I'm still on it and will complete it ASAP.
If anyone (@jdotjdot , @technosophos) has some suggestions for setting up the dev environment just for this portion, please share :) for now, I'm getting started by following the steps listed in this developers guide to get the appropriate tools installed and set up the environment.

closing since #670 has been merged


Release 1.0.1

feat(IPSECKEY): added basic support
doc(README): update for ES module usage
fix: call is[8|16]BitInt() correctly
test: show more results in test output
style: replace this.constructor with class name

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

105 of 135 (77.78%)  changed or added relevant lines in 30 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.2%) to 87.705%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

rr/cert.js
0
1
0.0%

rr/naptr.js
1
2
50.0%

rr/openpgpkey.js
0
1
0.0%

rr/hinfo.js
0
2
0.0%

rr/key.js
1
4
25.0%

rr/nsec3.js
0
4
0.0%

rr/nsec3param.js
0
4
0.0%

rr/ipseckey.js
67
81
82.72%

Totals

Change from base Build<PHONE_NUMBER>:
-0.2%

Covered Lines:
2899

Relevant Lines:
3271

💛  - Coveralls


"malloc(): memory corruption"  and then  "[icp_node-2] process has died [pid 18948, exit code -6"

Bug Description
It often worked well but occasionally triggered:
malloc(): memory corruption

and then the [icp_node-2] process died:
[icp_node-2] process has died [pid 18948, exit code -6, cmd /home/admin/robotproject/icplocalization/catkin_ws/devel/lib/icp_localization/localizer_node __name:=icp_node __log:=/home/admin/.ros/log/92752c16-ada5-11ed-ad1e-c0b6f9cda807/icp_node-2.log].
log file: /home/admin/.ros/log/92752c16-ada5-11ed-ad1e-c0b6f9cda807/icp_node-2*.log

The localization was perfect just until this bug occurred and it occurred randomly without patterns.
Detailed Information
... logging to /home/admin/.ros/log/92752c16-ada5-11ed-ad1e-c0b6f9cda807/roslaunch-admin-18912.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://admin:41469/

SUMMARY
========

PARAMETERS
 * /icp_node/calibration/imu_to_range_sensor/pitch: 0.0
 * /icp_node/calibration/imu_to_range_sensor/roll: 0.0
 * /icp_node/calibration/imu_to_range_sensor/x: 0.068
 * /icp_node/calibration/imu_to_range_sensor/y: 0.135
 * /icp_node/calibration/imu_to_range_sensor/yaw: 3.14159265359
 * /icp_node/calibration/imu_to_range_sensor/z: 0.275
 * /icp_node/calibration/odometry_source_to_range_sensor/pitch: 0.0
 * /icp_node/calibration/odometry_source_to_range_sensor/roll: 0.0
 * /icp_node/calibration/odometry_source_to_range_sensor/x: -0.076
 * /icp_node/calibration/odometry_source_to_range_sensor/y: -0.024
 * /icp_node/calibration/odometry_source_to_range_sensor/yaw: 0.0
 * /icp_node/calibration/odometry_source_to_range_sensor/z: 0.034
 * /icp_node/icp_config_path: /home/admin/wo...
 * /icp_node/icp_localization/fixed_frame: map
 * /icp_node/icp_localization/gravity_vector_filter_time_constant: 0.01
 * /icp_node/icp_localization/imu_data_topic: /imu/data
 * /icp_node/icp_localization/initial_pose/pitch: 0.0
 * /icp_node/icp_localization/initial_pose/roll: 0.0
 * /icp_node/icp_localization/initial_pose/x: 0.0
 * /icp_node/icp_localization/initial_pose/y: 0.0
 * /icp_node/icp_localization/initial_pose/yaw: 0.0
 * /icp_node/icp_localization/initial_pose/z: 0.0
 * /icp_node/icp_localization/is_provide_odom_frame: False
 * /icp_node/icp_localization/is_use_odometry: False
 * /icp_node/icp_localization/min_num_odom_msgs_before_ready: 5
 * /icp_node/icp_localization/num_accumulated_range_data: 1
 * /icp_node/icp_localization/odometry_data_topic: /camera/odom/sample
 * /icp_node/icp_localization/range_data_topic: /velodyne_points
 * /icp_node/input_filters_config_path: /home/admin/wo...
 * /icp_node/pcd_filename: /home/admin/wo...
 * /rosdistro: melodic
 * /rosversion: 1.14.13
 * /use_sim_time: True

NODES
  /
    icp_node (icp_localization/localizer_node)
    rosbag (rosbag/play)
    rviz_icp (rviz/rviz)

auto-starting new master
process[master]: started with pid [18934]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to 92752c16-ada5-11ed-ad1e-c0b6f9cda807
process[rosout-1]: started with pid [18945]
started core service [/rosout]
process[icp_node-2]: started with pid [18948]
process[rosbag-3]: started with pid [18953]
process[rviz_icp-4]: started with pid [18954]
[ERROR] [1676516217.436628947]: PluginlibFactory: The plugin for class 'jsk_rviz_plugin/TFTrajectory' failed to load.  Error: According to the loaded plugin descriptions the class jsk_rviz_plugin/TFTrajectory with base class type rviz::Display does not exist. Declared types are  moveit_rviz_plugin/MotionPlanning moveit_rviz_plugin/PlanningScene moveit_rviz_plugin/RobotState moveit_rviz_plugin/Trajectory rviz/Axes rviz/Camera rviz/DepthCloud rviz/Effort rviz/FluidPressure rviz/Grid rviz/GridCells rviz/Illuminance rviz/Image rviz/InteractiveMarkers rviz/LaserScan rviz/Map rviz/Marker rviz/MarkerArray rviz/Odometry rviz/Path rviz/PointCloud rviz/PointCloud2 rviz/PointStamped rviz/Polygon rviz/Pose rviz/PoseArray rviz/PoseWithCovariance rviz/Range rviz/RelativeHumidity rviz/RobotModel rviz/TF rviz/Temperature rviz/WrenchStamped
Map size is: 1316460
Init pose set to, xyz: 0 0 0, q: 0 0 0 1, rpy: 0 0 0 deg
odometry data topic: /camera/odom/sample
imu data topic: /imu/data
Is use odometry: false
Gravity vector filter time constant: 0.01
Min num odom measurements before ready: 5
Calibration:
imu to range sensor: t:[0.068000, 0.135000, 0.275000] ; q:[0.000000, 0.000000, 1.000000, 0.000000] ; rpy (deg):[0.000000, 0.000000, 180.000000]

odometry source to range sensor: t:[-0.076000, -0.024000, 0.034000] ; q:[0.000000, 0.000000, 0.000000, 1.000000] ; rpy (deg):[0.000000, 0.000000, 0.000000]

range data parameters:
topic: /velodyne_points
num range data accumulated: 1

Setting fixed frame to: map
ICPlocalization: Initialized
succesfully initialized icp
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
QObject::connect: Cannot queue arguments of type 'QVector<int>'
(Make sure 'QVector<int>' is registered using qRegisterMetaType().)
malloc(): memory corruption
[icp_node-2] process has died [pid 18948, exit code -6, cmd /home/admin/workspace/robotproject/icplocalization/catkin_ws/devel/lib/icp_localization/localizer_node __name:=icp_node __log:=/home/admin/.ros/log/92752c16-ada5-11ed-ad1e-c0b6f9cda807/icp_node-2.log].
log file: /home/admin/.ros/log/92752c16-ada5-11ed-ad1e-c0b6f9cda807/icp_node-2*.log
[rosbag-3] process has finished cleanly
log file: /home/admin/.ros/log/92752c16-ada5-11ed-ad1e-c0b6f9cda807/rosbag-3*.log

Thanks for reporting the issue. Is it reproducible on any dataset you have? If so, it would be great if you could provide data for us such that we can check. Also, would it be possible for you to run a debugger, s.t. we know where the issue occurs?
thanks


4647: Replaced junit.framework with org.junit

Fixes #4647
What changes did you make and why?
Replaced junit.framework with org.junit

Thanks! :-)


[RESOLVED] High ICMP ping response time

Problem started at 10:13:14 on 2023.07.21
Problem name: High ICMP ping response time
Host: MF-FG
Severity: Warning
Operational data: Value: 709ms
Original problem ID: 32897
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23132&eventid=32897

Problem has been resolved in 7m 0s at 10:20:14 on 2023.07.21
Problem name: High ICMP ping response time
Host: MF-FG
Severity: Warning
Original problem ID: 32897


Move Structure#unwrap to CoordinatesProxy

Unwrapping requires knowing the topology, but there are two alternatives so far:

By default, unwrap to the center of the coordinates or the first of coordinates. However, using the center probably won't work when the coordinates are wrapped and possibly very far apart (the center would be the middle of the cell). Using the first coordinates could work though but it would be order dependent.
Accept a connectivity table in any form containing the indexes of bonded atoms. However, it needs the atoms to have an 0-zero contiguous index.

This was done in ab21f330b6413a83163d4469420033ee2a7a0ddc


Full query support for badge Increment (#931)

fixes #931

Current coverage is 91.62%

Merging #983 into master will increase coverage by +0.01% as of 4afc147

@@            master    #983   diff @@
======================================
  Files           73      73
  Stmts         4423    4432     +9
  Branches       887     888     +1
  Methods          0       0
======================================
+ Hit           4052    4061     +9
  Partial         10      10
  Missed         361     361

Review entire Coverage Diff as of 4afc147

Powered by Codecov. Updated on successful CI builds.


Gauge chart click event

Currently I am displaying a gauge chart with 12 items for each month. Is it possible to determine which month was clicked on. I need this to be able to display detail data for the clicked month.

I don't have a complete answer for you, but I wanted to get back to you in a timely manner with somewhere to get started.
I have never attempted to use click events with a gauge chart, but I'll walk you through what I would take as my first steps if I had a project with a set of working gauge charts already in it.
First, add the on-select attribute to your chart element.

Then, add your click handler to you controller.
// Untested code, use as a guideline only.

(function(){
  angular.module('myApp')
    .controller('MainController', MainController);

  MainController.$inject = ['$scope', '$log'];

  function MainController($scope, $log){
    $scope.myChart = {
      // setup your chart
    };

    $scope.gaugeClicked = function(selectedItem){
      $log.debug('A gauge was clicked.  Here's the selectedItem:', selectedItem);
    };
  }
})();

I would set up something like the above, logging the selectedItem object to console so that I could then inspect them item to see the result.  I'm pretty sure it will give you a row and column for your selection, which you can then compare to your data set to figure out which gauge was clicked.  But then again maybe there is no select event for gauges... I honestly have not looked into this.

Sorry to inform you that this does not seem to work with gauge widgets. The gaugeClicked event is never being fired, so nothing is being logged to the console. I have seen a similiar answer to my problem on another chart type which does work, but the gauge control seems to be a different beast.

This probably means that the event is not implemented in the Google Chart API.  There's nothing we can do about that.  I would suggest creating a separate chart object for each dataset and putting an ng-click directive on each to do what you need to do.
To make your code a little cleaner you could store all the charts as an object with the month name as the key and a chart object as the value and then use ng-repeat with the key, value notation to display all the charts.

Your workaround with creating separate datasets is a reasonable alternative to solving the problem. Thanks.


Metadata Graphic is Outdated

In the Metadata page the header graphic is using metadata.json. This was changed in https://github.com/paritytech/cargo-contract/pull/952 to be $contract_name.json. We should update the graphic to say hello-world.json instead.

Fixed with https://github.com/paritytech/ink-docs/pull/175.


Added: spark DataFrame support, added typing_extensions dependency on Python < 3.8

resolve #194

[x] add feature
[x] add max_row for dataframe converter
[x] add tests
[x] update docs
[x] fix max rows test
[x] fix py36

@KleinK0910 please review

tutorial: https://github.com/vizzuhq/ipyvizzu/pull/256/files#diff-f1d0a28a3b2fd2891b86b6e5fabc0781dad576e3b6fd60dd37b3fca70365d7e2
add_spark_df full usage and code reference: https://github.com/vizzuhq/ipyvizzu/pull/256/files#diff-9fba2abd8e31dc6ddaef465771e43cc71ff63cf9f98da75e6bd28669fa0bf559
changelog

@KleinK0910 I changed the name of the PR, and instead of add_spark_df method, add_df can accept pandas dataframe and series and spark dataframe


Basically complete the project

Fix: https://github.com/pycasbin/redis-watcher/issues/1

@captt-g

Plz use English.
Write good commit message.

@YihuiLu sry, I accidentally read it wrong, already fixed it.

@Zxilly plz review.
/cc @techoner

@captt-g This is not complete, right? After receiving the message from redis, there is no callback processing

@techoner Yes, now I add the default update_callback() func, you can use it like red_watcher.set_update_callback(red_watcher.update_callback),thanks for your review.

@captt-g Please refer to Go and Nodejs:
https://github.com/casbin/redis-watcher
https://github.com/node-casbin/redis-watcher

@captt-g hi, who are you? Are you applying for Summer 2021 or just for open source contribution?

@hsluoyz He is applying for Summer 2021

@captt-g Now run the test.py, I can get message like

,plz review, if there are something wrong, I will fix it.

@techoner Now run the test.py, I can get message like

,plz review, if there are something wrong, plz tell me, I will fix it.

@hsluoyz Hi,I'm applying for Summer 2021.

@captt-g plz contact community as: https://github.com/casbin/Summer2021#投递要求

@captt-g please remove .idea files.

@captt-g squash commits

@captt-g before claiming your work, do you need to consult the original author of these codes? https://github.com/ScienceLogic/pycasbin-redis-watcher

@ffyuanda I have refer to his code ,but not copy word to word, his code isn't work because long time no vindicate.

@captt-g I'm not saying you are plagiarizing, it is all open-sourced. My thought is it will look better if you claim it more obviously and accredit some of the work back to the original repo. Your work is good.

@ffyuanda  I don't think it's necessary.Because I also refer to many other repo ,like https://github.com/casbin/redis-watcher and https://github.com/pycasbin/postgresql-watcher,they are also very useful.But my mind runs through my work.

@captt-g good for you then

@ffyuanda Thanks, I have add the repo I have refer to in the file commits now.

@captt-g why close?

I think this work may not fulfil the requirements.


Error on startup

Getting this error when the plugin is enabled:
https://gist.github.com/Time6628/061e9077976385011ccb

Ensure you are using the latest build of Sponge and not the recommended build.

I am using the latest build of forge, sponge, and pore.

Could you post your full log?
I would like to know exactly when this exception was thrown.

https://gist.github.com/Time6628/f0266e9fc410bb59e12bd28db1026723

Right, so I'm pretty sure I know why the issue is occuring, but I need the entire log to be sure, at least up to the stack trace.

Actually I should have enough to prove whether my theory is correct.

It looks as if Sponge isn't firing the GamePreInitializationEvent for Pore. I'll take a proper look in the morning, however I should note that Pore doesn't really play nicely with mods anyway.


Why reimplementing a stream?

For the PaginationStream.
A Stream is a basic thing in Rust, everyone uses it, theres tons of utilities and code around. It seems you have replaced it with a custom type that resembles a stream but is not actually a Stream. I see https://github.com/smithy-lang/smithy-rs/issues/2413 but can we at least provide an opt in compat or something, it makes it very difficult and weird to work with.

It seems I can use something like this which is not too bad, but just weird:
pub struct SmithyStreamAdapt<I>(PaginationStream<I>);
impl <I> Stream for SmithyStreamAdapt<I> {
    type Item = I;

    fn poll_next(mut self: std::pin::Pin<&mut Self>, cx: &mut std::task::Context<'_>) -> std::task::Poll<Option<Self::Item>> {
        self.0.poll_next(cx)
    }
}

It's a consequence of not being able to make breaking changes to the SDK after the GA launch. Since the Rust Async Working Group is actively working on a stable replacement for the Stream trait, we consider it to be unstable and a risk for future breaking changes. I agree that it's not ideal though. Hopefully we get something in the standard library sooner than later.
In the meantime, we just released a convenience in the aws-smithy-types-convert crate behind the convert-streams feature that allows you to convert our paginators back into streams:
use aws_smithy_types_convert::stream::PaginationStreamExt;

let stream = s3_client.list_objects_v2().bucket("...").into_paginator().send().into_stream_03x();

Thank you, @Ploppz, for the contribution.

Ok thanks for the reply.


[Feature Request] Add Eraser tool

What feature or change would you like to see made?
The request is about adding a feature for individual removal of measurements taken with the tools, as well as annotations.
Hoping that the tool functions similarly to the eraser tool in the previous version of cornerstone, where once activated, measurements could be deleted by clicking on them.
Thank you in advance for considering my request.
Why should we prioritize this feature?
When conducting numerous measurements, it starts to become complicated to work with them. Therefore, it would be useful to be able to delete those that are no longer necessary, as currently the only way to delete them is by refreshing the page.

It should be a simple tool, since we already have all the pieces written. onMouseDown it should look into all tools and see which one is responding to the isPointNearTool and then removeAnnotation(uid)
If you can create something draft i might be able to help


neo4j: 3.4.1 -> 3.4.5

Semi-automatic update generated by https://github.com/ryantm/nixpkgs-update tools. This update was made based on information from https://repology.org/metapackage/neo4j/versions.
meta.description for neo4j is: '"A highly scalable, robust (fully ACID) native graph database"'.

Checks done (click to expand)

built on NixOS
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/bin/neo4j passed the binary check.
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/bin/neo4j-admin passed the binary check.
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/bin/neo4j-import passed the binary check.
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/bin/neo4j-shell passed the binary check.
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/bin/cypher-shell passed the binary check.
5 of 5 passed binary check by having a zero exit code.
2 of 5 passed binary check by having the new version present in output.
found 3.4.5 with grep in /nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5
directory tree listing: https://gist.github.com/4baf94005c683a7ba757b101dce85ede
du listing: https://gist.github.com/1cd219b98c391dff72fb9d800e56d1af

Test this build with Cachix (click to expand)

One time setup in nixpkgs Git checkout:
cachix use r-ryantm
git remote add r-ryantm https://github.com/r-ryantm/nixpkgs.git

Test this build:
git fetch r-ryantm && git checkout 6744e9d19b87ba37df514bcaed7e7834d7f35027 && nix-shell --pure -I nixpkgs=. -p neo4j

cc @offlinehacker for testing.

Success on x86_64-linux (full log)
Attempted: neo4j
Partial log (click to expand)
strip is /nix/store/gpc2wld1s0c6qzx9326cwn1wcx29xzsj-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/bin
patching script interpreter paths in /nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/share/neo4j/bin/neo4j-shell: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/56nrxy58wbhvs2sy3rir1jqa68p0kkm5-bash-4.4-p23/bin/bash"
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/share/neo4j/bin/neo4j-import: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/56nrxy58wbhvs2sy3rir1jqa68p0kkm5-bash-4.4-p23/bin/bash"
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/share/neo4j/bin/neo4j: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/56nrxy58wbhvs2sy3rir1jqa68p0kkm5-bash-4.4-p23/bin/bash"
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/share/neo4j/bin/cypher-shell: interpreter directive changed from "/bin/bash" to "/nix/store/56nrxy58wbhvs2sy3rir1jqa68p0kkm5-bash-4.4-p23/bin/bash"
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5/share/neo4j/bin/neo4j-admin: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/56nrxy58wbhvs2sy3rir1jqa68p0kkm5-bash-4.4-p23/bin/bash"
checking for references to /build in /nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5...
/nix/store/alva2lcdvnvk0zv4m7jq2lygak12vk84-neo4j-3.4.5

No attempt on aarch64-linux (full log)
The following builds were skipped because they don't evaluate on aarch64-linux: neo4j
Partial log (click to expand)

a) For `nixos-rebuild` you can set
  { nixpkgs.config.allowUnfree = true; }
in configuration.nix to override this.

b) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
  { allowUnfree = true; }
to ~/.config/nixpkgs/config.nix.

Success on x86_64-darwin (full log)
Attempted: neo4j
Partial log (click to expand)
post-installation fixup
strip is /nix/store/251fvx4mx9q4zarbca5cciasmn66p668-cctools-binutils-darwin/bin/strip
stripping (with command strip and flags -S) in /nix/store/kp204phh169rw61ixgg3pki89jvcqzxw-neo4j-3.4.5/bin
patching script interpreter paths in /nix/store/kp204phh169rw61ixgg3pki89jvcqzxw-neo4j-3.4.5
/nix/store/kp204phh169rw61ixgg3pki89jvcqzxw-neo4j-3.4.5/share/neo4j/bin/neo4j: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/hp9yq2m1i066irvasv20zr2lmj54fk9h-bash-4.4-p23/bin/bash"
/nix/store/kp204phh169rw61ixgg3pki89jvcqzxw-neo4j-3.4.5/share/neo4j/bin/neo4j-shell: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/hp9yq2m1i066irvasv20zr2lmj54fk9h-bash-4.4-p23/bin/bash"
/nix/store/kp204phh169rw61ixgg3pki89jvcqzxw-neo4j-3.4.5/share/neo4j/bin/neo4j-admin: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/hp9yq2m1i066irvasv20zr2lmj54fk9h-bash-4.4-p23/bin/bash"
/nix/store/kp204phh169rw61ixgg3pki89jvcqzxw-neo4j-3.4.5/share/neo4j/bin/neo4j-import: interpreter directive changed from "/usr/bin/env bash" to "/nix/store/hp9yq2m1i066irvasv20zr2lmj54fk9h-bash-4.4-p23/bin/bash"
/nix/store/kp204phh169rw61ixgg3pki89jvcqzxw-neo4j-3.4.5/share/neo4j/bin/cypher-shell: interpreter directive changed from "/bin/bash" to "/nix/store/hp9yq2m1i066irvasv20zr2lmj54fk9h-bash-4.4-p23/bin/bash"
/nix/store/kp204phh169rw61ixgg3pki89jvcqzxw-neo4j-3.4.5


double amount of metrics when using federation endpoint with two replica

we are also facing same issue with federate Prometheus what you face earlier if you provide a solution to me it really helpful to me
I try to scrape from the federation endpoint, which resides inside an open shift cluster. The openshift-prometheus-instance has two replicas. I am getting the double amount of metrics, labeled with "prometheus_replica=replica_0" and "prometheus_replica=replica_1".
job_name: prometheus_openshift_prod
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
-'{job="kube-state-metrics"}'
'{job="kubelet"}'
scheme: https
static_configs:
-targets:

endpoint

Thanks,
Veera

It makes more sense to ask questions like this on the prometheus-users mailing list rather than in a GitHub issue. On the mailing list, more people are available to potentially respond to your question, and the whole community can benefit from the answers provided.


Potential memory leak when adding documents to Tantivy

I have observed a potential memory leak issue when adding documents to Tantivy. After committing the first batch of documents, the resident memory (RES) is around 18MB. After committing the second batch, the RES increases to approximately 36MB. Even after the Index and IndexWriter instances are dropped and the writing thread is terminated, the allocated memory does not seem to be released.
Here's a minimal reproducible example:
use tantivy::schema::*;
use tantivy::{doc, Index, IndexWriter};
use tempfile::TempDir;
use std::{thread, time};

fn main() -> tantivy::Result<()> {
    println!("PID {}", std::process::id());
    let index_path = TempDir::new()?;
    {
        // First we need to define a schema ...
        let mut schema_builder = Schema::builder();
        schema_builder.add_text_field("title", TEXT | STORED);
        schema_builder.add_text_field("body", TEXT);
        let schema = schema_builder.build();
        let index = Index::create_in_dir(&index_path, schema.clone())?;
        let mut index_writer: IndexWriter = index.writer(15_000_000)?;
        let title = schema.get_field("title").unwrap();
        let body = schema.get_field("body").unwrap();
        for _ in 1..100000 {
            index_writer.add_document(doc!(
                    title => "Frankenstein",
                    body => "You will rejoice to hear that no disaster has accompanied the commencement of an \
                             enterprise which you have regarded with such evil forebodings.  I arrived here \
                             yesterday, and my first task is to assure my dear sister of my welfare and \
                             increasing confidence in the success of my undertaking."
                    ))?;
        }
        println!("Block 1 commiting...");
        index_writer.commit()?;
    }
    println!("leaving block 1, sleep 5s");
    let ten_millis = time::Duration::from_millis(1000 * 10);
    thread::sleep(ten_millis);
    {
        println!("Insert second batch");
        let index = Index::open_in_dir(&index_path)?;
        let mut index_writer: IndexWriter = index.writer(15_000_000)?;
        let schema = index.schema();

        let title = schema.get_field("title").unwrap();
        let body = schema.get_field("body").unwrap();

        for _ in 1..100000 {
            index_writer.add_document(doc!(
                    title => "Frankenstein",
                    body => "You will rejoice to hear that no disaster has accompanied the commencement of an \
                             enterprise which you have regarded with such evil forebodings.  I arrived here \
                             yesterday, and my first task is to assure my dear sister of my welfare and \
                             increasing confidence in the success of my undertaking."
                    ))?;
        }
        println!("Block 2 commiting...");
        index_writer.commit()?;
    }
    println!("leaving block 2, sleep 20s");
    let ten_millis = time::Duration::from_millis(1000 * 10);
    thread::sleep(ten_millis);
    Ok(())
}

After running this code, the resident memory does not seem to be released even after the Index and IndexWriter instances are dropped, and the writing thread is terminated.
Could you please investigate the root cause of this potential memory leak and provide guidance on how to properly manage memory when working with Tantivy?
Thank you for your attention to this issue.

Your allocator could be the problem here.
@softhuafei can you try and use jemalloc and check its internal metrics?  It exposes the amount of allocated memory. This should be more accurate than resident memory.

Thank you for your response.
I'am try use jemalloc and check it‘s profile. This is the new code and results:
[package]
name = "tantivy_test"
version = "0.1.0"
edition = "2021"

[dependencies]
tantivy = "0.22.0"
jemallocator = "0.3.2"
jemalloc-ctl = "0.3.2"
tempfile = "3.3.0"

[dependencies.jemalloc-sys]
version = "0.3.2"
features = ["stats", "profiling", "unprefixed_malloc_on_supported_platforms"]

[profile.release]
debug = true

// code
use tantivy::schema::*;
use tantivy::{doc, Index, IndexWriter};
use tempfile::TempDir;
use jemallocator;
use jemalloc_ctl::{AsName, Access};
use std::collections::HashMap;
use std::{thread, time};

#[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;

const PROF_ACTIVE: &'static [u8] = b"prof.active\0";
const PROF_DUMP: &'static [u8] = b"prof.dump\0";
const PROFILE_OUTPUT: &'static [u8] = b"profile.out\0";

fn set_prof_active(active: bool) {
    let name = PROF_ACTIVE.name();
    name.write(active).expect("Should succeed to set prof");
}

fn dump_profile() {
    let name = PROF_DUMP.name();
    name.write(PROFILE_OUTPUT).expect("Should succeed to dump profile")
}

fn main() -> tantivy::Result<()> {
    set_prof_active(true);
    println!("PID {}", std::process::id());
    let index_path = TempDir::new()?;

    // First we need to define a schema ...
    let mut schema_builder = Schema::builder();

    schema_builder.add_text_field("title", TEXT | STORED);

    schema_builder.add_text_field("body", TEXT);

    let schema = schema_builder.build();

    let index = Index::create_in_dir(&index_path, schema.clone())?;

    let mut index_writer: IndexWriter = index.writer(50_000_000)?;

    let title = schema.get_field("title").unwrap();
    let body = schema.get_field("body").unwrap();

    for _ in 1..100000 {
        index_writer.add_document(doc!(
                title => "Frankenstein",
                body => "You will rejoice to hear that no disaster has accompanied the commencement of an \
                            enterprise which you have regarded with such evil forebodings.  I arrived here \
                            yesterday, and my first task is to assure my dear sister of my welfare and \
                            increasing confidence in the success of my undertaking."
                ))?;
    }
    println!("commiting...");
    index_writer.commit()?;

    std::mem::drop(index);
    std::mem::drop(index_writer);
    set_prof_active(false);
    dump_profile();

    println!("After drop, sleep 20s");
    let ten_millis = time::Duration::from_millis(1000 * 30);
    thread::sleep(ten_millis);

    Ok(())
}

The main memory allocation comes from IndexMerger write(), which seems normal. However, why doesn't the RES decrease after dropping the Index and IndexWriter? If this is a long-running process, could the RES keep increasing as the service progresses, eventually leading to an OOM ?

The allocator will reserve some memory and not release it back to the OS. That's not a memory leak and limited. I wrote something about that here: https://quickwit.io/blog/performance-investigation

The allocator will reserve some memory and not release it back to the OS. That's not a memory leak and limited. I wrote something about that here: https://quickwit.io/blog/performance-investigation

Thank you very much! I tested the behavior with and without jemalloc, this is my test code, it creates/writes the tantivy index three times repeatedly.

use tantivy::schema::*;
use tantivy::{doc, Index, IndexWriter};
use tempfile::TempDir;
use jemallocator;
use std::{thread, time};

#[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;

fn main() -> tantivy::Result<()> {
    // set_prof_active(true);
    println!("PID {}", std::process::id());

    for i in 1..4 {
        println!("{}-th", i);
        let index_path = TempDir::new()?;

        // First we need to define a schema ...
        let mut schema_builder = Schema::builder();

        schema_builder.add_text_field("title", TEXT | STORED);
        schema_builder.add_text_field("body", TEXT);
        let schema = schema_builder.build();
        let index = Index::create_in_dir(&index_path, schema.clone())?;
        // let index = Index::open_in_dir(&index_path)?;
        let mut index_writer: IndexWriter = index.writer(1000_000_000)?;

        let title = schema.get_field("title").unwrap();
        let body = schema.get_field("body").unwrap();

        for _ in 1..200000 {
            index_writer.add_document(doc!(
                    title => "Frankenstein",
                    body => "You will rejoice to hear that no disaster has accompanied the commencement of an \
                                enterprise which you have regarded with such evil forebodings.  I arrived here \
                                yesterday, and my first task is to assure my dear sister of my welfare and \
                                increasing confidence in the success of my undertaking."
                    ))?;
        }
        println!("commiting...");
        index_writer.commit()?;
        println!("wait merging...");
        index_writer.wait_merging_threads()?;
    }

    println!("After drop, sleep 120s");
    let ten_millis = time::Duration::from_millis(1000 * 120);
    thread::sleep(ten_millis);

    Ok(())
}

When using jemalloc, the behavior is similar to what you described in your blog. Jemalloc manages memory fragmentation and avoids repeated calls to mmap. The process only calls mmap in the first iteration. The second and third iterations do not call any mmap and call munmap before the process exits. The RES is stable at 100M～ during the whole process
strace -e trace=mmap,munmap,mremap,brk ./target/debug/tantivy_test
brk(NULL)                               = 0x55faf6c8f000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fcf244b1000
mmap(NULL, 50, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0x7fcf244b0000
mmap(NULL, 2133888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fcf242a7000
mmap(0x7fcf244ac000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7fcf244ac000
mmap(0x7fcf244ad000, 12160, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fcf244ad000
munmap(0x7fcf244b0000, 50)              = 0
mmap(NULL, 44795, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fcf2429c000
mmap(NULL, 135600, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fcf2427a000
mmap(0x7fcf24281000, 65536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fcf24281000
mmap(0x7fcf24291000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7fcf24291000
mmap(0x7fcf24296000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7fcf24296000
mmap(0x7fcf24298000, 12720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fcf24298000
mmap(NULL, 103496, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fcf24260000
mmap(0x7fcf24263000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fcf24263000
mmap(0x7fcf24274000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7fcf24274000
mmap(0x7fcf24278000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7fcf24278000
mmap(NULL, 1331224, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fcf2411a000
mmap(0x7fcf24129000, 638976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x7fcf24129000
mmap(0x7fcf241c5000, 626688, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xab000) = 0x7fcf241c5000
mmap(0x7fcf2425e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x143000) = 0x7fcf2425e000
mmap(NULL, 24720, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fcf24113000
mmap(0x7fcf24115000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fcf24115000
mmap(0x7fcf24117000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7fcf24117000
mmap(0x7fcf24118000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7fcf24118000
mmap(NULL, 1872544, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fcf23f49000
mmap(0x7fcf23f6f000, 1363968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26000) = 0x7fcf23f6f000
mmap(0x7fcf240bc000, 311296, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x173000) = 0x7fcf240bc000
mmap(0x7fcf24109000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bf000) = 0x7fcf24109000
mmap(0x7fcf2410f000, 12960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fcf2410f000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fcf23f47000
mmap(NULL, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fcf23f43000
munmap(0x7fcf2429c000, 44795)           = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fcf244b0000
munmap(0x7fcf244b0000, 4096)            = 0
mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fcf23d43000
munmap(0x7fcf23d43000, 2097152)         = 0
mmap(NULL, 4190208, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fcf23b44000
munmap(0x7fcf23b44000, 770048)          = 0
munmap(0x7fcf23e00000, 1323008)         = 0
brk(NULL)                               = 0x55faf6c8f000
mmap(NULL, 2097152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fcf23a00000
mmap(NULL, 4194304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fcf23600000
mmap(NULL, 270715632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fcf133d3000
mmap(0x7fcf135f0000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d000) = 0x7fcf135f0000
mmap(0x7fcf135f5000, 268479216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fcf135f5000
mmap(NULL, 44795, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fcf2429c000
mmap(NULL, 43520, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fcf23f38000
mmap(0x7fcf23f3b000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7fcf23f3b000
mmap(0x7fcf23f3f000, 8192, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fcf23f3f000
mmap(0x7fcf23f41000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7fcf23f41000
munmap(0x7fcf2429c000, 44795)           = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf242a4000
PID 105727
1-th
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf131d2000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf12bff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf127fe000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf11fff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf115ff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf109ff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf107fe000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf0ffff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf0f7ff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf0efff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf0e7ff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf0dfff000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fcf0d7ff000
mmap(NULL, 3145728, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fcf08b00000
mmap(NULL, 3670016, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fcf08780000
commiting...
wait merging...
2-th
commiting...
wait merging...
3-th
commiting...
wait merging...
After drop, sleep 120s
munmap(0x7fcf242a4000, 12288)           = 0

But for original malloc, For native malloc, the first two iterations have calls to brk, mmap, and munmap, and RES gradually increases as the iterations proceed：33M->82M->100M, and finally stabilizes at 100M.
$strace -e trace=mmap,munmap,mremap,brk ./target/debug/tantivy_test
brk(NULL)                               = 0x557b9e00b000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f01ec144000
mmap(NULL, 50, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0x7f01ec143000
mmap(NULL, 2133888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f01ebf3a000
mmap(0x7f01ec13f000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7f01ec13f000
mmap(0x7f01ec140000, 12160, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f01ec140000
munmap(0x7f01ec143000, 50)              = 0
mmap(NULL, 44795, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f01ebf2f000
mmap(NULL, 103496, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f01ebf15000
mmap(0x7f01ebf18000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f01ebf18000
mmap(0x7f01ebf29000, 16384, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f01ebf29000
mmap(0x7f01ebf2d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f01ebf2d000
mmap(NULL, 135600, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f01ebef3000
mmap(0x7f01ebefa000, 65536, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f01ebefa000
mmap(0x7f01ebf0a000, 20480, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f01ebf0a000
mmap(0x7f01ebf0f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7f01ebf0f000
mmap(0x7f01ebf11000, 12720, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f01ebf11000
mmap(NULL, 1331224, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f01ebdad000
mmap(0x7f01ebdbc000, 638976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf000) = 0x7f01ebdbc000
mmap(0x7f01ebe58000, 626688, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xab000) = 0x7f01ebe58000
mmap(0x7f01ebef1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x143000) = 0x7f01ebef1000
mmap(NULL, 24720, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f01ebda6000
mmap(0x7f01ebda8000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7f01ebda8000
mmap(0x7f01ebdaa000, 4096, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7f01ebdaa000
mmap(0x7f01ebdab000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7f01ebdab000
mmap(NULL, 1872544, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f01ebbdc000
mmap(0x7f01ebc02000, 1363968, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x26000) = 0x7f01ebc02000
mmap(0x7f01ebd4f000, 311296, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x173000) = 0x7f01ebd4f000
mmap(0x7f01ebd9c000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1bf000) = 0x7f01ebd9c000
mmap(0x7f01ebda2000, 12960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f01ebda2000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f01ebbda000
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f01ebbd7000
munmap(0x7f01ebf2f000, 44795)           = 0
brk(NULL)                               = 0x557b9e00b000
brk(0x557b9e02c000)                     = 0x557b9e02c000
mmap(NULL, 270715632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f01db9aa000
mmap(0x7f01dbbc7000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1d000) = 0x7f01dbbc7000
mmap(0x7f01dbbcc000, 268479216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f01dbbcc000
mmap(NULL, 44795, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f01ebf2f000
mmap(NULL, 43520, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f01db99f000
mmap(0x7f01db9a2000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f01db9a2000
mmap(0x7f01db9a6000, 8192, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7f01db9a6000
mmap(0x7f01db9a8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7f01db9a8000
munmap(0x7f01ebf2f000, 44795)           = 0
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01ebf37000
PID 76409
1-th
mmap(NULL, 1523712, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f01db82b000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01db62a000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01db429000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01db228000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01db024000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01dae20000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01dac1c000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01daa18000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01da814000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01da610000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01da40f000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01da208000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01da004000
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f01d9e00000
brk(NULL)                               = 0x557b9e02c000
brk(0x557b9e04d000)                     = 0x557b9e04d000
brk(NULL)                               = 0x557b9e04d000
brk(0x557b9e06e000)                     = 0x557b9e06e000
brk(NULL)                               = 0x557b9e06e000
brk(0x557b9e08f000)                     = 0x557b9e08f000
brk(NULL)                               = 0x557b9e08f000
brk(0x557b9e0b0000)                     = 0x557b9e0b0000
brk(NULL)                               = 0x557b9e0b0000
brk(0x557b9e0d1000)                     = 0x557b9e0d1000
brk(NULL)                               = 0x557b9e0d1000
brk(0x557b9e0f2000)                     = 0x557b9e0f2000
brk(NULL)                               = 0x557b9e0f2000
brk(0x557b9e113000)                     = 0x557b9e113000
brk(NULL)                               = 0x557b9e113000
brk(0x557b9e134000)                     = 0x557b9e134000
brk(NULL)                               = 0x557b9e134000
brk(0x557b9e155000)                     = 0x557b9e155000
brk(NULL)                               = 0x557b9e155000
brk(0x557b9e176000)                     = 0x557b9e176000
brk(NULL)                               = 0x557b9e176000
brk(0x557b9e197000)                     = 0x557b9e197000
brk(NULL)                               = 0x557b9e197000
brk(0x557b9e1b8000)                     = 0x557b9e1b8000
brk(NULL)                               = 0x557b9e1b8000
brk(0x557b9e1d9000)                     = 0x557b9e1d9000
brk(NULL)                               = 0x557b9e1d9000
brk(0x557b9e1fa000)                     = 0x557b9e1fa000
brk(NULL)                               = 0x557b9e1fa000
brk(0x557b9e21b000)                     = 0x557b9e21b000
brk(NULL)                               = 0x557b9e21b000
brk(0x557b9e23c000)                     = 0x557b9e23c000
brk(NULL)                               = 0x557b9e23c000
brk(0x557b9e25d000)                     = 0x557b9e25d000
brk(NULL)                               = 0x557b9e25d000
brk(0x557b9e27e000)                     = 0x557b9e27e000
brk(NULL)                               = 0x557b9e27e000
brk(0x557b9e29f000)                     = 0x557b9e29f000
brk(NULL)                               = 0x557b9e29f000
brk(0x557b9e2c0000)                     = 0x557b9e2c0000
brk(NULL)                               = 0x557b9e2c0000
brk(0x557b9e2e1000)                     = 0x557b9e2e1000
brk(NULL)                               = 0x557b9e2e1000
brk(0x557b9e302000)                     = 0x557b9e302000
brk(NULL)                               = 0x557b9e302000
brk(0x557b9e323000)                     = 0x557b9e323000
brk(NULL)                               = 0x557b9e323000
brk(0x557b9e344000)                     = 0x557b9e344000
brk(NULL)                               = 0x557b9e344000
brk(0x557b9e365000)                     = 0x557b9e365000
brk(NULL)                               = 0x557b9e365000
brk(0x557b9e386000)                     = 0x557b9e386000
brk(NULL)                               = 0x557b9e386000
brk(0x557b9e3a7000)                     = 0x557b9e3a7000
brk(NULL)                               = 0x557b9e3a7000
brk(0x557b9e3c8000)                     = 0x557b9e3c8000
brk(NULL)                               = 0x557b9e3c8000
brk(0x557b9e3e9000)                     = 0x557b9e3e9000
brk(NULL)                               = 0x557b9e3e9000
brk(0x557b9e40a000)                     = 0x557b9e40a000
brk(NULL)                               = 0x557b9e40a000
brk(0x557b9e42b000)                     = 0x557b9e42b000
brk(NULL)                               = 0x557b9e42b000
brk(0x557b9e44c000)                     = 0x557b9e44c000
brk(NULL)                               = 0x557b9e44c000
brk(0x557b9e46d000)                     = 0x557b9e46d000
brk(NULL)                               = 0x557b9e46d000
brk(0x557b9e48e000)                     = 0x557b9e48e000
brk(NULL)                               = 0x557b9e48e000
brk(0x557b9e4af000)                     = 0x557b9e4af000
brk(NULL)                               = 0x557b9e4af000
brk(0x557b9e4d0000)                     = 0x557b9e4d0000
brk(NULL)                               = 0x557b9e4d0000
brk(0x557b9e4f1000)                     = 0x557b9e4f1000
brk(NULL)                               = 0x557b9e4f1000
brk(0x557b9e512000)                     = 0x557b9e512000
brk(NULL)                               = 0x557b9e512000
brk(0x557b9e533000)                     = 0x557b9e533000
brk(NULL)                               = 0x557b9e533000
brk(0x557b9e554000)                     = 0x557b9e554000
brk(NULL)                               = 0x557b9e554000
brk(0x557b9e575000)                     = 0x557b9e575000
brk(NULL)                               = 0x557b9e575000
brk(0x557b9e596000)                     = 0x557b9e596000
brk(NULL)                               = 0x557b9e596000
brk(0x557b9e5b7000)                     = 0x557b9e5b7000
commiting...
mmap(NULL, 1523712, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f017c1e8000
wait merging...
munmap(0x7f017c1e8000, 1523712)         = 0
2-th
brk(NULL)                               = 0x557b9e5b7000
brk(0x557b9e5d8000)                     = 0x557b9e5d8000
brk(NULL)                               = 0x557b9e5d8000
brk(0x557b9e5f9000)                     = 0x557b9e5f9000
brk(NULL)                               = 0x557b9e5f9000
brk(0x557b9e61a000)                     = 0x557b9e61a000
brk(NULL)                               = 0x557b9e61a000
brk(0x557b9e63b000)                     = 0x557b9e63b000
brk(NULL)                               = 0x557b9e63b000
brk(0x557b9e65c000)                     = 0x557b9e65c000
brk(NULL)                               = 0x557b9e65c000
brk(0x557b9e67d000)                     = 0x557b9e67d000
brk(NULL)                               = 0x557b9e67d000
brk(0x557b9e69e000)                     = 0x557b9e69e000
brk(NULL)                               = 0x557b9e69e000
brk(0x557b9e6bf000)                     = 0x557b9e6bf000
brk(NULL)                               = 0x557b9e6bf000
brk(0x557b9e6e0000)                     = 0x557b9e6e0000
brk(NULL)                               = 0x557b9e6e0000
brk(0x557b9e701000)                     = 0x557b9e701000
brk(NULL)                               = 0x557b9e701000
brk(0x557b9e722000)                     = 0x557b9e722000
commiting...
brk(NULL)                               = 0x557b9e722000
brk(0x557b9e8a6000)                     = 0x557b9e8a6000
wait merging...
3-th
commiting...
wait merging...
After drop, sleep 120s

Closing as there are no evidence of memory leak at this point.


Document nmstate as experimental and require an override to use it

"edpm_network_config_tool: nmstate" is experimental and officially
unsupported. This change will require users to explicitly opt-in to
using nmstate directly instead of using os-net-config+nmstate. It adds a
task that will fail unless edpm_network_config_tool_nmstate_override is
set to true (defaults to false).
Signed-off-by: James Slagle<EMAIL_ADDRESS>Jira: https://issues.redhat.com/browse/OSPRH-12316

Do you think more things like this are likely to come up in the future?
I wonder if a better approach might be to have a dictionary called something like edpm_tech_preview. Then allow users to enable tech preview features be appending them to the list?
Obviously, this isn't required if we're only doing it for nmstate. But I do wonder how many more of these things will come up in the future and how cumbersome it will become to individually manage them on a per role basis?
Similar to feature gates I guess: https://docs.openshift.com/container-platform/4.17/nodes/clusters/nodes-cluster-enabling-features.html
https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates/
Could be overkill for our requirements, but putting it out there for consideration.

Yes, I could see adding a field like this on the NodeSet, which would set an ansible var to enable certain features. I think it would consider it separately from this PR

ltgm


FaceLandmark not static

I'm using FaceRecognition thorugh the static method calls. My images are not on disk therefore using the Create method does not work for me.
Please makeFaceLandmark method static.
cc @takuya-takeuchi

FaceLandmark requires face model data.
So if it makes static, we has to pass model file path when calling it. It is non-sence.

You can use FaceRecognition.LoadImage method.
It loads image data from byte[]. If your image come from stream, you can create Image instance w/o saving as file.

ok


model.cls.grid/element.* classes for radio feels weird

Hello @udos86,
Considering how you render the radio groups, its being impossible to display the radios inline using form-horizontal or form.
What I want to achieve:

How's your code nowadays:

model.cls.element on the code above is only seen on the input itself. But what if i wanted to provide a class for the div.radio and make it

?
This seems the "correct" solution for me (at least the way I understand your library so far)

Thank you!
Renato

@renatoaraujoc Thanks for reporting this template weakness!
I'll have a look on how to fix this.

Yo @udos86,
Thanks for replying!
To further guide you thru my use case, I'll provide a screenshot.

I simply can't inline the radios.
Also, it'd be major cool if you could revamp your template customization (the model.cls.. classes) guide in since its one of the most important parts of this framework tbh.
Thank you!

@renatoaraujoc
Ok, there'll probably be a template update in 1.4.18:
<fieldset *ngSwitchCase="5" role="radiogroup"
          [attr.tabindex]="model.tabIndex"
          [dynamicId]="bindId && model.id"
          [name]="model.name"
          (change)="onValueChange($event)">

    <legend *ngIf="model.legend" [innerHTML]="model.legend"></legend>

            <input type="radio"
                   [formControlName]="model.id"
                   [name]="model.name"
                   [value]="option.value"
                   (blur)="onFocusChange($event)"
                   (focus)="onFocusChange($event)"/>

</fieldset>

You can then overwrite the styles from Bootstrap .radio class.
In fact you could have done that already: [role="radiogroup"] .radio { display: inline }

@udos86,
Wouldn't be better to just:
[ngClass]="model.cls.element.control || 'radio'", so we can leave the radio class as the default? And dont forget to remove the class="radio"...
And yea, could actually go the other way, but feels hackish when actually ngClass is there for this purpose (and the radio-inline/checkbox-inline as well)
Renato

@renatoaraujoc You've got a point there. I'll modify it.


IP port selection isn't working.

will assign more than one app the same server port.

typo in port selection.
Fixed


[SPARK-19296][SQL] Deduplicate url and table in JdbcUtils

What changes were proposed in this pull request?
This PR deduplicates arguments, url and table in JdbcUtils with JDBCOptions.
It avoids to use duplicated arguments, for example, as below:
from
val jdbcOptions = new JDBCOptions(url, table, map)
JdbcUtils.saveTable(ds, url, table, jdbcOptions)

to
val jdbcOptions = new JDBCOptions(url, table, map)
JdbcUtils.saveTable(ds, jdbcOptions)

How was this patch tested?
Running unit test in JdbcSuite/JDBCWriteSuite
Building with Scala 2.10 as below:
./dev/change-scala-version.sh 2.10
./build/mvn -Pyarn -Phadoop-2.4 -Dscala-2.10 -DskipTests clean package

Hi @gatorsmile, could you take a look for this one please? (It might not need a JIRA but it happened to be opened by someone).

It's true, though I wonder if it's still by design, that these methods take url and table as important first-class arguments, and then also other options, even though the options also contain the same arguments.
Or, could the other methods like tableExists reasonably also not have to take these arguments? Consistency is probably more important.

Test build #72192 has started for PR 16753 at commit 9be8f84.

@srowen, I see. Let me maybe give a shot to make them consistent to show if it look good.

Test build #72192 has finished for PR 16753 at commit 9be8f84.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/72192/
Test PASSed.

Merged build finished. Test PASSed.

Test build #72193 has started for PR 16753 at commit d78a7d0.

Test build #72194 has started for PR 16753 at commit cfe258b.

Test build #72193 has finished for PR 16753 at commit d78a7d0.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/72193/
Test FAILed.

Test build #72194 has finished for PR 16753 at commit cfe258b.

This patch fails Spark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/72194/
Test FAILed.

Test build #72199 has started for PR 16753 at commit 6b2841a.

Test build #72199 has finished for PR 16753 at commit 6b2841a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/72199/
Test PASSed.

LGTM except two comments.

@gatorsmile Thank you!

Thank you @srowen and @gatorsmile!

Test build #72245 has started for PR 16753 at commit 918456a.

Test build #72245 has finished for PR 16753 at commit 918456a.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/72245/
Test PASSed.

LGTM. Merging to master.


Add GRPC reflection support

Implemented with change 8a49846. Most of the code is copied from grpc-java and converted into Kotlin.


feat(design): rework modal to be dynamically rendered

PR Checklist
Please check if your PR fulfills the following requirements:

[x] The commit message follows our guidelines: https://github.com/graycoreio/daffodil/blob/master/CONTRIBUTING.md#commit
[x] Tests for the changes have been added (for bug fixes / features)
[x] Docs have been added / updated (for bug fixes / features)

PR Type
What kind of change does this PR introduce?
[ ] Bugfix
[x] Feature
[ ] Code style update (formatting, local variables)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] CI related changes
[ ] Documentation content changes
[ ] Other... Please describe:

What is the current behavior?
Currently, using a modal requires a convoluted portal system.
Fixes: N/A
What is the new behavior?
This uses dynamic rendering to the portal the modal without having to setup up additional components.
Does this PR introduce a breaking change?
[x] Yes
[ ] No

Any existing application that uses the old modal will no longer have backdrops. This is a hard break, and any apps would need updating.
Other information
@lderrickable @xelaint This will have subsequent PRs to restore pre-existing functionality, like closing the modal. Additionally, it will follow up with better action hygiene. I didn't want this PR to become unmanageable so, I did the smallest amount of code I could to upgrade.

The build fails in a big way, so I'm going to wait to review it further till it's a little more tidy

lgtm

Modal doesn't close if I click view cart or checkout ?

Modal doesn't close if I click view cart or checkout ?

@lderrickable @xelaint This will have subsequent PRs to restore pre-existing functionality, like closing the modal. Additionally, it will follow up with better action hygiene. I didn't want this PR to become unmanageable so, I did the smallest amount of code I could to upgrade.


[CPDLP-3282] NPQ MVP Prep - Review and add missing validations for services and models

Context
Ticket: https://dfedigital.atlassian.net.mcas.ms/browse/CPDLP-3282
Changes proposed in this pull request

Moved validations from service classes to the model related to the specific columns.
Updated factories to be valid

I think there are more validation rules that could be moved to the models; I'm not sure how far we want to go with it though... some feel like they would make sense, for example:

application -> validate_permitted_schedule_for_course (accept)
participant outcome -> completion_date_not_in_the_future (create)

I'm less sure about the more service-specific ones though, such as:

application -> cannot_change_from_rejected (accept)
application -> cannot_change_from_accepted (reject)

The completion_date_not_in_the_future for participant outcome already exists.
validate_permitted_schedule_for_course will look to include this


💡 [FEATURE] -

Idea Contribution

[X] I have read all the feature request issues.
[X] I'm interested in working on this issue
[X] I'm part of GSSOC organization

Explain feature request
I would like to add core  java interview preparation questions
Explain your solution
No response
Any alternative approaches/features
No response
Additional Context
No response

Description:
The feature request involves adding a comprehensive list of core Java interview questions to the project.
I am a GSSoC contributor and would like to work on adding core Java interview questions as described in issue #889. Could you please assign this issue to me? Thank you!

Description: The feature request involves adding a comprehensive list of core Java interview questions to the project.
I am a GSSoC contributor and would like to work on adding core Java interview questions as described in issue #889. Could you please assign this issue to me? Thank you!

Hi, you can create issue on your own since this issue is assigned to someone already.


Missing .js files after rebuild

I apologize in advance if this is a repeat issue; I was unable to find a solution.
I upgraded from Serenity v2.9 to v3.8.2. I have reinstalled the packages. I updated TypeScript to v3. When I run the solution I get the following on the login screen:

where the bundled .js files are not found.  How do I generate them?
Thank you!

I also noticed that there are several errors in TypeScript files as well:

The first problem is caused by #4119, solution in that thread.

I am rolling back to 3.8.1 now.
Thanks - I will report back once rolled back.

After rolling back to 3.8.1 - the initial response is that everything seems to work as designed in the Serenity app. I am performing regression testing and will provide a (hopefully) final status update.

All appears in order, thank you for your advice!


Should we add a stdlib logging handler which writes entries to the logging API?

The handler would be similar to the syslog handler in the stdlib.  It could be configured via an INI file, e.g.:
[handler_gcloud]
class=gcloud.logging.handler.APIHandler
level=INFO
log_name=my-log

On a GCE / GAE host, the stdlib's SyslogHandler would work without this feature.

/cc @andewsg
This is probably a yes, as we'd like to have this for the Python runtimes.

:+1:

+1 from me too. I believe we do this with Node also.

Sorry I didn't find this issue. I was saying that I found a working version here:
https://medium.com/google-cloud/cloud-logging-though-a-python-log-handler-a3fbeaf14704#.mcrqgtkhh

As mentioned in that article:

I have to point out that for each log call an API call is done which can impact performance. But as a lot of Python scripts are written for automation task that are not performance critical this should not be a problem to them.

If we decide to do this here (also probably something to consider in node as well) we should be really careful about every logging statement making an API call.
Raven uses a separate thread to asyncronously send logs, and also has other transports that play well with stuff like gevent.

Because of that, I would propose it to be a handler configured by default to logging.ERROR level.
I really if we want to do more, we can implement another logger, threaded one, where the handle() method launches a thread instead of doing the work itself. I would see this as a different functionality though.
I would first start creating the proposed handler, and then maybe implement a ThreadedHandler or something like that that spins threads on logging requests.

Of course, if we go that way, we should also create an Asyncio based handler. But I see the basic one as a first step, documenting properly the possible performance problem is misused.

I'd like to see this get done, because right now logging on flex doesn't capture log levels etc and it's really pretty easy to fix.
@andrewsg showed me the compat handler  which with almost no modifications at least gets the log level right.
I think what we want is:

Auto-detection if you're in a flex environment and writing to the expected log level for fluentd to pick up.
Config option (maybe auto-detect?) for people who have installed the google-fluentd handler on a VM
Fallback to writing to the logging API similar to the medium post. Start with a synchronous handler but leave it easy to swap in asynchronous transports.
For messages of severity error or greater, format the log entry in such a way that it gets properly picked up Cloud Error Reporting.
Optional hook that installs a global exception handler that will log stacktraces to Cloud Error Reporting

I would really like to see this done as we fill out Stackdriver section of Python page, will work on a PR if nobody else is working on it and people are ok with the plan.
@jonparrott

@jonparrott Can you give me an idea of where this stands (in importance, progress, and difficulty)?

This is done.


Same input with different results in terminal and cmd.exe

Environment
Windows build number: Microsoft Windows Pro [Version 10.0.18363.836] x64
Windows Terminal version (if applicable): 1.0.1401.0

Any other software?
stripe cli

Steps to reproduce
Download Stripe CLI (https://github.com/stripe/stripe-cli/releases/tag/v1.4.1)
after "stripe login" (not sure if needed, i was already logged in) using the command
"stripe listen --forward-to https://localhost:44391/api/StripeWebHooks" works on cmd.exe, but not in terminal

Expected behavior
should work as in cmd.exe
Actual behavior

output "unknown flag: --forward-to https://localhost:44391/api/StripeWebHooks"
Screenshot with outputs:

Well that just doesn't make any sense at all. I have no idea why that wouldn't work. Do other stripe CLI functions work in the Windows Terminal?
If you have WSL installed, could you try running the following for me?

Open cmd.exe (not in the Windows Terminal)
run wsl in that legacy console window
run cmd.exe from within wsl.
try running your command (stripe listen --forward-to ...) again in this window.

This might help narrow the problem down to Conpty vs the entire Windows Terminal.

Same Problem in the wls cmd:

I just found out that it seems to be an encoding problem.
Typing it in manually, it works. Copy & Paste does not work depending on the source.
Try copy & paste from the txt:
terminal_issue_6353.txt
Below the byte arrays of the different inputs.
The space after forward-to is different: 32 vs. 194,160. Don't know how this happend.
[...]
n    110    110
     32    32
-    45    45
-    45    45
f    102    102
o    111    111
r    114    114
w    119    119
a    97    97
r    114    114
d    100    100
-    45    45
t    116    116
o    111    111
      32    194
h    104    160
t    116    104
t    116    116
p    112    116
s    115    112
:    58    115
/    47    58
/    47    47
l    108    47
o    111    108
c    99    111
a    97    99
l    108    97
h    104    108
o    111    104
s    115    111
t    116    115

created with with
var working = "stripe listen --forward-to https://localhost:44391/api/StripeWebHooks";
var notWorking = "stripe listen --forward-to https://localhost:44391/api/StripeWebHooks";
var bytesW = Encoding.UTF8.GetBytes(working);
var bytesNW = Encoding.UTF8.GetBytes(notWorking);
for (int i = 0; i < working.Length; i++)
{
    Console.WriteLine(working[i] + "\t\t" + bytesW[i] + "\t\t" + bytesNW[i]);
}

Oh, excellent work with that!
The 160 is probably a &nbsp, IIRC there's some conhost code that just translates those on paste.
The 194 though, no idea what that's doing in there...