Problems with interpreting invalid link keyrefs in XHTML and PDF outputs

EXM-41117.zip
I attached a sample small project.
We have a glossgroup which looks like this:
<glossgroup id="glossgroup">
   <title>GG</title>
    <glossentry id="ddl">
       <glossterm id="gt1">GT1</glossterm>
       <glossdef></glossdef>
   </glossentry>

there is a key defined on it in the DITA Map:
   <topicref href="glossGroup.dita" keys="ggroup"/>

and we have two xref keyrefs which use the key:
        <xref keyref="ggroup/ddl"/>
        <xref keyref="ggroup/gt1">DEF</xref>

Both these links are invalid links, the first one references a topic ID inside the glossgroup topic, and the second one references an element ID located inside an inner topic.
I publish to PDF using DITA OT 3.0.2, both links appear broken in the PDF output but there are no warnings reported by the publishing engine.
I publish to XHTML using DITA OT 3.0.2, both links work, they can be clicked and the target is opened, although they should not work. For the first link the title cannot be determined which is OK. Again no warnings are reported by the publishing engine.

Technically the key ggroup on its own would be a link to the <glossgroup> element (the root topic), but in 3.0.2 it caused some failures in HTML5 that were just resolved with #2900.
This is kind of an odd scenario with links to a topic in a topic, which I think has been reported in another issue at some point. We're correctly matching a topic with ggroup, but I'd bet we're then looking for the ID ddl or gt1 inside of there without explicitly saying "But don't match topic or anything inside another topic". Haven't looked into the code yet to confirm.

We also have problems in Oxygen XML Editor, again interpreting such links too relaxed, showing the target link text although it should not be found, so I also need to correct such things on the editing side. Problem with correcting such problems after a couple of years of having them work in a certain way is that end users will start complaining of DITA content which worked in a certain way and does not work anymore. But we would adhere more to the standard...

I'm still interested in this being fixed to work according to the specification.

This is an interesting issue. I didn't know about it until after it was closed.
To help me explore it, I created a modified testcase that uses regular topics:
2905.zip
The links.dita topic contains the following links:

These should work:

<xref keyref="topic_key/section_id">topic_key/section_id</xref>

<xref keyref="subtopic_key">subtopic_key</xref>

<xref keyref="subtopic_key/abstract_id">subtopic_key/abstract_id</xref>

<xref keyref="subtopic_key/fig_id">subtopic_key/fig_id</xref>

These should not work (@id exists, but not in topic):

<xref keyref="topic_key/subtopic_id">topic_key/subtopic_id</xref>

<xref keyref="topic_key/abstract_id">topic_key/abstract_id</xref>

<xref keyref="topic_key/fig_id">topic_key/fig_id</xref>

These should definitely not work (@id or key does not exist):

<xref keyref="topic_key/NO_SUCH_ID">topic_key/NO_SUCH_ID</xref>

<xref keyref="NO_SUCH_TOPIC/some_id">NO_SUCH_TOPIC/some_id</xref>

The links in the first group are valid - an element @id contained in the specified @keyref'ed topic. The links in the second group are invalid - the @id exists, but not within the specified @keyref'ed topic. The links in the third group are invalid because either the @id or the key value is nonexistent. (This is a control to see how broken links in general are handled.)
After the keyref processing stage, the contents of this topic are as follows:

These should work:

<xref keyref="topic_key/section_id"     href="topic.dita#topic_id/section_id"    >topic_key/section_id</xref>

<xref keyref="subtopic_key"             href="topic.dita#subtopic_id"            >subtopic_key</xref>

<xref keyref="subtopic_key/abstract_id" href="topic.dita#subtopic_id/abstract_id">subtopic_key/abstract_id</xref>

<xref keyref="subtopic_key/fig_id"      href="topic.dita#subtopic_id/fig_id"     >subtopic_key/fig_id</xref>

These should not work (@id exists, but not in topic):

<xref keyref="topic_key/subtopic_id"    href="topic.dita#topic_id/subtopic_id"   >topic_key/subtopic_id</xref>

<xref keyref="topic_key/abstract_id"    href="topic.dita#topic_id/abstract_id"   >topic_key/abstract_id</xref>

<xref keyref="topic_key/fig_id"         href="topic.dita#topic_id/fig_id"        >topic_key/fig_id</xref>

These should definitely not work (@id or key does not exist):

<xref keyref="topic_key/NO_SUCH_ID"     href="topic.dita#topic_id/NO_SUCH_ID"    >topic_key/NO_SUCH_ID</xref>

<xref keyref="NO_SUCH_TOPIC/some_id"                                             >NO_SUCH_TOPIC/some_id</xref>

And in the HTML output, the results are as follows (@class values removed for brevity):

These should work:

topic_key/section_id

subtopic_key

subtopic_key/abstract_id

subtopic_key/fig_id

These should not work (@id exists, but not in topic):

topic_key/subtopic_id

topic_key/abstract_id

topic_key/fig_id

These should definitely not work (@id or key does not exist):

topic_key/NO_SUCH_ID

NO_SUCH_TOPIC/some_id

Indeed, it is not just topic/subtopic @id values; any @id value (existent or nonexistent) survives into the HTML as an attempted link.
Publishing with -Dremove-broken-links=true did not change the HTML output.
Because this affects any incorrect @id value and not just subtopic IDs in topics, I think the issue is more generalized than originally thought.
(Side note - <abstract> @id values do not make their way into the HTML5 output to become referenceable, so this is perhaps a bug too.)


Fail the query when IN or NOT IN filter contains NULL.

Codecov Report

Merging #11188 (0167f4c) into master (e87a050) will increase coverage by 0.00%.
Report is 4 commits behind head on master.
The diff coverage is 0.00%.

@@            Coverage Diff            @@
##           master   #11188     +/-   ##
=========================================
  Coverage    0.11%    0.11%
=========================================
  Files        2214     2163     -51
  Lines      118822   116610   -2212
  Branches    17978    17718    -260
=========================================
  Hits          137      137
+ Misses     118665   116453   -2212
  Partials       20       20

Flag
Coverage Δ

integration1temurin11
?

integration1temurin17
?

integration2temurin11
?

unittests1temurin11
?

unittests1temurin17
?

unittests1temurin20
?

unittests2temurin11
?

unittests2temurin17
0.11% <0.00%> (-0.01%)
:arrow_down:

unittests2temurin20
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Files Changed
Coverage Δ

...org/apache/pinot/sql/parsers/CalciteSqlParser.java
0.00% <0.00%> (ø)

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

@shenyu0127 : can you share what was the previous behavior was for these queries?

@shenyu0127 : can you share what was the previous behavior was for these queries?

The previous behavior was to throw a different error from segment pruning:
Currently the query SELECT * FROM airlineStats WHERE AirTime IN (1, 2, null) gets the following error
[
  {
    "errorCode": 200,
    "message": "QueryExecutionError:\norg.apache.pinot.spi.exception.BadQueryRequestException: java.lang.IllegalArgumentException: Cannot convert value: 'null' to type: INT\n\tat org.apache.pinot.core.query.pruner.ValueBasedSegmentPruner.convertValue(ValueBasedSegmentPruner.java:157)\n\tat org.apache.pinot.core.query.pruner.ValueBasedSegmentPruner$ValueCache$CachedValue.ensureDataType(ValueBasedSegmentPruner.java:223)\n\tat org.apache.pinot.core.query.pruner.ValueBasedSegmentPruner$ValueCache.get(ValueBasedSegmentPruner.java:197)\n\tat org.apache.pinot.core.query.pruner.ColumnValueSegmentPruner.pruneInPredicate(ColumnValueSegmentPruner.java:147)\n...\nCaused by: java.lang.IllegalArgumentException: Cannot convert value: 'null' to type: INT\n\tat org.apache.pinot.spi.data.FieldSpec$DataType.convertInternal(FieldSpec.java:565)\n\tat org.apache.pinot.core.query.pruner.ValueBasedSegmentPruner.convertValue(ValueBasedSegmentPruner.java:155)\n\t... 22 more"
  }
]

Please also add some description to the PR and some comment in the code explaining why we don't allow NULL in IN/NOT IN

Can you also check if we have proper behavior on = NULL, != NULL, > NULL etc? Probably we should avoid explicit NULL in all the predicate?

Good point. Changed the PR to avoid explicit NULL in all the predicates.

Please also add some description to the PR and some comment in the code explaining why we don't allow NULL in IN/NOT IN

Added a function comment.


Private functions not authenticating

Hi Nick,
I'm having trouble getting the private functions to authenticate. I'm using your examples.js file and have added my public and private API keys from BTC Markets to these lines:
var key = process.argv[2] || 'your-api-key';
var secret = process.argv[3] || 'your-api-secret';
I've been trying the getAccountBalances function but it's only returning this data:
{"success":false,"errorCode":1,"errorMessage":"Authentication failed."}
I've checked the header information and the api key, timestamp and signature is there so maybe this is a problem on BTC Markets end?
Regards,

I just testing using my prod keys and it worked for me. Probably best to email<EMAIL_ADDRESS>to see if they can see what the problem is at their end.
Nick

Ok thanks Nick.

Hi,
I'm having the same issues. It seems intermittent. Sometimes it works sometimes it doesn't and my code hasn't changed at all. Support is hopeless, they don't respond (not what you want from an exchange). Any ideas?
{ [Authentication failed.: BTCMarkets.executeRequest() failed POST request to url https://api.btcmarkets.net/order/create with message /order/create
1470306288671
{"currency":"BTC","instrument":"ETC","price":524900,"volume":101700.00000000001,"orderSide":"Bid","ordertype":"Limit","clientRequestId":null}. Error message: Authentication failed.]
jse_shortmsg: 'BTCMarkets.executeRequest() failed POST request to url https://api.btcmarkets.net/order/create with message /order/create\n1470306288671\n{"currency":"BTC","instrument":"ETC","price":524900,"volume":101700.00000000001,"orderSide":"Bid","ordertype":"Limit","clientRequestId":null}. Error message: Authentication failed.',
jse_summary: 'BTCMarkets.executeRequest() failed POST request to url https://api.btcmarkets.net/order/create with message /order/create\n1470306288671\n{"currency":"BTC","instrument":"ETC","price":524900,"volume":101700.00000000001,"orderSide":"Bid","ordertype":"Limit","clientRequestId":null}. Error message: Authentication failed.',
message: 'BTCMarkets.executeRequest() failed POST request to url https://api.btcmarkets.net/order/create with message /order/create\n1470306288671\n{"currency":"BTC","instrument":"ETC","price":524900,"volume":101700.00000000001,"orderSide":"Bid","ordertype":"Limit","clientRequestId":null}. Error message: Authentication failed.',
name: 'Authentication failed.' }

Hi GenXau, I eventually got it working but unfortunately I can't remember how. It was something wrong with my code, not Nick's or BTC markets.

Thanks for the reply, i'll keep hacking away. Authentication must be working as i can get my balances. Placing orders just plays up. Code was taken directly from examples.
Cheers,


Add Topological Sort code in C++

Description of Change

Checklist

[ ] Added description of change
[ ] Added file name matches File name guidelines
[ ] Added tests and example, test must pass
[ ] Added documentation so that the program is self-explanatory and educational - Doxygen guidelines
[ ] Relevant documentation/comments is changed or added
[ ] PR title follows semantic commit guidelines
[ ] Search previous suggestions before making a new one, as yours may be a duplicate.
[ ] I acknowledge that all my contributions will be made under the project's license.

Notes:

This repo already has two implementation of Topological Sort.
Refer
Refer
Thank you.

If your implementation is an algorithm different than the two implementations in the repo as pointed out above, feel free to update your code to the repo standards by following the checklist provided for your convenience.


[Feature] Add custom actions executed on triggers

We're using submodules in our git repo. After switching a branch we've to run git submodule update to point to the correct submodule branch/commit. Currently it must be done using bash.
It would be great if a git submodule update could run automatically after a branch checkout.
A configuration for this would be nice, where you could link different triggers and git commands.
Triggers might be:

after branch switch
after branch create
before branch delete

Another use case after switching a branch might be running git clean -ffdx because C# projects contains unversioned directories like obj and bin that should be removed to prevent using wrong references/binaries.

I'll add the auto-update submodule feature after checking out another branch
Currently, this project provides a button (next to the SUBMODULES group name) to update submodule
Untracked files will not be deleted unless you discard those files manually. And you can do it from the context menu of current branch or from the context menu of selected local changes.

I tested your changes and it works like a charm - this makes branch switching a bit safer. Many thanks.
However, deleting the files does not work using the context menu. The context menu only says Discard all changes, which does not include files from .gitignore.
There is also a .gitignore file in your repository which excludes bin and obj. The obj folder contains information about which NuGet packages are used, including the version number. If you change to a version branch, these can differ from main, which can lead to problems. The context menu entry is disabled if there are no changes detected, even if there are ignored files.
Discard all changes is not the same as git clean -ffdx.

I know that. But I think that this operation should be left to the user to decide on their own. For example, node_modules that is usually included in .gitignore. Another example is some user-defined local script files and so on. These should not be automatically deleted.

I'm with you that this should not be called automatically and the user should to that with full awareness.
But it would be nice to configure some custom actions that could be called from context menu on the branch name. That's only an idea. We do that clean operation quite often due to branch switching and it would be nice if this could be done out of the SourceGit-UI directly.

Done. A checkbox has been added to include all ignored files when discard all changes in repo.

Cool - many thanks.


Deprecate compute keyword for set_index

This is only relevant if you have a disk based shuffle and I don't really know what the advantage of the keyword would be.
It seems like something that we should clean up

Yeah, that code path does seem like an old optimization to me. When I first saw this issue, I thought the compute arg may have something to do with the new divisions calculation. However, as far as I can tell, this block is indeed persisting the shuffled collection to disk.
Personal Thoughts
I can actually imagine many cases where a disk-based persist mechanism like this can be useful. However, (1) I don't think many people are using "disk" for the cases that would benefit, and (2) I don't think this kind of mechanism makes much sense within the shuffle API like this. Instead, this kind of mechanism should be exposed to the user in such a way that it is clear that the query is being segmented. For example, the user should need to call something like df.persist(storage=..., shuffle_method=...).

Yeah that might make more sense, the current keyword is just weird


Update to Teaclave SGX SDK 1.1.2

Description

update to Teaclave SGX SDK 1.1.2
update third-party crates
update dockerfile
fix building issues

CI: https://ci.mesalock-linux.org/mssun/incubator-mesatee/714

cool ...


Doesn't the algorithm perturb the  Y_tags？

y_train and y_val are perturbed, but not y_test as we want to test whether the model can predict the true labels despite being trained on noisy labels.

Thank you for your prompt reply.


Required permissions

The README states that ESM Credentials and proper permissions are required, without stating what those proper permissions are. Looking at the code, there's the line The "Administrator Rights" box must be checked for the user.
Requiring full administrator access seems like overkill, is it really necessary?

I have updated the readme. There button at the bottom of System Properties labeled "View Reports" where the data source last times are scraped from. Any account that can see this button is able to run this script. If you're able to find a set of permissions that allow this button to appear with less that admin privileges please let me know. Thanks.

Ah okay, thanks. I'll play around a little and update if I find anything.


In Apache error log: Unknown portal environment "prod" in /var/www/html/sulu-standard-develop/vendor/sulu/sulu/src/Sulu/Component/Webspace/Manager/WebspaceCollection.php:97

I download zip of https://github.com/sulu/sulu-standard
and composer install, I open homepage in browser and i see these errors in apache error log.
PHP Fatal error:  Uncaught InvalidArgumentException: Unknown portal environment "prod" in /var/www/html/sulu-standard-develop/vendor/sulu/sulu/src/Sulu/Component/Webspace/Manager/WebspaceCollection.php:97\nStack trace:\n#0 /var/www/html/sulu-standard-develop/vendor/sulu/sulu/src/Sulu/Component/Webspace/Manager/WebspaceManager.php(104): Sulu\Component\Webspace\Manager\WebspaceCollection->getPortalInformations('prod')\n#1 /var/www/html/sulu-standard-develop/vendor/sulu/sulu/src/Sulu/Bundle/CustomUrlBundle/Request/CustomUrlRequestProcessor.php(71): Sulu\Component\Webspace\Manager\WebspaceManager->findPortalInformationsByUrl('localhost/sulu-...', 'prod')\n#2 /var/www/html/sulu-standard-develop/vendor/sulu/sulu/src/Sulu/Component/Webspace/Analyzer/RequestAnalyzer.php(51): Sulu\Bundle\CustomUrlBundle\Request\CustomUrlRequestProcessor->process(Object(Symfony\Component\HttpFoundation\Request), Object(Sulu\Component\Webspace\Analyzer\Attributes\RequestAttributes))\n#3 /var/www/html/sulu-standard-develop/vendor/sulu/sulu/src/Sulu/Bundle/Webs in /var/www/html/sulu-standard-develop/vendor/sulu/sulu/src/Sulu/Component/Webspace/Manager/WebspaceCollection.php on line 97

@apoorva-shah you did forgot to configure your webspace (app/Resources/webspace/...xml). I would recommend you to use sulu minimal as a start. Just follow the documentation to use it: http://docs.sulu.io/en/latest/book/getting-started.html

Yes issue was my webspoace xml file was sulu.io.xml.dist but it should be sulu.io.xml... So rename and try. issue was solved...


fix deferred

Can you add the test from #1417

Codecov Report
Attention: Patch coverage is 52.94118% with 8 lines in your changes are missing coverage. Please review.

Project coverage is 70.68%. Comparing base (1aa6087) to head (363ea7c).
Report is 2 commits behind head on main.

Files
Patch %
Lines

src/Enzyme.jl
52.94%
8 Missing :warning:

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff             @@
##             main    #1426       +/-   ##
===========================================
- Coverage   94.07%   70.68%   -23.39%
===========================================
  Files           8       29       +21
  Lines         388    10528    +10140
===========================================
+ Hits          365     7442     +7077
- Misses         23     3086     +3063

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


Send-service.py script not sending notifications for services containing a blank space in the name

I'm not sure if you're still maintaining this project, but I've run into an issue with the send-service.py script.
I'm really happy I've found your code for Discord notifications, but the send-service.py doesn't seem to work for me when the service name contains a blank space, as already mentioned in the title. Looking at the Nagios logging, the send-service.py runs fine and doesn't return any errors - the logging simply tells me that a service notification has been send out. However, no message is seen in Discord.
When do I see a message in Discord?
I can see a message in Discord coming from Nagios when the service doesn't contain a blank space in it's name and the name is just a single word - for example "Sonarr"
When do I not see a message in Discord?
I cannot see a message in Discord coming from Nagios when the service does contain a blank space in it's name and the name exists of multiple words - for example "Ansible AWX"
The type of service check doesn't seem to have an impact as this behaviour is seen on services with the same check. Can you confirm that this is related (or not) to the send-service.py script?

Hi @MartijnLangohr I don't use Nagios anymore after finding CheckMk (https://checkmk.com) a much better fit. However, I'm always open to checking issues. I'll see what I can figure out!

@MartijnLangohr I pushed a general cleanup update just now but I have a suspicion that the issue lies in how Nagios calls the script itself:
command_line /usr/lib/nagios/plugins/send-service.py "$NOTIFICATIONTYPE$" "$SERVICEDESC$" "$HOSTNAME$" "$HOSTADDRESS$" "$SERVICESTATE$" "$TIMET$" "$SERVICEOUTPUT$"

In the script, I lazily matched item for item based on those spaces:
data = {KEYS[i]: nag_in[i] for i in range(len(KEYS))}

Having spaces in the service name would likely mess this pairing up and the script would just exit. I don't handle errors at all or report anything so that may be why you don't see anything.
Short of a complete rebuild (which is hard to do since I don't run Nagios anymore), the best corrective action would be to rename your services to not include spaces. Perhaps "Ansible-AWX" or similar.
In the meantime, check out CheckMk. I don't work for them or anything and I like it enough to strongly recommend to anyone who'll listen.

Hi @Operator873, thanks for replying and looking into it! I've checked out CheckMk and it seems like a nice solution to use for monitoring, I might migrate from Nagios to CheckMk in the near future. As you already recommended, I think renaming my services to not include a blank space is probably best for now.
Thanks again for responding and for the effort to create this notification plugin :)


Update name and email

Would be nice to have a package with a simple function that takes a date and return which versions we should support.
Typo? :
The policy could be **to** support the version of python that ships by
default in the latest Ubuntu LTS or CentOS/RHEL release

Misc notes:
Dropping support != being actively incompatible. I suggest some phrasing of what active support
mean.

Be in the test-matrix,
Do our best to accept bug fixes that cover those versions.
Or to refuse bugfixes for versions not in this window.
Ok to actively remove conditional version code.

I'm guessing this proposal is a maximum or minimum requirement or both ? Do you allow project to support more version? Less versions ?


Overhaul of reservation/allocation logic of scheduler

This is PR for #74
Please note that this is still a working-in-progress patch, but the majority of the structure should be completed. What have done so far:

Large restructure of scheduler logic, optimization of lock, etc.
Reservation logic for large container with unit test.
Unreserve logic when request doesn't need or cannot be allocated.

Expected regression from master:

Multiple allocation per batch now disabled (which is not compatible with reservation logic). Instead, I would prefer to fix the lazy-sorting logic.

Plan to finish with the same PR:

More tests to make sure allocation works.
Lazy preemption logic with reservation.
Move reservation to a better node logic.

Plan to finish with a different PR:

Sorting-related improvement.

Hi @wangdatan
Thanks for working on this, I have done a quick look at the core logic changes, and come up with a couple of high-level questions
About reservation logic
Currently, we are memorizing the best-node for the reservation. When the cluster is heavily utilized, this will cause efficiency problems, because it needs to iterate every node and calculate the corresponding score for each allocation. Also, I did not see the reserved resource is being counted during calculating the score for reservation, which can be an important factor.
Seems like we allow to reserve multiple requests per node. Do we need a stop sign for reservations? That tells the scheduler when to stop reserving resources on a node.
When we sort nodes by available resources, reserved resources are not counted. This means when we reserve some more resources on a node, the sorting algo is unaware of this and it will still put the node in the front of the list.
Internal structure
This approach, the reservation/unreservation logic is internally managed inside of scheduling context, we are maintaining reserved requests in schedulingNode, schedulingApp, etc. This will create some limitations to support further advanced stuff. Such as the auto-scaling we were discussing. If we can pass the reservation state to k8s-shim, we can do lazy-pod-binding (reserve a pod on an un-exist node and wait for auto-scaler to provision the node). Do you think it is possible that we can follow the logic of generating allocation-proposal and commit to the cache? Just add another kind of allocation-proposal RESERVE.
About request priority
I noticed this patch adds some logic to handle request priority, I feel this creates complexity. Not saying the code but to the users. How can we expect users to set reasonable priorities for their requests before understanding how this works.
About recovery
I feel we could not do anything in recovery for reserved requests. During restart, all these states will be lost. But as long as we can recover pending requests, that should be fine, we can just do reservations again once the scheduler is recovered. This is something we need to test out and make sure nothing breaks.

Thanks @yangwwei,

Currently, we are memorizing the best-node for the reservation. When the cluster is heavily utilized, this will cause efficiency problems, because it needs to iterate every node and calculate the corresponding score for each allocation.

It is actually done within the allocation call, since we already doing iterate the nodes and try to allocate on all of them, the additional logic of reservation-score should be relatively cheap to do. (Now the bottleneck is sorting nodes).

Also, I did not see the reserved resource is being counted during calculating the score for reservation, which can be an important factor.
And,
Seems like we allow to reserve multiple requests per node. Do we need a stop sign for reservations?

For current reservation (reservation during allocation) logic, we only allow one node reserved by at most one request. Multiple request reservation per node may happen only on preemption, rebalance of resources in the cluster, or autoscaling (scale-up). So we will take care of multiple resource request reservation on one node later. Currently I just added the logic to make sure multiple resource request can be easier added later.

When we sort nodes by available resources, reserved resources are not counted.

This is a good point, will update it to make sure reserved nodes came last.

When do unreservation at the beginning of each scheduling iteration, I think we can handle multiple allocations at a time, can we?

Did you mean handle multiple unreservation at a time? Yes we did. For multiple reservation or allocation, currently it is not yet supported. As we chatted before, we can wait for the out-of-band node sorting patch done to bring the performance back to ideal.

Do you think it is possible that we can follow the logic of generating allocation-proposal and commit to the cache?
This is a good point, and I'm still exploring it. So far, my proposal is to strictly keep reservation logic and state inside scheduler, it should not visible by an outsider of component like cache/k8s. Once we export reservation logic to the outsider, I'm a bit worried we have to sync reservation logics like regular allocation, which prevent we do fast swapping reservation, drop reservation, etc. (we have to wait for an outsider component to confirm reservation-related changes, etc.).
For autoscaling, I think we should be well-handled it. My current rough thought is to have a separate goroutine (like the preemption one), to add inferno node to the cluster, and do reservation based on that. There might be some issues we will encounter, but I didn't see any unsolvable issues so far.

I noticed this patch adds some logic to handle request priority, I feel this creates complexity. Not saying the code but to the users.
I'm not sure if I understand your concern or not. It should be the same AskProto.Priority, which is same as k8s's pod priority. Application should have relative importance of its requests, user doesn't require understand but application framework need (like Spark/Flink or existing K8s deployment).

For recovery:

I feel we could not do anything in recovery for reserved requests. During restart, all these states will be lost.
Yes, this is by-design and scheduler can do reservation based on scheduler state. It is possible the new reservation result is different from the previous one, but since we strictly keep it internal to scheduler, I think it is fine. Sure we need to do more tests for that.

Once we export reservation logic to the outsider, I'm a bit worried we have to sync reservation logic like regular allocation, which prevents we do fast swapping reservation, drop reservation, etc. (we have to wait for an outsider component to confirm reservation-related changes, etc.).

There are pros and cons. The pros are

more consistent handling style
increase the usability and debuggability, users will be easier to see what's going on under the hood. E.g my pod is still pending, but it has reserved some resources on some node.

There is another issue about unreservation, it looks like we only look at the nodes that have been reserved for tryAllocateFromReservationRequest. This could be a problem. If we reserve a request on a node where runs some long-running pods occupying the resources, then it is likely the request will keep waiting forever. Can we try the reserved node first, if not fit, then try all rest available nodes?

allocator.go

line 272 - 274: redundant check

few naming confusions

partitionCtx.HandleReservationProposal
partitionCtx.HandleAllocationProposal
I would not call them proposals, in the earlier context, AllocationProposal is defined so the scheduler can submit proposals and cache layer decides to accept or reject them. Here, it is more like the internal handlings inside of the scheduler. I suggest to rename them to  something like: HandleReservedRequest/HandleUnreservedRequest/HandleAllocatedRequest.

It's a bit confusing when reading the code related to resources.
Can we organize the code like:
for schediling_application, scheduling_node, hiding the methods such as DecAllocatingResource, incAllocatingResource, decreaseAllocatingResource, make them all internal use within the struct. And expose some functions such as addAllocation, addReservation, releaseAllocation, releaseReservation for both app and node. So we can create some common methods in partitionContext, that can be reused in allocator#handleSchedulingAllocation and scheduler#confirmOrRejectSingleAllocationProposal.

scheduling_application.go

line 258: I think it is possible when a request is reserved, but then got removed from SchedulingApplication#Requests. Then this line may cause nil pointer:

numToDrop := m.allocKeyToNumReservedRequests[allocKey] - int(m.Requests.requests[allocKey].PendingRepeatAsk)

can we add an extra check for the existence of allocKey in the map?

In allocateForOneRequest, my understanding is you want to calculate a score for each node when a request cannot fit. And then among these unfit nodes, find the best one to reserve. However, bestScore never updates which can cause updating the nodes all the time.

line 127: replace to zap.Error

line 183: unhandled error

IncreaseAllocatingAndParentQueuesTestOnly: this is marked for testing only, but I am curious why not just call m.queue.IncAllocatingResourceFromTheQueueAndParents? This is confusing.

scheduling_partition.go

line 317, 352 : this logging may cause nil pointer. We can leverage zap.Error to print the info, also shouldn't this be ERROR level?

    log.Logger().Info("Failed to handle reservation cancellation",
                zap.Error(err))

scheduling_node.go

fitInGapScore:
Currently, the score only is calculated based on resourceInShort/totalAsk, but I think it makes more sense to use formula resourceInShort/nodeTotalResource. Because when a node has more total resources available, it usually means the node has more chance to release more resources than smaller nodes.

For example, let's say we have an ask {memory: 50}, node A has available {availableMemory: 10, totalMemory: 100}; node B has {availableMemory: 10, totalMemory: 200}. Using current scorer,  both nodes get score=1; but use proposed formula, scoreA=0.4, scoreB=0.2. which means B is a better fit.

CheckAllocateConditions
When check conditions, it calls checkPredicateForRequest, this will call some essential checks for the pod, such as PodFitsResources(pod, meta, nodeInfo). This will fail when a node has no available resource for the pod. This is a conflict with reservation. Should we skip this? (The cost is the reservation might be invalidated during allocationOnReservation... not sure if there is a better way to handle this).

requests.go

line 44, 52, missing space between m and *AppSchedulingRequest

for sortedRequestsByPriority []*SchedulingAllocationAsk, this seems to be better replaced by a priority queue, e.g use container/heap.

scheduling_allocation.go
line 30: rename Unreserve to Unreservation or rename other 3 consts for consistency.
Other
I found some issues while reviewing the patch.
RemoveApplications in UpdateRequest is not handled properly. We need to create a TODO item for this, including handle the removal of reserved requests for a removed application. This handles the scenario, e.g kubectl delete -f xxx.yaml. This is essential when we start to support some K8s operators.
Nits
scheduling_node.go
171: redundant type float
228: Only allow -> only allow to
scheduling_application.go
line  363: incomplete comment
visibility issues

scheduling_application.go
TryAllocateFromReservationRequests -> tryAllocateFromReservationRequests

scheduling_partition.go
AddNewReservation -> addNewReservation
GetReservationAppListClone -> getReservationAppListClone
HandleUnreservedRequest -> handleUnreservedRequest
HandlePendingResourceDecreaseForQueues -> handlePendingResourceDecreaseForQueues

scheduling_queue.go
IncPendingResource -> incPendingResource
DecPendingResourceFromTheQueueAndParents -> decPendingResourceFromTheQueueAndParents
AddSchedulingApplication -> addSchedulingApplication
RemoveSchedulingApplication -> removeSchedulingApplication

scheduling_node_test.go
There are some incorrect comments

function receivers should be consistent, we need to correct SchedulingApplication, SchedulingNode, SchedulingQueue,

@yangwwei
Thanks for commenting:

There're a few suggestions to use ERROR instead of DEBUG or INFO, I didn't change that because they're not error (they could cause by change of scheduling state in multi-thread env).
I think I have resolved all other lints as much as I could.

It's a bit confusing when reading the code related to resources. Can we organize the code like: ..

This part seems like a lot of work, can we do it separately?

CheckAllocateConditions
When check conditions, it calls checkPredicateForRequest

This sounds like a big issue, should we skip PodFitsResources for all scenarios? Since we have checked inside YuniKorn already.

RemoveApplications in UpdateRequest is not handled properly. We need to create a TODO item for this, including handle the removal of reserved requests for a removed application.

I think this is handled. See TestReservationRemoveAppThenRemoveNode

@wilfred-s  thanks for adding your comments, mostly make sense to me. A few thoughts:
For following two I will check it in later patches:

please check grammar in comments (sentences sometimes do not make sense)
commented out variables or code should be removed instead
files are missing a newline at the end (shown by a little red sign in the GitHubUI) please add them

For comments regarding to unsafe pointer, now I changed to atomic.value, please let me know what you think.

The shim (RM) has signalled that the node should be removed. Why would we need to then inform the RM which allocations need to be removed?

To me this is important since there're running containers on this node. This will make allocation removal to be consistent no matter if it is released by application or removed when node removed. YARN did the same too (when NM removed, app get noficiation of both node removal and container completed events).

Using an atomic means that the status can be changed while we schedule as it is no longer in a lock. Atomicity does not guarantee, is any ordering of observability of values, it just guarantees correctness of the memory value.

Updated to mutex.

Adding a whole package for one call to IntMin is a bit much, cleaner solution would be to add the min function locally to the code that needs it.

Removed math.go

ReservedSchedulingRequest Related questions

I think I have updated, please check.

Why do we store the whole SchedulingNode here?

We still need to use the node reference, otherwise, get a node reference inside an application will be hard (requires lock app and then lock partition). Please let me know what you think.

Can we split this in 3 methods:
I end up with split this to 2 :)

There is no change on the event generation side so this change does not make sense, the event can still only contain 1 accepted allocation.

Yeah, i knew but i tend to make it to be more generic so once we add multiple allocations we don't have to change the code. I can change it back also since I don't have strong opinion for that.

Please find the latest PR and branch.

Move consolidated PR to #89


Can't restore extensions

OS/Platform
Windows
Installed
https://ungoogled-software.github.io/ungoogled-chromium-binaries/
Version
126.0.6478.126-1
Have you tested that this is not an upstream issue or an issue with your configuration?

[ ] I have tried reproducing this issue in Chrome and it could not be reproduced there
[ ] I have tried reproducing this issue in vanilla Chromium and it could not be reproduced there
[ ] I have tried reproducing this issue in ungoogled-chromium with a new and empty profile using --user-data-dir command line argument and it could not be reproduced there

Description
Bookmarks, History and Settings are restored but extensions are not
How to Reproduce?

Copy User Data from previous installation
Paste it in the User Data directory of the new installation

Actual behaviour
Bookmarks, History and Settings are restored but extensions are not.
Expected behaviour
Extensions are supposed to be restored like in the previous installation.
Relevant log output
No response
Additional context
No response

You need to run the browser with --disable-encryption --disable-machine-id. As far as I am aware, you need to do this starting from the very first run in order to prevent the data from being encrypted and tied to the specific machine.

Managed to get the extension working with all the configured settings and data intact by manual loading the unpacked extension in the Default/Extensions directory.


Confusing error when checking trait impl against trait

When I try to check the following trait implementation (here):
    #[flux_rs::sig(
        fn(self: &strg Self, _) -> Option<_> ensures self: Self
    )]
    fn remove_first_matching<F>(&mut self, f: F) -> Option<T>
    where
        F: Fn(&T) -> bool,
    {...}

against the trait spec (here):
    #[flux_rs::sig(
        fn(self: &strg Self, _) -> Option<_> ensures self: Self
    )]
    fn remove_first_matching<F>(&mut self, f: F) -> Option<T>
    where
        F: Fn(&T) -> bool;

it fails with the error:
error[E0999]: internal flux error: crates/flux-infer/src/infer.rs:533:22
   --> kernel/src/collections/ring_buffer.rs:181:5
    |
181 | /     fn remove_first_matching<F>(&mut self, f: F) -> Option<T>
182 | |     where
183 | |         F: Fn(&T) -> bool,
    | |__________________________^
    |
    = note: incompatible types: `&'_ strg <self: RingBuffer<'_, λb0. T[b0]>[RingBuffer { a0, a1, a2 }]>` - `&'_ strg <?0e#8242: ∃b0. RingBuffer<'_, λb1. T[b1]>[b0]>`

I'm a little confused because the spec is token-for-token identical in both the trait and implementation, and only asserts that we need a &strg Self.
I also get a similar error when there is no spec on the trait at all. I don't fully understand the implementation for trait_impl checking, so I'm not sure if this is expected or not.
Any guidance?

The check is not implemented at all when strong references are involved so it just crashes.
Do you need the &strg? isn't the mut ref unfolding we implemented enough for this use case? I would like to know why not.
In any case, @ranjitjhala maybe you can take care of finishing the work on trait impl checking to consider strong references.

As requested, another implementation
    #[flux_rs::sig(
        fn(self: &strg RingBuffer<T>[@old]) ensures self: RingBuffer<T>[old.ring_len, 0, 0]
    )]
    fn empty(&mut self) {
        self.head = 0;
        self.tail = 0;
    }

and trait method
    /// Remove all elements from the ring buffer.
    fn empty(&mut self);

where the implementation has a non-trivial ensures clause.

@ranjitjhala your PR doesn't consider this case. We need the unfold_local_ptrs hack to handle this. I think it shouldn't be too hard to reuse it, right?
Also, I always thought that if you have an &mut in the trait definition you would never be able to make it an &strg in the impl, but now that we've implemented the check I see that in certain situations you can. In particular, if the trait definition is completely unrefined you can turn an &mut into an &strg as long as you don't put extra constraints in the input at the implementation. I'm quite happy about that.

I updated the PR to handle the above (I think!) can you lmk if it works now @enjhnsn2 (and of course reopen if not!)


support index of dataframe

What do these changes do?
support the index of dataframe structrue.
Fixes #109

Codecov Report

Merging #110 (f8606b3) into main (5cde55e) will increase coverage by 14.63%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main     #110       +/-   ##
===========================================
+ Coverage   62.09%   76.73%   +14.63%
===========================================
  Files          52       52
  Lines        3817     3786       -31
===========================================
+ Hits         2370     2905      +535
+ Misses       1447      881      -566

Impacted Files
Coverage Δ

src/server/services/etcd_meta_service.cc
81.48% <0.00%> (+5.55%)
:arrow_up:

src/common/util/status.h
48.86% <0.00%> (+5.68%)
:arrow_up:

src/common/util/status.cc
25.39% <0.00%> (+6.34%)
:arrow_up:

src/server/services/etcd_meta_service.h
92.00% <0.00%> (+12.00%)
:arrow_up:

src/common/util/protocols.cc
91.71% <0.00%> (+15.79%)
:arrow_up:

src/server/memory/stream_store.cc
64.48% <0.00%> (+16.33%)
:arrow_up:

src/server/util/meta_tree.cc
76.19% <0.00%> (+18.41%)
:arrow_up:

src/server/async/socket_server.cc
84.64% <0.00%> (+18.89%)
:arrow_up:

src/server/services/meta_service.h
75.81% <0.00%> (+28.59%)
:arrow_up:

src/server/server/vineyard_server.cc
74.12% <0.00%> (+32.54%)
:arrow_up:

... and 3 more

Could you please fixes the CI? And, we also require to make the index column accessible in C++ API. I think it should be another Tensor column in DataFrame.
Any comment ? @andydiwenzhu

Could you please fixes the CI? And, we also require to make the index column accessible in C++ API. I think it should be another Tensor column in DataFrame.
Any comment (about the index column in our DataFrame) ? @andydiwenzhu

@sighingnow @andydiwenzhu  the ci is passed.  any comment about the index of c++ api?

Could you please fixes the CI? And, we also require to make the index column accessible in C++ API. I think it should be another Tensor column in DataFrame.
Any comment (about the index column in our DataFrame) ? @andydiwenzhu

@sighingnow @andydiwenzhu  the ci is passed.  any comment about the index of c++ api?


Handle URL aliases and redirects

Script to be developed to migrate URL aliases/redirects
find a wordpress plugin to handle old redirects (YOAST SEO might handle this)

This feature would be part of Yoast SEO Premium https://yoast.com/which-redirect/
a bunch of other options https://blog.hubspot.com/website/10-best-redirect-wordpress-plugins

I have chosen the plugin "redirection".


Issue with duration of 1.month

Hello John,
Setting up a schedule with a fixed duration, everything works fine.
But now, i've a schedule with a duration of 1.month, recurring
schedule.end_time = schedule_start + 1.month
or schedule.duration = 1.month
it's dependent on the starting month for how many day's this event lasts.
For example a monthly recurring event, starting in january (31 day's) gives a good response
starting on february 2015 (28 days), doesn't occur on 30th. march 2016

Two things are at the core of this issue:

Rails ActiveSupport defines 1.month == 30.days, except when you add it to a time
IceCube schedules can have only one duration for all occurrences

If you try time + 1.month, you will see how ActiveSupport does arithmetic: it does some special handling to add the correct number of days based on the current month (30, 31, 28, or 29 days).
However, this is not reliable for exporting to iCal or serializing to hash / YAML format, so we use the strict single duration for the whole schedule.
If your occurrences always run for 1 month, you can work around this by not relying on the duration at all, and just compare the year and month yourself to see if it's "occurring" in the time window.
I'm sorry I can't see a good way to fix this right now, but different durations for occurrences do come up frequently, so we might look into that in the future. It looks like multiple values should be supported as shown in the spec, but it also says it doesn't support "M" for month durations either...


Fix #514

What's changed?

Each tool gets destroyed on close.
Each tool gets raised if there is an existing window.
All tools' windows gets activated.

Ok, I think I have a simple fix for this

I do like that fix. :)

Sorry, totally missed your comments.
I somehow expected that wouldn't fix it. But if it fixes all use cased by moving one line of code let's set up a PR and give it a couple of days of testing. Should we close this PR and set a new clean one? Or somehoq squash the commits to solely that change?
Or were there other changes that are required?

Seems appropriate. Does exec() not cause issues when e.g. Maya already has a QApplication?

Does exec() not cause issues when e.g. Maya already has a QApplication?

It only return -1 and nothing else happens.


Decode the final output.json from the LocalTestingTool

Hi,
I have managed to get the full flow running to aggregate debug reports in the browser and process them locally with the provided tool.
The final file output I have is:
[{"bucket": "d0ZHnRzgTJMAAAAAAAAAAA==", "metric": 195000}]

Which looks correct in terms of there should be a single key and the metric value is correct.
The issue I have is now decoding this bucket to get my original input data, I assumed the steps would be:

base64 decode
CBOR decode

But this causes the following error:
_cbor2.CBORDecodeEOF: premature end of stream (expected to read 23 bytes, got 15 instead)

Would really appreciate any help on how to get the input data back out of this bucket.
Best,
D

Hi Dennis,
Please do a base64 decode on the bucket and you should be able to get your key.
Thanks!


File exclusions are ignored

In an effort to reduced the scan time (currently at ~5min), we added file exclusions to detect_secrets_flags as illustrated below.

Unfortunately, it appears that the exclusions flags are being ignored.
With exclusions, it should be running around these ranges.

real	0m13.963s
user	0m26.986s
sys	0m7.150s

Try to remove quotes from arguments. This is similar to the problem in detect-secrets.
Additionally, I suggest ignoring the .git folder.

Thanks, that did the trick.
--all-files --force-use-all-plugins --exclude-files src\/vendor --exclude-files src\/nov


Bug encrypting json data

there is a bug when decrypt previous encrypted data in json format (stringified)
It seems that some invisible character is added at the end...
here a plunker (watch console log)
http://plnkr.co/edit/znEnkiURIjmv3DLeOgVP?p=preview

You are right, there are zeroes added to the end of string.
Blowfish is a block cipher. It could encrypt or decrypt only blocks of information.
Block size is  8 bytes.
Acceptable length of input string for Blowfish in bytes: 8,16, 24, 32 and so long.
If your messeage size is not 8 byte it is automaticaly padded by adding zeroes to the end.
https://github.com/agorlov/javascript-blowfish/blob/master/Blowfish.js#L182
Example:
string "secret" is 6 bytes.
To encrypt this, it is padded by zeroes:
"secret\0\0" 8byte
I was doubt about shuld I trim zeroes when decrypt, or not.
So I added function trimZeros to Blowfish class.
I was doubt, becouse blowfish could encrytp not only string information, but also binary.
There is no doubt I need to say about this in README.
Working example:
http://plnkr.co/edit/I3y3AxgGJGFlJ89w060C?p=preview

Ok I understand. But instead of padding with zeroes, what you think about padding with the Method 2 suggested in this page? http://www.di-mgt.com.au/cryptopad.html

Good article, shows us different approaches of padding data for block ciphers.
I will be appreciated you for pull request.


Timesheet - 11/05/2021 - Justin Kim

Task 1

removed a team member from core team
started looking at a couple website-api issues

Proof of Work

https://github.com/thenewboston-developers/Website/issues/1787
https://github.com/thenewboston-developers/Website/commit/75841fe4d7fbbe125f6d850f2b4f7561adb0a483
https://github.com/thenewboston-developers/Website-API/issues/89
https://github.com/thenewboston-developers/Website-API/issues/90

Time Spent
.5 hours

Task 2

Weekly Sprint Planning meeting with Bucky, Kristy, and Muhammad

Proof of Work

https://docs.google.com/document/d/1ix2uUEhJiqTqoACw-nMMMi4kUP14AX-GFWZ66pXXRzw/edit#
https://docs.google.com/document/d/1DrNkHPm08cy_Thwx5Jrw1PHulN-AC_VYtQr-rLEeiaM/edit?usp=sharing
https://docs.google.com/document/d/1t9flQ27npUh24wKvXEVtI12_Wo9U5023NjnhSpVWmNw/edit
https://github.com/thenewboston-developers/Management/issues/169
https://docs.google.com/document/d/1_6OCmqL0OK5UiWJROe-EbRYAQa9s-iuIIQOdv_Vd5Bs/edit#

Time Spent
2 hours

Total Time Spent
2.5 hours
Account Number
67077b2397f99fb6c63185af25cdf49d43736b22b7ea5dd68089a04cd4dbf8cf

Approved


added browser support

colored version working

this is really great. would it also allow for server applications to show line numbers when debugging?

This is my ugly solution:
https://codesandbox.io/s/signale-browser-consolelog-adapter-tk9v0
need aliases in webpack resolve (or other build tool) for:
'path': path.resolve(__dirname, "../node_modules/path-browserify"),
'readline': path.resolve(__dirname, "../node_modules/readline-browserify"),
'fs': path.resolve(__dirname, "../node_modules/browserify-fs"),
May be i will make this ability like an option for Signale origin package


[Move] Add module for creating example NFT on CLI

Wallet CLI will be the primary interface for users to perform "writes" on Sui at the Devnet launch, therefore we want to provide an easy way for the users to create an NFT-like rich object with image and attributes.
This PR is the first step for https://github.com/MystenLabs/sui/issues/1400, which defines a Move module for a minimalist NFT. The next PR https://github.com/MystenLabs/sui/pull/1412 will implement the CLI interface that will invoke this Move module.
Considerations

ExampleNFT does not have any restrictions or supply cap because we want anybody to be able to easily create a rich object and view it on Sui Explorer through the wallet CLI
This PR defines a TokenMetadata module that can be reused by any Move module that wants to implement an NFT-like object.

@tnowacki , thanks for the discussion. I've removed the TokenMetadata module, let me know if you have any other concern.

Will handle https://github.com/MystenLabs/sui/issues/1527 in a separate PR


Add LavalinkServer Dockerfile

This is to be built assuming you have compiled the jars with gradle initally, as discussed with Napster this could be used for an official docker image in the future.
docker build -f LavalinkServer/docker/Dockerfile -t lavalink .

I believe it is bad practice to hardcode the config values into the image

I have put the defaults into the dockerfile, they are meant to be overidden using the -e flag on docker run e.g docker run -e LAVALINK_SERVER_PASSWORD="youshallpass" lavalink. My mistake for not mentioning that

Better practice would be to use volumes

The gola here was to use OS environment vars as the main source of the configuration.
Seeing that OS environment vars override any application.yaml, yeah, packaging the application.yml.example as application.yml and exposing it as a volume could be an option to bring both worlds together.

I disagree that volumes are a better practices. Docker containers should not have an open link to the host if its not needed. And considering Lavalink is pretty stateless in itself it would be a waste.


[Teams] Add support for meeting participants added/removed events

#minor
Description
This PR is based on # 5809. It adds support to TeamsActivityHandler for meeting participants added/removed events.
Specific Changes

Added support for 2 new activity types - application/vnd.microsoft.meetingParticipantsAdded and application/vnd.microsoft.meetingParticipantsRemoved.
Added functions to register handlers for when teams meeting participants are added/removed.
Added unit tests.

Testing
These images show the new unit tests passing.

/promoted 6677


Parser fuzz assertion failure: Confused by 0x1f, ascii code 31

This repro can't be written out because it involves the unprintable character 0x1f (or 31).
In fact, that's all it is! Just that one character is all that's required to trigger this.
I'm guessing this is an off-by-one error because charcode 32 is the first printable ascii character.
I did not put type-bug because I don't know if this is causing any bugs given that 0x31 is not a valid character in a dart program.
'package:front_end/src/fasta/scanner/abstract_scanner.dart': Failed assertion: line 1426 pos 14: 'comments == null || token.isSynthetic || token is ErrorToken': is not true.,
#0      _AssertionError._doThrowNew (dart:core-patch/errors_patch.dart:40:39)
#1      _AssertionError._throwNew (dart:core-patch/errors_patch.dart:36:5)
#2      AbstractScanner.appendToken (package:front_end/src/fasta/scanner/abstract_scanner.dart:1426:14)
#3      AbstractScanner.unexpected (package:front_end/src/fasta/scanner/abstract_scanner.dart:1764:7)
#4      AbstractScanner.bigSwitch (package:front_end/src/fasta/scanner/abstract_scanner.dart:829:12)
#5      AbstractScanner.bigHeaderSwitch (package:front_end/src/fasta/scanner/abstract_scanner.dart:645:14)
#6      AbstractScanner.tokenize (package:front_end/src/fasta/scanner/abstract_scanner.dart:622:18)
#7      _tokenizeAndRecover (package:front_end/src/fasta/scanner.dart:100:26)

@danrubel

Reopening, I think my original repro was incorrect. Going to confirm before I close.


helm template won't generate output if that yaml is ignored by .helmignore

I have a following case where I am trying to generate single yaml file from a template:
helm template ./../ -x ./templates/artifacts/configtx.yaml -f ./../values.yaml --output-dir ./../artifacts

I receive an error message:
Error: could not find template C:\Projects\deploy\helm\HlfOrg\templates\artifacts in chart

And my .helmignore is set so I don't include this yaml in deployment package:
# Project files
.ssh/
output/
scripts/
templates/artifacts/

However, when I remove templates/artifacts from .hemlignore where this yaml resides, everything works and I receive the output. I expected .helmignore will only ingore those files when packaging but not when I want to run template command.
Output of helm version:
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Output of kubectl version:
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:53:57Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-25T15:45:25Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"linux/amd64"}
Minikube: v1.0.0

@vlado-github The .helmignore is doing what it is intended to do. It tells Helm what files to ignore.
helm template should create the same output for the same input that Helm does with a helm install operation.
If you want differences you can set a value in the values.yaml file and check for that when rendering a template using an if statement.

I'm going to close this ticket due to inactivity, but please re-open if this still needs to be addressed. Thanks!


Make extendable?

Thank you for your hard work on this project. One of the strengths of a library like this is to integrate into other software. However, when class properties are given a visibility of private, that reduces the extendability, as those properties are not visible to the extending class.
Is there a reason that the properties were made private?
Could they be made protected instead to facilitate extending?
Could functionality be moved to a Trait, with the Classifier simply using that trait?
These are just some ideas. If you are open to pull requests, I'd be happy to submit some of them for consideration.

I'm glad the project has been useful for you. I'll gladly accept your Pull Request to change the properties to protected. I'm always open to new ideas and willing to consider any suggestions or requests.


[release/1.2 backport] Allow using v2 config in 1.2.x

Originally written with a separate change to make it backwards compatible, but now switched to use @crosbymichael changes in #3337, this PR would enable use of the v2 config in subsequent 1.2 versions, allowing for workarounds to #3210 and allowing folks to transition configs before upgrading to the eventual 1.3 release (though the latter is now less of an issue as that has been made a non-breaking change).

Codecov Report

Merging #3350 into release/1.2 will decrease coverage by 0.01%.
The diff coverage is 0%.

@@               Coverage Diff               @@
##           release/1.2    #3350      +/-   ##
===============================================
- Coverage        43.81%   43.79%   -0.02%
===============================================
  Files              101      101
  Lines            10780    10784       +4
===============================================
  Hits              4723     4723
- Misses            5321     5325       +4
  Partials           736      736

Flag
Coverage Δ

#linux
47.42% <0%> (-0.02%)
:arrow_down:

#windows
40.91% <0%> (-0.02%)
:arrow_down:

Impacted Files
Coverage Δ

services/server/server.go
1.64% <0%> (-0.03%)
:arrow_down:

Continue to review full report at Codecov.

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

Codecov Report

Merging #3350 into release/1.2 will decrease coverage by 0.01%.
The diff coverage is 0%.

@@               Coverage Diff               @@
##           release/1.2    #3350      +/-   ##
===============================================
- Coverage        43.81%   43.79%   -0.02%
===============================================
  Files              101      101
  Lines            10780    10784       +4
===============================================
  Hits              4723     4723
- Misses            5321     5325       +4
  Partials           736      736

Flag
Coverage Δ

#linux
47.42% <0%> (-0.02%)
:arrow_down:

#windows
40.91% <0%> (-0.02%)
:arrow_down:

Impacted Files
Coverage Δ

services/server/server.go
1.64% <0%> (-0.03%)
:arrow_down:

Continue to review full report at Codecov.

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

Just thinking if we want to backport this change or not.  What do you think @Random-Liu ?  Should it go in 1.2 or wait for 1.3?

Understood either way. It was mentioned in slack to put the PR out and let the discussion about whether or not to backport happen in the PR.

Same here, I just want to here from a couple maintainers if they think this should be backported to 1.2 or not.
cc @containerd/containerd-reviewers @containerd/containerd-maintainers

Don't have a problem with it .. so long as there is a release note sufficiently explaining the change.

The change is ok with me. But I think we should not backport it into release/1.2. This is new feature, not just bug fix. Since we will release v1.3 version, I prefer to keep it in master branch. :)

Good points @fuweid ,  I agree with what you said and think this shouldn't be backported as it is a feature and not a bugfix.

I think it comes down to how long before 1.3... some features like this one can be introduced as experimental/previews so long as they are not breaking changes. That or we could spin a 1.3.0 pre-alpha that is not fully featured as of yet.

I don't want to get into an experimental/preview mess like docker has where things that are experimental can not be removed because ppl are using it and depend on some experimental feature.

yeah that can happen on master as well :-)


BY_PRESENCE_OR_VISIBILITY mode should wait not only visibility of element from list

For now in BY_PRESENCE_OR_VISIBILITY and BY_PRESENCE modes if element is part of list we check only it's visibility, but we should also check presence of element.

verified on the client's side


New predicates for checking that a value has no decimal or no seconds

It should be possible to test the following possibilities:

integer: for a numeric, the value has no decimal
modulo: for a numeric, the modulo of the second-operand is equal to the reference
on-the-day: for a dateTime, the value is at midnight
on-the-hour: for a dateTime, the value has no minutes or seconds
on-the-minute: for a dateTime, the value has no seconds
true and false: for a boolean, that the value is respectively true or false

Beta available in https://ci.appveyor.com/project/Seddryck/nbi/build/1.16.0-beta.81.build.78


fix: Polyfill updated as a conditional dependency

out of curiosity. what bug were u fixing?

 Too many things at once.
Initially I just wanted to reduce the project references to a necessary level. Stumbled across the reported error and updated the readme.
It was more of a chores job


Problems when saving multiple annotations tables for the same element

I have observed problems when saving multiple annotation tables for the same shapes element using the annotation widget. Not sure if it's a macOS specific bug @melonora. Here is how to reproduce:

open napari-spatialdata and a layer from SpatialData object
create a new shapes layer
open the annotation widget
link the layer to the sdata
create some classes
create some annotations around the classes
save the annotation table

So far all works great.

add a new annotation class, create a new annotation
[x] save the annotation using the same element name but a new annotation table. This leads to a warning (something like Shapes_external and annotation_Shapes_external2 already exist. Do you want to overwrite them?). The message is incorrect. It should have an "or" instead of the "and".
[x] If we save (but also if we don't save I think), the combobox "Annotation table:" will add some duplicate entries.
[x] If I added extra shapes before saving the second time, then going through the entries of the "Annotation table:" combobox would lead to warnings like UserWarning: The provided face_color parameter has 4 entries, while the data contains 5 entries. Setting face_color to white.! and to the annotations being displayed as white for some of the entries instead of with the class colors.

Finally:

[ ] if I save the annotations under a new element and under a new table name, the original shapes layer gets renamed to the new name. Therefore, since we are not really saving a new element but updating the original one, I would consider the following:

when "Save selected annotation layer" is pressed, the user can only choose the name of the annotation table edit: we opted for letting the user choose both names
[ ] and the shapes layer is always overwritten in place.

will check

and the shapes layer is always overwritten in place.

can you confirm that now with #261 the shapes layer is overwritten in place? At least I see that the old layer disappears from the view and is replaced by the new layer (with eventually a new name). I guess therefore that also on disk the old layer (and old name) disappears. If so, we can tick this last checkbox.

see description of #261

TLDR yes it is. The old shape will still exist though when the user changed both the table name and the shapes name.


Cannot create build: TypeError: Ajv is not a constructor

Steps To Reproduce

Update to latest react-scripts (5.0.0)
Do npm run build.

The current behavior
home/node/frontend/node_modules/mini-css-extract-plugin/node_modules/schema-utils/dist/validate.js:66
const ajv = new Ajv({
            ^
TypeError: Ajv is not a constructor
    at Object.<anonymous> (/home/node/frontend/node_modules/mini-css-extract-plugin/node_modules/schema-utils/dist/validate.js:66:13)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:11[55](https://firelight.smokescreen.io/v4/frontend/-/jobs/95213#L55):10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/node/frontend/node_modules/mini-css-extract-plugin/node_modules/schema-utils/dist/index.js:6:5)
    at Module._compile (node:internal/modules/cjs/loader:1103:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)

Same here...

Same problem.

Same issue here. Sometimes it works and sometimes it doesn't.
Also happens on npm run start for me

Same

Same here, any update for this issue?

I got this fixed after uninstalling npm-force-resolutions and removing all preinstall related to that. And then

rm -rf node_modules
rm package-lock.json
npm install

I am having a similar problem. I believe that this error occurs when particular code in node_modules is imported in your create-react-app project. I did some debugging and found that in some cases, if the library code contains require(<<SOME MODULE NAME>>), this require call incorrectly returns a String object. In my case it returns an object that looks like:

It seems that create-react-app 5's webpack configuration is not correctly set up to handle node_module code that contains require(<<SOME MODULE NAME>>) for some modules. I am not yet sure why.

I have tried the fix https://github.com/vezwork/create-react-app/compare/main...vezwork:create-react-app:fix-cjs-loading for my similar issue as well. Will this fix be merged soon. Thanks.

I got this fixed after uninstalling npm-force-resolutions and removing all preinstall related to that. And then

rm -rf node_modules
rm package-lock.json
npm install

I followed through with the earlier comment and the npm install worked fine as well. Still don't know what I was doing. But its cause I was moving folders around and really I was down the wrong rabbit hole. Turns out I just needed to install a few packages my team member did

I got this fixed after uninstalling npm-force-resolutions and removing all preinstall related to that. And then

rm -rf node_modules
rm package-lock.json
npm install

This is the only solution that's working for me now. It would be better if someone can point to a nicer solution. As currently whenever I add a new package, I have to repeat the above steps.

Same issue.

+1 same issue

This is very painful, every time you add a new dependency you have to rm -rf node_modules and install it again.
Any updates on this are very much appreciated 🙏

Until this gets fixed we can use a shell alias:
alias fix.ajv='rm -rf node_modules && rm package-lock.json && npm i && git restore package-lock.json'
[$]> fix.ajv && npm start


More of a question than a "issue" : managing version in pom.xml file

Trying to make a recommendation to our team on which plugin's to use for adopting gitflow in maven.
I must admit a bit new to maven, so apologize in advance if I am getting some concepts incorrect.
As I play around with this plugin I am trying to figure what the typical steps would be do a release.  In other words, I have branched development to a new release branch and am ready to build/deploy to nexus the artifact.  Other plugins have a create-release and finish-release step.
I wasn't sure in using this plugin, are you expected to just use the maven-release steps of prepare/perform? or am I missing something.

First off, I don't use the maven-release-plugin. I avoid it at all costs. Consider it a personal preference, but I have yet to find a workflow that works with that plugin using an SCM that isn't CVS or SVN.
My theory is that I shouldn't have to use maven commands to work with my SCM. My build tool and my version control should be separate concerns. That line gets blurred by this plugin, insomuch as the behavior of the build tool can be aware of and advised by the state of the SCM (git) repo. I'm working with.
I wrote up a two-part blog on this some time back:
https://www.e-gineering.com/2016/02/02/gitflow-maven-and-ci-done-right-part-1-teaching-maven-new-tricks/
https://www.e-gineering.com/2016/02/12/gitflow-maven-and-ci-done-right-part-2-bitbucket-server-jenkins-and-nexus-oss/
Basically, when I'm doing local development, I use my favorite Git front-end to create my branches, commit, etc.
When I get to the point you're mentioning, I do the version-bumping by hand. This process typically looks something like this:

Cut a release branch & update the pom.xml version (either by hand, or with the versions-maven-plugin)
git checkout -b release/x.y.z
mvn versions:set -DgenerateBackupPoms=false -DnewVersion=x.y.z
git commit -am "Version Bump for release."
git push -u origin release/x.y.z

At this point, the CI server would build off my release branch, and deploy to my nexus "test-releases" repository.

Bump the version on the development branch.
git checkout development
mvn versions:set -DgenerateBackupPoms=false -DnewVersion=x.y.0-SNAPSHOT
git commit -am "Version Bump for next dev version"
git push

At this point, the CI server would build off my development branch, and deploy to my nexus "snapshots" repository.
I have some shell scripts I use boil this down to one command for release / development branches, but I wanted to give you the full tour above, to see that I personally value not crossing the streams when it comes to having maven update / push state to my SCM. It's my build tool. It should stay that way. I use it to manage project versions, dependencies, and to produce / promote artifacts. I don't use maven as a tool for managing my development workflow. I use maven as a tool because of my development workflow.
I think there's a philosophical difference here.
Granted, you could use those other tools to handle creating branches, bumping versions, etc. This plugin isn't meant to handle that, nor should it interfere with plugins that do that. This plugin is meant to solve a different set of issues -- ones you run into when you're automating CI builds, doing deployments, and wanting to be able to track artifact provenance and not rebuild for every environment you're deploying to. I see it as a separate need / problem set from the other git plugins I've seen for Maven. Hope this helps!


[Addition]: Powerful Dijon Moth

Hotspot b58 Addresses
116kjh2XamgSShjV6aQkywK2ywweyV3x3Qd2UmcrfyGb2FJfLjh
Discord Handle
No response
Reason(s)
HotSpot RSSI signal way off for traveling over 40km. Also hotspot doesn't talk to other hotspots in it's asserted location of Grand Haven, Mi.

This was incorrectly Removed from the denylist. New issue opened here: https://github.com/helium/denylist/issues/2255#issue-1164631646


qMRI Colormap standardization

There's been a lot of efforts suggesting the use of different colormaps for specific qMRI parameters.
Specifically,  ISMRM qMRI Study Group suggests lipari for T1  and navia for T2, and their inverses for R1 and R2

https://cig-utrecht.org/blog/2023/11/27/colormap-relaxometry.html#:~:text=We recommend that the Lipari,used for T2 and T2*.
https://arxiv.org/abs/2407.03906

I've not been able to find any for B0 and B1, but I've always had a strong preference to use a Blue-White-Red scheme where blue is values below 0 for B0 and below 1 for B1, white is 0 and 1 respectively for both, and red for above those numbers. It makes it much easier to interpret the regions that are the nominal values (0 or 1), and blue/red is also easy to interpret via the cold/hot scheme. But, using the same for both B0 and B1 might also lead to confusion, but I'd prefer still some kind of (color 1)-white-(color 2) scheme for these style of images for the reasons above; setting a linear gradient scheme always it makes it so hard to figure out the "nominal" regions for B0 and B1 imo

re: B0/B1, it's a diverging gradient, here are some more:
https://s-ink.org/scientific-colour-maps

For T2/T1, these are the recommended ones: https://www.mathworks.com/matlabcentral/fileexchange/169291-colormap-for-mr-relaxometry


feat: create string select menu

I created the string select menu as similar as possible to discord and added it to the html demo and can be found from line 495
I also updated the index demo

Images example
https://media.discordapp.net/attachments/1065711795576242367/1267280048923082853/image.png?ex=66a83604&is=66a6e484&hm=0490914d7d4f8e655f6f07945ff064306fee531ae18cb16c193b0c5b18cfe96c&=&format=webp&quality=lossless
https://media.discordapp.net/attachments/1065711795576242367/1267280546556547072/image.png?ex=66a8367b&is=66a6e4fb&hm=57ccf8cac53fb12a662a0b33c62abeca96832425407ce217f2976bfe29d300d8&=&format=webp&quality=lossless
https://media.discordapp.net/attachments/1065711795576242367/1267280662121939024/image.png?ex=66a83696&is=66a6e516&hm=99b3123cdb51823f8a47c3b6127ee25188aaab730c81ed644786e06258ea4e51&=&format=webp&quality=lossless


Updated to se2 latest version

Getting this error after I deploy, fund the stream, add a hacker, withdraw as that hacker, then refresh the page.  Maybe it is something with how the withdraws are displayed?

Fixed it !

You sure did, nice work!